rabbit-slide-komainu8-postgresql-conference-japan-2020 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0fdea6946a971bc9417459ea1bf8303ac9629f8cb828489c87da9e5dbd725b66
4
+ data.tar.gz: 61eb078fc4f421a82ecaa7a22ed3d827c6e6d16f09b7503299ff0f2179303b4c
5
+ SHA512:
6
+ metadata.gz: d132aa452b386d8f43af89a23a561e1c8b32e9d6c4c0d316a4e096558fc65c5854b828849c90994641948915efc8f61b18a4bfb536aa8cb65307d25b0a4e04c6
7
+ data.tar.gz: 011e2a026903333a83f8816f46703e53230da40ef949d7557add1fc7bd145b687c46e4e51fc647cb38ce5f9381864ddb394458bee5e57eda6f2444c5eac49e02
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ how-to-manage-pgroonga-wal.rab
@@ -0,0 +1,48 @@
1
+ = PGroonga運用技法 ~PGroongaのWALを放置していませんか?~
2
+
3
+ PostgreSQL で使用できる全文検索の拡張に PGroonga という高速で高性能な拡張があります。
4
+ PGroongaはインストールも難しくなく、インデックスの設定もそれほど複雑ではないので、高速な全文検索を容易に利用できますが、
5
+ レプリケーションを使用した運用においては注意が必要な点があります。
6
+
7
+ 本発表では、後のトラブルを防ぐために知っておいたほうが良いことや、トラブルを防止するためのメンテナンス方法について紹介します。
8
+
9
+ == ライセンス
10
+
11
+ === スライド
12
+
13
+ CC BY-SA 4.0
14
+
15
+ 原著作者:堀本泰弘
16
+
17
+ === Groonga・PGroonga・Mroonga・Rroongaのロゴ
18
+
19
+ CC BY 3.0
20
+
21
+ 原著作者:Groongaプロジェクト
22
+
23
+ === クリアコードのロゴ
24
+
25
+ CC BY-SA 4.0
26
+
27
+ 原著作者:株式会社クリアコード
28
+
29
+ == 作者向け
30
+
31
+ === 表示
32
+
33
+ rake
34
+
35
+ === 公開
36
+
37
+ rake publish
38
+
39
+ == 閲覧者向け
40
+
41
+ === インストール
42
+
43
+ gem install rabbit-slide--postgresql-conference-japan-2020
44
+
45
+ === 表示
46
+
47
+ rabbit rabbit-slide--postgresql-conference-japan-2020.gem
48
+
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ # spec.files += Dir.glob("doc/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+ # spec.add_runtime_dependency("rabbit-theme-YOUR-THEME")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: postgresql-conference-japan-2020
3
+ base_name: how-to-manage-pgroonga-wal
4
+ tags:
5
+ - rabbit
6
+ - postgresql
7
+ - pgcon20j
8
+ - fts
9
+ - search
10
+ - pgroonga
11
+ - groonga
12
+ presentation_date: 2020-11-13
13
+ presentation_start_time: 2020-11-13T16:10:00+09:00
14
+ presentation_end_time: 2020-11-13T17:00:00+09:00
15
+ version: 1.0.1
16
+ licenses:
17
+ - CC-BY-SA-4.0
18
+ slideshare_id:
19
+ speaker_deck_id:
20
+ ustream_id:
21
+ vimeo_id:
22
+ youtube_id:
23
+ author:
24
+ markup_language: :rd
25
+ name: Horimoto Yasuhiro
26
+ email: horimoto@clear-code.comment
27
+ rubygems_user: komainu8
28
+ slideshare_user:
29
+ speaker_deck_user:
@@ -0,0 +1,331 @@
1
+ = PGroonga運用技法
2
+
3
+ : subtitle
4
+ ~PGroongaのWALを\n放置していませんか?~
5
+ : author
6
+ 堀本泰弘
7
+ : institution
8
+ クリアコード
9
+ : content-source
10
+ PostgreSQL Conference Japan 2020
11
+ : date
12
+ 2020-11-13
13
+ : allotted-time
14
+ 45m
15
+ : start-time
16
+ 2020-11-13T16:10:00+09:00
17
+ : end-time
18
+ 2020-11-13T16:55:00+09:00
19
+ : theme
20
+ .
21
+
22
+ = 自己紹介
23
+
24
+ # image
25
+ # src = images/self-introduction.png
26
+ # relative_height = 107
27
+
28
+ = PGroongaの紹介
29
+
30
+ PGroongaとは?
31
+
32
+ = PGroongaの紹介
33
+
34
+ PostgreSQL経由で\n((*高速な全文検索*))
35
+
36
+ = PGroongaの特徴
37
+
38
+ (1) ((*簡単*))に使える
39
+ (2) ((*速い*))
40
+
41
+ = PGroongaの使い方
42
+
43
+ # coderay sql
44
+
45
+ CREATE TABLE memos (
46
+ id integer,
47
+ content text
48
+ );
49
+
50
+ CREATE INDEX pgroonga_content_index
51
+ ON memos
52
+ USING pgroonga (content);
53
+
54
+ = PGroongaの使い方
55
+
56
+ 準備完了
57
+
58
+ = PGroongaの使い方
59
+
60
+ データを入れて\n検索してみよう!
61
+
62
+ = PGroongaの使い方
63
+
64
+ # coderay sql
65
+
66
+ INSERT INTO memos
67
+ VALUES (1,
68
+ 'PostgreSQLはリレーショナル・データベース管理システムです。');
69
+
70
+ INSERT INTO memos
71
+ VALUES (2,
72
+ 'Groongaは日本語対応の高速な全文検索エンジンです。');
73
+
74
+ = PGroongaの使い方
75
+
76
+ # coderay sql
77
+
78
+ SELECT *
79
+ FROM memos
80
+ WHERE content &@ '全文検索';
81
+
82
+ -- id | content
83
+ -- ----+---------------------------------------------------
84
+ -- 2 | Groongaは日本語対応の高速な全文検索エンジンです。
85
+ -- (1 row)
86
+
87
+ = PGroongaの使い方
88
+
89
+ ((*簡単*))ですね!
90
+
91
+ = PGroongaの速度
92
+
93
+ 追加されたデータは((*即時*))検索可能
94
+
95
+ = PGroongaの速度
96
+
97
+ つまり
98
+
99
+ = PGroongaの速度
100
+
101
+ 検索可能になるのが((*速い*))
102
+
103
+ = PGroongaの速度
104
+
105
+ 更新中も検索性能が((*落ちない*))
106
+
107
+ = PGroongaの速度
108
+
109
+ ヒット数が多くても検索性能が\n((*落ちない*))
110
+
111
+ = PGroongaの速度
112
+
113
+ つまり
114
+
115
+ = PGroongaの速度
116
+
117
+ ((*安定して*))速い
118
+
119
+ = PGroongaの速度
120
+
121
+ もちろん\n検索も((*速い*))
122
+
123
+ = PGroongaの速度
124
+
125
+ * ベンチマーク
126
+ * ((<URL:https://pgroonga.github.io/ja/reference/pgroonga-versus-pg-bigm.html>))
127
+
128
+ = PGroongaの特徴
129
+
130
+ ((*継続*))してメンテナンスされている
131
+
132
+ = PGroongaの特徴
133
+
134
+ PostgreSQL13\nにも対応済み!
135
+
136
+ = 参考情報
137
+
138
+ * PGroongaについてのより詳しい解説
139
+ * ((<URL:https://www.slideshare.net/kou/postgresql-conference-japan-2017>))
140
+
141
+ * 公式ドキュメント
142
+ * ((<URL:https://pgroonga.github.io/ja/>))
143
+
144
+ = 今日のテーマ
145
+
146
+ PGroongaの\nWALを\n((*うまく*))使おう
147
+
148
+ = PGroongaのWAL
149
+
150
+ PGroongaのWALは\n
151
+ 復旧時に使用する
152
+
153
+ = PGroongaのWAL
154
+
155
+ なぜWALのを使うのか?
156
+
157
+ = PGroongaのWAL
158
+
159
+ PGroongaは\n
160
+ インデックス\n
161
+ サイズが((*大きい*))
162
+
163
+ = PGroongaのWAL
164
+
165
+ WALがない場合\n
166
+ REINDEXで復旧
167
+
168
+ = PGroongaのWAL
169
+
170
+ データ量が多いと\n
171
+ REINDEXに時間かかる
172
+
173
+ = PGroongaのWAL
174
+
175
+ 復旧が長引く
176
+
177
+ = PGroongaのWAL
178
+
179
+ WALを使って\n
180
+ 復旧時間を短縮
181
+
182
+ = PGroongaのWAL
183
+
184
+ 使うだけなら以下を postgresql.conf に書くだけ
185
+
186
+ pgroonga.enable_wal = on
187
+
188
+ = PGroongaのレプリケーション
189
+
190
+ ただ使っている\nだけだと、\n((*困る*))ことがある
191
+
192
+ = PGroongaのWALの注意点
193
+
194
+ 例えば
195
+
196
+ * PGroongaのインデックスのファイルサイズが増加し続ける
197
+ * 定期的にVACUUMしているのに...
198
+
199
+ = PGroongaのレプリケーション
200
+
201
+ # image
202
+ # src = images/increase-file-size.png
203
+ # relative_width = 90
204
+
205
+ = ファイルサイズ増加の原因
206
+
207
+ 原因は\n((*PGroongaのWAL*))
208
+
209
+ = ファイルサイズ増加の原因
210
+
211
+ PGroongaのWALは削除しないと\n((*増え続ける*))
212
+
213
+ = ファイルサイズ増加の原因
214
+
215
+ (1) PGroongaの((*WALが有効*))
216
+ (2) ((*何もせず*))に((*ずっと*))運用
217
+
218
+ = ファイルサイズ増加の原因
219
+
220
+ # image
221
+ # src = images/index-increase.png
222
+ # relative_width = 100
223
+
224
+ = PGroongaのWALの運用方法
225
+
226
+ ファイルサイズの増加を防ぐには?
227
+
228
+ = PGroongaのWALの運用方法
229
+
230
+ ((*定期的な*))\nメンテナンス
231
+
232
+ = PGroongaのWALの運用方法
233
+
234
+ (1) REINDEXによるインデックス再構築
235
+ (2) WALを定期的に削除
236
+
237
+ = REINDEX
238
+
239
+ * REINDEXすると、インデックスを0から再生成
240
+ * 古いインデックスは、VACUUM時に削除
241
+ * このときにWALも削除される
242
+
243
+ = REINDEX
244
+
245
+ REINDEXは\n時間がかかる
246
+
247
+ = WALの定期的な削除
248
+
249
+ pgroonga_wal_truncate
250
+
251
+ = WALの定期的な削除
252
+
253
+ 以下のように使う
254
+
255
+ # coderay sql
256
+
257
+ SELECT pgroonga_wal_truncate('インデックス名');
258
+
259
+ = WALの定期的な削除
260
+
261
+ 未適用のWALを削除しないように注意
262
+
263
+ = PGroongaのWALの運用方法
264
+
265
+ 削除前に確実なWALの適用が\n必要
266
+
267
+ = PGroongaのWALの運用方法
268
+
269
+ pgroonga_wal_apply
270
+
271
+ = PGroongaのWALの運用方法
272
+
273
+ 以下のように使う
274
+
275
+ # coderay sql
276
+
277
+ SELECT pgroonga_wal_apply('インデックス名');
278
+
279
+ = メンテナンス方法の選択
280
+
281
+ (1) REINDEXによるインデックス再構築
282
+ (2) WALを定期的に削除
283
+
284
+ のどちらが良いのか?
285
+
286
+ = メンテナンス方法の選択
287
+
288
+ * REINDEX
289
+ * 時間がかかる
290
+ * REINDEX中は検索、更新がブロック
291
+ * 実行は手間ではない
292
+
293
+ = メンテナンス方法の選択
294
+
295
+ * WALの定期的な削除
296
+ * REINDEXと比較して時間はかからない
297
+ * テーブルのロックが必要
298
+ * (レプリケーションしている場合は)\nすべての待機系でWALの適用が必要
299
+
300
+ = メンテナンス方法の選択
301
+
302
+ 復旧にかかる時間をどれくらい許容できるか?
303
+
304
+ = メンテナンス方法の選択
305
+
306
+ 例えば、以下のようなケースなら\n
307
+ REINDEが手間がかからなくて良い
308
+
309
+ (1) 夜間はサービス提供しない
310
+ (2) REINDEX実行が夜間で完了
311
+
312
+ = メンテナンス方法の選択
313
+
314
+ 例えば、以下のようなケースなら\n
315
+ WALの削除を選択
316
+
317
+ (1) 長時間のサービス停止が難しい
318
+
319
+ = 最後に
320
+
321
+ * PGroongaについての疑問等は、GitHub、Gitterでも受付
322
+ * ドキュメントも充実
323
+ * ((<"https://pgroonga.github.io/ja/"|URL:https://pgroonga.github.io/ja/>))
324
+
325
+ = 最後に
326
+
327
+ より突っ込んだお話がしたい場合は↓↓\n
328
+ 問い合わせ先:
329
+
330
+ (('tag:x-small'))
331
+ ((<"https://www.clear-code.com/contact/"|URL:https://www.clear-code.com/contact/>))
@@ -0,0 +1,533 @@
1
+ = PGroonga運用技法
2
+
3
+ : subtitle
4
+ ~PGroongaのWALを\n放置していませんか?~
5
+ : author
6
+ 堀本泰弘
7
+ : institution
8
+ クリアコード
9
+ : content-source
10
+ PostgreSQL Conference Japan 2020
11
+ : date
12
+ 2020-11-13
13
+ : allotted-time
14
+ 45m
15
+ : start-time
16
+ 2020-11-13T16:10:00+09:00
17
+ : end-time
18
+ 2020-11-13T16:55:00+09:00
19
+ : theme
20
+ .
21
+
22
+ = 自己紹介
23
+
24
+ # image
25
+ # src = images/self-introduction.png
26
+ # relative_height = 107
27
+
28
+ = 今日のテーマ
29
+
30
+ PGroongaの\nWALを\n((*うまく*))使おう
31
+
32
+ = PGroongaの紹介
33
+
34
+ の前に...
35
+
36
+ = PGroongaの紹介
37
+
38
+ (知らない人向け)\n
39
+ PGroonga紹介
40
+
41
+ = PGroongaの紹介
42
+
43
+ PGroongaとは?
44
+
45
+ = PGroongaの紹介
46
+
47
+ PostgreSQL経由で\n((*高速な全文検索*))
48
+
49
+ = PGroongaの特徴
50
+
51
+ (1) ((*簡単*))に使える
52
+ (2) ((*速い*))
53
+ (3) ((*全言語*))対応
54
+
55
+ = PGroongaの使い方
56
+
57
+ ((*簡単*))に使える
58
+
59
+ = PGroongaの使い方
60
+
61
+ # image
62
+ # src = images/pgroonga-sql.png
63
+ # relative_height = 107
64
+
65
+ = PGroongaの使い方
66
+
67
+ 実際に全文検索\nしてみましょう
68
+
69
+ = 実行例:テーブル定義
70
+
71
+ # coderay sql
72
+
73
+ CREATE TABLE entries (
74
+ title text,
75
+ content text
76
+ );
77
+
78
+ = 実行例:\nインデックス定義
79
+
80
+ # coderay sql
81
+
82
+ -- 全文検索用インデックス
83
+ CREATE INDEX entries_full_text_search
84
+ ON entries
85
+ --「USING pgroonga」=「PGroongaを使う」
86
+ USING pgroonga (title, content);
87
+
88
+ = 実行例:データ挿入
89
+
90
+ # coderay sql
91
+
92
+ -- 普通に挿入するだけでよい
93
+ INSERT INTO entries
94
+ VALUES ('PGroongaで高速全文検索!',
95
+ '高速に全文検索したいですね!');
96
+
97
+ = 実行例:全文検索
98
+
99
+ # coderay sql
100
+
101
+ SELECT title FROM entries
102
+ WHERE
103
+ -- &@~で全文検索
104
+ -- 「検索」と「高速」をAND検索
105
+ title &@~ '検索 高速' OR
106
+ content &@~ '検索 高速';
107
+
108
+ = 実行例:LIKE
109
+
110
+ # coderay sql
111
+
112
+ SELECT title FROM entries
113
+ WHERE
114
+ -- LIKEでもインデックスが効く
115
+ --=アプリを書き換えずに高速化可能
116
+ -- ただし&@~より性能が落ちる
117
+ title LIKE '%検索%' OR
118
+ content LIKE '%検索%';
119
+
120
+ = PGroongaの使い方
121
+
122
+ ((*簡単*))ですね!
123
+
124
+ = PGroongaの速度
125
+
126
+ ((*速い*))
127
+
128
+ = PGroongaの速度
129
+
130
+ 追加されたデータは((*即時*))検索可能
131
+
132
+ = PGroongaの速度
133
+
134
+ つまり
135
+
136
+ = PGroongaの速度
137
+
138
+ 検索可能になるのが((*速い*))
139
+
140
+ = PGroongaの速度
141
+
142
+ 更新中も検索性能が((*落ちない*))
143
+
144
+ = PGroongaの速度
145
+
146
+ ヒット数が多くても検索性能が\n((*落ちない*))
147
+
148
+ = PGroongaの速度
149
+
150
+ PGroongaは\n
151
+ ((*安定して*))速い
152
+
153
+ = PGroongaの速度
154
+
155
+ もちろん\n検索も((*速い*))
156
+
157
+ = PGroongaの速度
158
+
159
+ * ベンチマーク
160
+ * ((<URL:https://pgroonga.github.io/ja/reference/pgroonga-versus-pg-bigm.html>))
161
+
162
+ = PGroongaの特徴
163
+
164
+ ((*全言語*))対応
165
+
166
+ = PGroongaの特徴
167
+
168
+ さらに
169
+
170
+ = PGroongaの特徴
171
+
172
+ ((*継続*))してメンテナンスされている
173
+
174
+ = PGroongaの特徴
175
+
176
+ PostgreSQL13\nにも対応!
177
+
178
+ = PGroongaの紹介
179
+
180
+ 以上、PGroongaの紹介でした
181
+
182
+ = 今日のテーマ
183
+
184
+ 本題に入ります
185
+
186
+ = 今日のテーマ
187
+
188
+ PGroongaの\nWALを\n((*うまく*))使おう
189
+
190
+ = WALとは?
191
+
192
+ Write Ahead Log\n
193
+
194
+ = WALとは?
195
+
196
+ # image
197
+ # src = images/WAL1.png
198
+ # relative_width = 70
199
+
200
+ = WALとは?
201
+
202
+ # image
203
+ # src = images/WAL2.png
204
+ # relative_width = 90
205
+
206
+ = WALとは?
207
+
208
+ # image
209
+ # src = images/WAL3.png
210
+ # relative_width = 90
211
+
212
+ = WALの使い方
213
+
214
+ どのように\n使うのか?
215
+
216
+ = WALの使い方
217
+
218
+ ポイントイン\nタイムリカバリー
219
+
220
+ = WALの使い方
221
+
222
+ # image
223
+ # src = images/pitr.png
224
+ # relative_width = 90
225
+
226
+ = WALの使い方
227
+
228
+ ストリーミング\nレプリケーション
229
+
230
+ = WALの使い方
231
+
232
+ # image
233
+ # src = images/streaming-replication.png
234
+ # relative_width = 90
235
+
236
+ = PGroongaのWAL
237
+
238
+ PGroongaも\nWALが使える
239
+
240
+ = PGroongaのWAL
241
+
242
+ WALから\nインデックスの\n復元ができる
243
+
244
+ = PGroongaのWAL
245
+
246
+ メリット
247
+
248
+ = PGroongaのWAL
249
+
250
+ インデックスの\n復旧時間を短縮
251
+
252
+ = PGroongaのWAL
253
+
254
+ # image
255
+ # src = images/pgroonga-wal1.png
256
+ # relative_width = 90
257
+
258
+ = PGroongaのWAL
259
+
260
+ # image
261
+ # src = images/without-pgroonga-wal.png
262
+ # relative_width = 90
263
+
264
+ = PGroongaのWAL
265
+
266
+ REINDEX
267
+
268
+ = PGroongaのWAL
269
+
270
+ REINDEXは\n時間がかかる
271
+
272
+ = PGroongaのWAL
273
+
274
+ どうやって\n使うの?
275
+
276
+ = PGroongaのWAL
277
+
278
+ 簡単です\n
279
+ ((*ただ使うだけ*))\nなら
280
+
281
+ = PGroongaのWAL
282
+
283
+ # coderay sql
284
+
285
+ pgroonga.enable_wal = on
286
+
287
+ = PGroongaのWAL
288
+
289
+ * PostgreSQLのWALと同じように復旧に使える
290
+ * ポイントインタイムリカバリー
291
+ * ストリーミングレプリケーション
292
+
293
+ = PGroongaのWAL
294
+
295
+ しかし
296
+
297
+ = PGroongaのWAL
298
+
299
+ ただ使っている\nだけだと、\n((*困る*))ことがある
300
+
301
+ = PGroongaのWALの注意点
302
+
303
+ (1) WALが適用できないケース\nがある
304
+ (2) 定期的なメンテナンスが必要
305
+
306
+ = PGroongaのWALの注意点
307
+
308
+ WALが適用\nできないケース
309
+
310
+ = PGroongaのWALの注意点
311
+
312
+ * クラッシュセーフ((*ではない*))
313
+ * インデックス更新中のクラッシュで\nインデックスが破損する(ことがある)
314
+
315
+ = PGroongaのWALの注意点
316
+
317
+ * インデックス破損の状態では、WALを適用できない(ことがある)
318
+ * この場合はREINDEXを使って復元
319
+
320
+ = PGroongaのWALの注意点
321
+
322
+ 定期的な\nメンテナンス
323
+
324
+ = PGroongaのWALの注意点
325
+
326
+ # image
327
+ # src = images/increase-file-size.png
328
+ # relative_width = 90
329
+
330
+ = PGroongaのWALの注意点
331
+
332
+ # image
333
+ # src = images/vaccum.png
334
+ # relative_width = 90
335
+
336
+ = PGroongaのWALの注意点
337
+
338
+ なぜ?
339
+
340
+ = ファイルサイズ増加の原因
341
+
342
+ 原因はPGroongaのWAL
343
+
344
+ = ファイルサイズ増加の原因
345
+
346
+ PGroongaのWALは削除しないと\n((*増え続ける*))
347
+
348
+ = ファイルサイズ増加の原因
349
+
350
+ つまり
351
+
352
+ = ファイルサイズ増加の原因
353
+
354
+ (1) PGroongaのWALが有効
355
+ (2) 何もせずにずっと運用している
356
+
357
+ = ファイルサイズ増加の原因
358
+
359
+ # image
360
+ # src = images/index-increase.png
361
+ # relative_width = 100
362
+
363
+ = PGroongaのWALの運用方法
364
+
365
+ なので
366
+
367
+ = PGroongaのWALの運用方法
368
+
369
+ ((*定期的な\nメンテナンス*))\nが必要
370
+
371
+ = PGroongaのWALの運用方法
372
+
373
+ ファイルサイズの増加を防ぐには?
374
+
375
+ = PGroongaのWALの運用方法
376
+
377
+ (1) REINDEXによるインデックス再構築
378
+ (2) WALを定期的に削除
379
+
380
+ = REINDEX
381
+
382
+ * REINDEXすると、インデックスを0から再生成
383
+ * 古いインデックスは、VACUUM時に削除
384
+ * このときにWALも削除される
385
+
386
+ = REINDEX
387
+
388
+ * 😞 時間がかかる
389
+ * 😞 REINDEX中は検索、更新がブロックされる
390
+ * 😃 手間は少ない
391
+
392
+ = WALの定期的な削除
393
+
394
+ * PGroongaのWALはSQLで削除\nできる
395
+
396
+ = WALの定期的な削除
397
+
398
+ # coderay sql
399
+
400
+ SELECT pgroonga_wal_truncate('インデックス名');
401
+
402
+ = WALの定期的な削除
403
+
404
+ * 😞 手間がかかる
405
+ * テーブルのロックが必要
406
+ * データの更新ができない
407
+ * 明示的なWALの適用が必要
408
+ * 😃 REINDEXより短時間
409
+
410
+ = WALの定期的な削除
411
+
412
+ * 明示的なWALの適用が必要
413
+ * 単純にWAL削除すると、未適用のWALまで削除してしまう可能性がある
414
+
415
+ = PGroongaのWALの運用方法
416
+
417
+ なので
418
+
419
+ = PGroongaのWALの運用方法
420
+
421
+ 明示的にWALを適用する
422
+
423
+ = PGroongaのWALの運用方法
424
+
425
+ # coderay sql
426
+
427
+ SELECT pgroonga_wal_apply('インデックス名');
428
+
429
+ = PGroongaのWALの運用方法
430
+
431
+ ストリーミング\nレプリケーション\n構成の場合
432
+
433
+ = PGroongaのWALの運用方法
434
+
435
+ # image
436
+ # src = images/pgroonga-wal-apply.png
437
+ # relative_width = 90
438
+
439
+ = PGroongaのWALの運用方法
440
+
441
+ ((*全て*))の\nセカンダリーDBでWALを適用
442
+
443
+ = PGroongaのWALの運用方法
444
+
445
+ (1) プライマリーDBでテーブルをロック
446
+ (2) 全てのセカンダリーDBでWALを適用
447
+ (3) プライマリーDBでWALを削除
448
+ (4) テーブルのロックを解除
449
+
450
+ = メンテナンス方法の選択
451
+
452
+ (1) REINDEXによるインデックス再構築
453
+ (2) WALを定期的に削除
454
+
455
+ のどちらが良いのか?
456
+
457
+ = メンテナンス方法の選択
458
+
459
+ * REINDEX
460
+
461
+ * 😞 時間がかかる
462
+ * 😞 REINDEX中は検索、更新がブロックされる
463
+ * ブロックせずにREINDEXする方法もある
464
+ * 😃 手間は少ない
465
+
466
+ = メンテナンス方法の選択
467
+
468
+ * REINDEX CONCURRENTLY
469
+ * PostgreSQL 12 以降で使える
470
+
471
+ = メンテナンス方法の選択
472
+
473
+ * 😞 インデックスの構築にかなり時間がかかる
474
+ * 😞 インデックス構築中は\nパフォーマンスが低下する
475
+
476
+ = メンテナンス方法の選択
477
+
478
+ * WALの定期的な削除
479
+ * 😞 手間がかかる
480
+ * テーブルのロックが必要
481
+ * データの更新ができない
482
+ * 明示的なWALの適用が必要
483
+ * 😃 REINDEXより短時間
484
+
485
+ = メンテナンス方法の選択
486
+
487
+ * REINDEX向きのケース
488
+ * 長時間のサービス停止が許容できる
489
+ * 例えば夜間に実行するなど
490
+ * テーブルが小さい
491
+
492
+ = メンテナンス方法の選択
493
+
494
+ * WALの削除向きのケース
495
+ * 長時間のサービス停止が難しい
496
+ * テーブルが大きい
497
+
498
+ = PostgreSQLのWAL
499
+
500
+ * PostgreSQLのWALはこのような作業は必要ない。
501
+
502
+ = PostgreSQLのWAL
503
+
504
+ * PostgreSQLはWALの最大サイズを制御できる
505
+ * max_wal_size
506
+ * wal_keep_segments
507
+
508
+ = PostgreSQLのWAL
509
+
510
+ * PGroongaには、PostgreSQLと同程度の機能はまだない。
511
+
512
+ = PostgreSQLのWAL
513
+
514
+ * 今後、改善予定
515
+ * PostgreSQLと同じような仕組みを追加
516
+
517
+ = まとめ
518
+
519
+ PGroongaの\nWALを\n((*うまく*))使うことができました!!
520
+
521
+ = 最後に
522
+
523
+ * PGroongaについての疑問等は、GitHub、Gitterにて
524
+ * ドキュメントも充実
525
+ * ((<"https://pgroonga.github.io/ja/"|URL:https://pgroonga.github.io/ja/>))
526
+
527
+ = 最後に
528
+
529
+ より突っ込んだお話がしたい場合は↓↓\n
530
+ 問い合わせ先:
531
+
532
+ (('tag:x-small'))
533
+ ((<"https://www.clear-code.com/contact/"|URL:https://www.clear-code.com/contact/>))
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,5 @@
1
+ @title_slide_title_font_size = @large_font_size
2
+
3
+ @groonga_product = "pgroonga"
4
+
5
+ include_theme("groonga")
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-komainu8-postgresql-conference-japan-2020
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Horimoto Yasuhiro
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-11-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rabbit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.2
27
+ description: |2-
28
+ PostgreSQL で使用できる全文検索の拡張に PGroonga という高速で高性能な拡張があります。
29
+ PGroongaはインストールも難しくなく、インデックスの設定もそれほど複雑ではないので、高速な全文検索を容易に利用できますが、
30
+ レプリケーションを使用した運用においては注意が必要な点があります。
31
+
32
+ 本発表では、後のトラブルを防ぐために知っておいたほうが良いことや、トラブルを防止するためのメンテナンス方法について紹介します。
33
+ email:
34
+ - horimoto@clear-code.comment
35
+ executables: []
36
+ extensions: []
37
+ extra_rdoc_files: []
38
+ files:
39
+ - ".rabbit"
40
+ - PGroonga運用技法 - ~PGroongaのWALを放置していませんか?~.pdf
41
+ - README.rd
42
+ - Rakefile
43
+ - config.yaml
44
+ - how-to-manage-pgroonga-wal-for-material.pdf
45
+ - how-to-manage-pgroonga-wal-for-material.rab
46
+ - how-to-manage-pgroonga-wal.rab
47
+ - images/WAL1.png
48
+ - images/WAL2.png
49
+ - images/WAL3.png
50
+ - images/broken-index.png
51
+ - images/crush-recovery.png
52
+ - images/increase-file-size.png
53
+ - images/index-increase.png
54
+ - images/pgroonga-sql.png
55
+ - images/pgroonga-wal-apply.png
56
+ - images/pgroonga-wal1.png
57
+ - images/pitr.png
58
+ - images/self-introduction.png
59
+ - images/streaming-replication.png
60
+ - images/vaccum.png
61
+ - images/without-pgroonga-wal.png
62
+ - pdf/postgresql-conference-japan-2020-how-to-manage-pgroonga-wal.pdf
63
+ - theme.rb
64
+ homepage: https://slide.rabbit-shocker.org/authors/komainu8/postgresql-conference-japan-2020/
65
+ licenses:
66
+ - CC-BY-SA-4.0
67
+ metadata: {}
68
+ post_install_message:
69
+ rdoc_options: []
70
+ require_paths:
71
+ - lib
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ requirements: []
83
+ rubygems_version: 3.1.4
84
+ signing_key:
85
+ specification_version: 4
86
+ summary: PGroonga運用技法 ~PGroongaのWALを放置していませんか?~
87
+ test_files: []