SlideShare a Scribd company logo
1 of 20
第23回 PostgreSQLアンカンファレンス@オンライン
© 2021 NTT DATA Corporation
pg_bigmで全文検索するときに気を付けたい5つのポイント
2021年5月11日
株式会社NTTデータ 藤井 雅雄
© 2021 NTT DATA Corporation 2
2
© 2021 NTT DATA Corporation
自己紹介
藤井 雅雄
Database Technical Lead @ NTTデータ
データベース研究開発
PostgreSQL 技術支援
PostgreSQLコミッタ
レプリケーション
WAL圧縮
バックアップ進捗確認
pg_bigm(全文検索モジュール) コミッタ
@fujii_masao
© 2021 NTT DATA Corporation 3
3
© 2021 NTT DATA Corporation
本講演について
講演資料は、NTTデータのSlideShareアカウント上で公開予定です。
https://www.slideshare.net/nttdata-tech
講演資料に掲載の検証結果は、ノートPC上の簡易計測で取得したものです。
環境や条件などによっては、異なる検証結果になる可能性があるためご了承ください。
© 2021 NTT DATA Corporation 4
pg_bigmとは
PostgreSQL上で全文検索機能を提供するOSSモジュール
「OSS」を含むタイトルの書籍情報を検索したい!
SELECT * FROM book WHERE title LIKE ‘%OSS%’
シーケンシャル
スキャン
インデックス
スキャン
pg_bigm導入で高速に! 
通常、インデックス使えず低速
© 2021 NTT DATA Corporation 5
pg_bigmとは
開発元
pg_bigm Development Group
(もともとはNTTデータが開発)
ライセンス The PostgreSQL License
最新バージョン 1.2-20200228 (2020/2/28リリース)
動作確認環境
OS: Linux, Mac OS X
PostgreSQL: 9.1~13
公開先
(公式) https://pgbigm.osdn.jp
(ミラー) https://github.com/pgbigm/pg_bigm
v14開発版(2021/4/28時点)でも
動作を確認済!!
© 2021 NTT DATA Corporation 6
パブリッククラウドで広がるpg_bigmの採用
2020-08: ApsaraDB RDS for PostgreSQL / AliPG @ Alibaba Cloud
https://www.alibabacloud.com/help/ja/doc-detail/126002.htm
https://help.aliyun.com/document_detail/182266.html
2020-09: TencentDB for PostgreSQL @ Tencent Cloud
https://intl.cloud.tencent.com/jp/document/product/409/38832
https://intl.cloud.tencent.com/jp/document/product/409/7567
2021-04: Amazon RDS for PostgreSQL @ AWS
https://aws.amazon.com/jp/about-aws/whats-new/2021/04/amazon-rds-for-postgresql-
supports-pg-bigm-extension-for-faster-full-text-search/
© 2021 NTT DATA Corporation 7
pg_bigmの参考情報
pg_bigmを用いた全文検索のしくみ(前編)
https://www.slideshare.net/hadoopxnttdata/pgbigm-39739489
pg_bigmを用いた全文検索のしくみ(後編)
https://www.slideshare.net/hadoopxnttdata/pgbigm-39739507
PostgreSQLでpg_bigmを使って日本語全文検索
https://www.slideshare.net/hadoopxnttdata/postgresqlpgbigm-mysqlpostgresql
pg_bigmを触り始めた人に伝えたいこと
https://www.slideshare.net/masahikosawada98/pgbigm-66639454
pg_bigmと類似度検索
https://www.slideshare.net/masahikosawada98/pgbigm-66639588
© 2021 NTT DATA Corporation 8
pg_bigmで気を付けたい5つのポイント
© 2021 NTT DATA Corporation 9
1. 完全一致検索や前方一致検索にはB-treeの利用も検討すべき
日本版Wikipediaタイトル一覧データ約374万件から、
完全一致検索および前方一致検索したときの実行時間の比較
完全一致検索 前方一致検索
インデックスなし
(Seq Scan)
265.72 ms 283.37 ms
インデックスなし
(Parallel Seq Scan)
117.92 ms 117.08 ms
pg_bigmインデックス
(Bitmap Index Scan)
2.90 ms 2.00 ms
B-treeインデックス
(Index Scan)
0.59 ms 0.58 ms
B-treeインデックス
(Index Only Scan)
0.34 ms 0.44 ms
完全一致検索
下記SQLで検索結果3件
SELECT * FROM jawiki
WHERE title = 'データベース';
※pg_bigmでは=の代わりにLIKEを使用
前方一致検索
下記SQLで検索結果50件
SELECT * FROM jawiki
WHERE title LIKE 'データベース%';
pg_bigmもそこそこ高速だが、
B-treeのほうが高性能
© 2021 NTT DATA Corporation 10
2. Recheck処理のオーバーヘッドが発生する
東京都
東京と京都
東京都
Recheck処理
検索文字列が3文字以上の場合、Recheck処理により
pg_bigmインデックスから絞り込んだ検索結果候補が妥当か検査しなければならない
'%東京都%'で検索
検索結果候補の数が多いほど、データサイズが大きいほど、
Recheck処理のオーバーヘッドは大きくなる
「東京」と「京都」でインデックス
から検索結果候補を絞り込み
検索結果候補のデータをすべてチェックして、
検索条件を満たすものを抽出する
© 2021 NTT DATA Corporation 11
2. Recheck処理のオーバーヘッドが発生する
Recheck
あり
Bitmap Heap Scan on jawiki (actual time=0.979..2.636 rows=3678 loops=1)
Recheck Cond: (title ~~ '%東京都%'::text)
Rows Removed by Index Recheck: 10
Heap Blocks: exact=822
-> Bitmap Index Scan on jawiki_bigm (actual time=0.863..0.864 rows=3688 loops=1)
Index Cond: (title ~~ '%東京都%'::text)
Planning Time: 0.065 ms
Execution Time: 2.931 ms
Recheck
なし(*1)
Bitmap Heap Scan on jawiki (actual time=1.250..2.499 rows=3688 loops=1)
Recheck Cond: (title ~~ '%東京都%'::text)
Heap Blocks: exact=822
-> Bitmap Index Scan on jawiki_bigm (actual time=1.129..1.130 rows=3688 loops=1)
Index Cond: (title ~~ '%東京都%'::text)
Planning Time: 0.086 ms
Execution Time: 2.793 ms
日本版Wikipediaタイトル一覧データ約374万件から全文検索したときの実行プラン
EXPLAIN ANALYZE SELECT * FROM jawiki WHERE title LIKE '%東京都%';
(*1) pg_bigm.enable_recheck=off
検索結果候補3688件から、
Recheckにより10件を除去
検索対象文字列が平均22Bと小さいため、
Recheck処理のオーバーヘッドは小さい
© 2021 NTT DATA Corporation 12
2. Recheck処理のオーバーヘッドが発生する
Recheck
あり
Bitmap Heap Scan on pgdocs (actual time=0.473..44.468 rows=352 loops=1)
Recheck Cond: (contents ~~ '%PostgreSQL%'::text)
Heap Blocks: exact=14
-> Bitmap Index Scan on pgdocs_bigm (actual time=0.247..0.247 rows=352 loops=1)
Index Cond: (contents ~~ '%PostgreSQL%'::text)
Planning Time: 0.111 ms
Execution Time: 44.536 ms
Recheck
なし
Bitmap Heap Scan on pgdocs (actual time=0.274..0.393 rows=352 loops=1)
Recheck Cond: (contents ~~ '%PostgreSQL%'::text)
Heap Blocks: exact=14
-> Bitmap Index Scan on pgdocs_bigm (actual time=0.258..0.258 rows=352 loops=1)
Index Cond: (contents ~~ '%PostgreSQL%'::text)
Planning Time: 0.115 ms
Execution Time: 0.494 ms
PostgreSQL日本語ドキュメントの各ソースファイルを格納したテーブルから、全文検索したときの実行プラン
EXPLAIN ANALYZE SELECT * FROM pgdocs WHERE contents LIKE '%PostgreSQL%';
検索対象文字列が平均51kBと大きく、
Recheck処理のオーバーヘッドが大きい
© 2021 NTT DATA Corporation 13
3. 英字/数字のみの全文検索にはpg_trgmの利用も検討すべき
pg_
bigm
Bitmap Heap Scan on uuid (actual time=129.772..129.931 rows=8 loops=1)
Recheck Cond: (id ~~ '%2f1da6%'::text)
Rows Removed by Index Recheck: 183
Heap Blocks: exact=191
-> Bitmap Index Scan on uuid_bigm (actual time=129.714..129.714 rows=191 loops=1)
Index Cond: (id ~~ '%2f1da6%'::text)
Planning Time: 0.143 ms
Execution Time: 129.969 ms
pg_
trgm
Bitmap Heap Scan on uuid (actual time=10.219..10.232 rows=8 loops=1)
Recheck Cond: (id ~~ '%2f1da6%'::text)
Rows Removed by Index Recheck: 1
Heap Blocks: exact=9
-> Bitmap Index Scan on uuid_trgm (actual time=10.207..10.207 rows=9 loops=1)
Index Cond: (id ~~ '%2f1da6%'::text)
Planning Time: 0.105 ms
Execution Time: 10.261 ms
gen_random_uuid()で作成したUUIDデータ1千万件から、全文検索したときの実行プラン
EXPLAIN ANALYZE SELECT * FROM uuid WHERE id LIKE '%2f1da6%';
検索対象文字列の文字種別が少ない場合は、
3文字区切りのpg_trgmのほうが
インデックスから結果を絞り込みやすい
© 2021 NTT DATA Corporation 14
14
© 2021 NTT DATA Corporation
4. シンプルな全文検索のみ可能
=# CREATE INDEX testidx ON test
USING gin (normalize(col, NFKC) gin_bigm_ops);
=# SELECT * FROM test
WHERE normalize(col, NFKC)
LIKE likequery(normalize('PostgreSQLバージョン13', NFKC));
col
--------------------------------------------
PostgreSQLバージョン13の新機能
PostgreSQLバージョン13の新機能
PostgreSQLバージョン⑬の新機能
PostgreSQLバージョン13の新機能
(4 rows)
全文検索インデックスの作成時と
検索時にnormalize関数を指定
英数字・カタカナの全角半角や記号の区別なく
全文検索が可能に!
高度な全文検索を実現するには、関数などと組み合わせてpg_bigmを使う。
例えば、文字の種別を意識しない全文検索をするにはnormalize関数と組み合わせる
© 2021 NTT DATA Corporation 15
FASTUPDATE = OFF FASTUPDATE = ON (デフォルト設定)
更
新
時
検
索
時
5. GINインデックスのFASTUPDATEパラメータについて検討すべき
GIN GIN
pending list
GIN
スキャン スキャン スキャン
大量のキーをGINイン
デックスに追加するため、
更新は低速になりがち
GINインデックスのみを
スキャンするため、
検索は高速
大量のキーをリストに追加する
だけのため、更新は高速。リス
ト内のキーはVACUUM時など
にGINインデックスに一括移動
GINインデックスとリストを
スキャンするため、
リスト内のキーが多いほど
検索は低速になりがち
最大で、リストの最大サイズ(gin_pending_list_limit)分のスキャンのオーバーヘッドが追加発生。
検索を優先したい場合は、FASTUPDATEを無効化するか、検索時に大量のキーがリストに残っていないように
VACUUMなどの実行頻度・契機を調整する
FASTUPDATEパラメータの設定値により、更新・検索性能の傾向が変わる
© 2021 NTT DATA Corporation 16
5. GINインデックスのFASTUPDATEパラメータについて検討すべき
FASTUPDATE
=off
または
FASTUPDATE
=onでリストが空
Bitmap Heap Scan on jawiki (actual time=0.979..2.636 rows=3678 loops=1)
Recheck Cond: (title ~~ '%東京都%'::text)
Rows Removed by Index Recheck: 10
Heap Blocks: exact=822
-> Bitmap Index Scan on jawiki_bigm (actual time=0.863..0.864 rows=3688 loops=1)
Index Cond: (title ~~ '%東京都%'::text)
Planning Time: 0.065 ms
Execution Time: 2.931 ms
FASTUPDATE
=onでリスト内に
約374万件の
キーが存在
Bitmap Heap Scan on jawiki (actual time=903.286..904.517 rows=3678 loops=1)
Recheck Cond: (title ~~ '%東京都%'::text)
Rows Removed by Index Recheck: 10
Heap Blocks: exact=822
-> Bitmap Index Scan on jawiki_bigm (actual time=903.194..903.194 rows=3688 loops=1)
Index Cond: (title ~~ '%東京都%'::text)
Planning Time: 0.134 ms
Execution Time: 904.738 ms
日本版Wikipediaタイトル一覧データ約374万件から全文検索したときの実行プラン
EXPLAIN ANALYZE SELECT * FROM jawiki WHERE title LIKE '%東京都%';
© 2021 NTT DATA Corporation 17
pg_bigmのよいところ
日本語全文検索でも高速
1文字、2文字の全文検索でも高速
LIKE検索でインデックスを利用できる
GINインデックスをそのまま利用のため、
- PostgreSQLの機能をサポート(WAL、リカバリ、レプリケーションなど)
- PostgreSQLの新機能もすぐにサポート
(v13リリース直後から新機能パラレルVACUUMに対応など)
- インデックスの信頼性が高い
一部のパブリッククラウドのマネージドDBサービスでも利用できる New!
© 2021 NTT DATA Corporation 18
さいごに
5つのポイントに気を付けながら、
pg_bigmでの全文検索をぜひお試しいただければ!!
1. 完全一致検索や前方一致検索にはB-treeの利用も検討すべき
2. Recheck処理のオーバーヘッドが発生する
3. 英字/数字のみの全文検索にはpg_trgmの利用も検討すべき
4. シンプルな全文検索のみ可能
5. GINインデックスのFASTUPDATEパラメータについて検討すべき
© 2021 NTT DATA Corporation
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。
© 2021 NTT DATA Corporation 20
YouTubeチャンネル “NTT DATA Tech”
技術取り組み、活用情報を中心にお届けします
https://www.youtube.com/NTTDATATech

More Related Content

What's hot

PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編Miki Shimogai
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)NTT DATA Technology & Innovation
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...NTT DATA Technology & Innovation
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~Miki Shimogai
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?Takuya Ueda
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングKosuke Kida
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界Yoshinori Nakanishi
 

What's hot (20)

PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 

Similar to pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)

PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsKohei KaiGai
 
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望Kohei KaiGai
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...NTT DATA Technology & Innovation
 
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)Hiromu Shioya
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
A Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezA Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezGw Liu
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニングKensuke Nagae
 
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)NTT DATA Technology & Innovation
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...NTT DATA Technology & Innovation
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL13 新機能紹介
PostgreSQL13 新機能紹介PostgreSQL13 新機能紹介
PostgreSQL13 新機能紹介Satoshi Hirata
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
PostgreSQL v9.5の新機能~CustomScan/Join Interface
PostgreSQL v9.5の新機能~CustomScan/Join InterfacePostgreSQL v9.5の新機能~CustomScan/Join Interface
PostgreSQL v9.5の新機能~CustomScan/Join InterfaceKohei KaiGai
 
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online20200828_OSCKyoto_Online
20200828_OSCKyoto_OnlineKohei KaiGai
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

Similar to pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料) (20)

PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
 
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
A Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezA Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on Tez
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
 
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL13 新機能紹介
PostgreSQL13 新機能紹介PostgreSQL13 新機能紹介
PostgreSQL13 新機能紹介
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
PostgreSQL v9.5の新機能~CustomScan/Join Interface
PostgreSQL v9.5の新機能~CustomScan/Join InterfacePostgreSQL v9.5の新機能~CustomScan/Join Interface
PostgreSQL v9.5の新機能~CustomScan/Join Interface
 
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online20200828_OSCKyoto_Online
20200828_OSCKyoto_Online
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

More from NTT DATA Technology & Innovation

OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)NTT DATA Technology & Innovation
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方NTT DATA Technology & Innovation
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...NTT DATA Technology & Innovation
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)NTT DATA Technology & Innovation
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)NTT DATA Technology & Innovation
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...NTT DATA Technology & Innovation
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)NTT DATA Technology & Innovation
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...NTT DATA Technology & Innovation
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)NTT DATA Technology & Innovation
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

More from NTT DATA Technology & Innovation (20)

OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Recently uploaded

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Recently uploaded (9)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)

  • 1. 第23回 PostgreSQLアンカンファレンス@オンライン © 2021 NTT DATA Corporation pg_bigmで全文検索するときに気を付けたい5つのポイント 2021年5月11日 株式会社NTTデータ 藤井 雅雄
  • 2. © 2021 NTT DATA Corporation 2 2 © 2021 NTT DATA Corporation 自己紹介 藤井 雅雄 Database Technical Lead @ NTTデータ データベース研究開発 PostgreSQL 技術支援 PostgreSQLコミッタ レプリケーション WAL圧縮 バックアップ進捗確認 pg_bigm(全文検索モジュール) コミッタ @fujii_masao
  • 3. © 2021 NTT DATA Corporation 3 3 © 2021 NTT DATA Corporation 本講演について 講演資料は、NTTデータのSlideShareアカウント上で公開予定です。 https://www.slideshare.net/nttdata-tech 講演資料に掲載の検証結果は、ノートPC上の簡易計測で取得したものです。 環境や条件などによっては、異なる検証結果になる可能性があるためご了承ください。
  • 4. © 2021 NTT DATA Corporation 4 pg_bigmとは PostgreSQL上で全文検索機能を提供するOSSモジュール 「OSS」を含むタイトルの書籍情報を検索したい! SELECT * FROM book WHERE title LIKE ‘%OSS%’ シーケンシャル スキャン インデックス スキャン pg_bigm導入で高速に!  通常、インデックス使えず低速
  • 5. © 2021 NTT DATA Corporation 5 pg_bigmとは 開発元 pg_bigm Development Group (もともとはNTTデータが開発) ライセンス The PostgreSQL License 最新バージョン 1.2-20200228 (2020/2/28リリース) 動作確認環境 OS: Linux, Mac OS X PostgreSQL: 9.1~13 公開先 (公式) https://pgbigm.osdn.jp (ミラー) https://github.com/pgbigm/pg_bigm v14開発版(2021/4/28時点)でも 動作を確認済!!
  • 6. © 2021 NTT DATA Corporation 6 パブリッククラウドで広がるpg_bigmの採用 2020-08: ApsaraDB RDS for PostgreSQL / AliPG @ Alibaba Cloud https://www.alibabacloud.com/help/ja/doc-detail/126002.htm https://help.aliyun.com/document_detail/182266.html 2020-09: TencentDB for PostgreSQL @ Tencent Cloud https://intl.cloud.tencent.com/jp/document/product/409/38832 https://intl.cloud.tencent.com/jp/document/product/409/7567 2021-04: Amazon RDS for PostgreSQL @ AWS https://aws.amazon.com/jp/about-aws/whats-new/2021/04/amazon-rds-for-postgresql- supports-pg-bigm-extension-for-faster-full-text-search/
  • 7. © 2021 NTT DATA Corporation 7 pg_bigmの参考情報 pg_bigmを用いた全文検索のしくみ(前編) https://www.slideshare.net/hadoopxnttdata/pgbigm-39739489 pg_bigmを用いた全文検索のしくみ(後編) https://www.slideshare.net/hadoopxnttdata/pgbigm-39739507 PostgreSQLでpg_bigmを使って日本語全文検索 https://www.slideshare.net/hadoopxnttdata/postgresqlpgbigm-mysqlpostgresql pg_bigmを触り始めた人に伝えたいこと https://www.slideshare.net/masahikosawada98/pgbigm-66639454 pg_bigmと類似度検索 https://www.slideshare.net/masahikosawada98/pgbigm-66639588
  • 8. © 2021 NTT DATA Corporation 8 pg_bigmで気を付けたい5つのポイント
  • 9. © 2021 NTT DATA Corporation 9 1. 完全一致検索や前方一致検索にはB-treeの利用も検討すべき 日本版Wikipediaタイトル一覧データ約374万件から、 完全一致検索および前方一致検索したときの実行時間の比較 完全一致検索 前方一致検索 インデックスなし (Seq Scan) 265.72 ms 283.37 ms インデックスなし (Parallel Seq Scan) 117.92 ms 117.08 ms pg_bigmインデックス (Bitmap Index Scan) 2.90 ms 2.00 ms B-treeインデックス (Index Scan) 0.59 ms 0.58 ms B-treeインデックス (Index Only Scan) 0.34 ms 0.44 ms 完全一致検索 下記SQLで検索結果3件 SELECT * FROM jawiki WHERE title = 'データベース'; ※pg_bigmでは=の代わりにLIKEを使用 前方一致検索 下記SQLで検索結果50件 SELECT * FROM jawiki WHERE title LIKE 'データベース%'; pg_bigmもそこそこ高速だが、 B-treeのほうが高性能
  • 10. © 2021 NTT DATA Corporation 10 2. Recheck処理のオーバーヘッドが発生する 東京都 東京と京都 東京都 Recheck処理 検索文字列が3文字以上の場合、Recheck処理により pg_bigmインデックスから絞り込んだ検索結果候補が妥当か検査しなければならない '%東京都%'で検索 検索結果候補の数が多いほど、データサイズが大きいほど、 Recheck処理のオーバーヘッドは大きくなる 「東京」と「京都」でインデックス から検索結果候補を絞り込み 検索結果候補のデータをすべてチェックして、 検索条件を満たすものを抽出する
  • 11. © 2021 NTT DATA Corporation 11 2. Recheck処理のオーバーヘッドが発生する Recheck あり Bitmap Heap Scan on jawiki (actual time=0.979..2.636 rows=3678 loops=1) Recheck Cond: (title ~~ '%東京都%'::text) Rows Removed by Index Recheck: 10 Heap Blocks: exact=822 -> Bitmap Index Scan on jawiki_bigm (actual time=0.863..0.864 rows=3688 loops=1) Index Cond: (title ~~ '%東京都%'::text) Planning Time: 0.065 ms Execution Time: 2.931 ms Recheck なし(*1) Bitmap Heap Scan on jawiki (actual time=1.250..2.499 rows=3688 loops=1) Recheck Cond: (title ~~ '%東京都%'::text) Heap Blocks: exact=822 -> Bitmap Index Scan on jawiki_bigm (actual time=1.129..1.130 rows=3688 loops=1) Index Cond: (title ~~ '%東京都%'::text) Planning Time: 0.086 ms Execution Time: 2.793 ms 日本版Wikipediaタイトル一覧データ約374万件から全文検索したときの実行プラン EXPLAIN ANALYZE SELECT * FROM jawiki WHERE title LIKE '%東京都%'; (*1) pg_bigm.enable_recheck=off 検索結果候補3688件から、 Recheckにより10件を除去 検索対象文字列が平均22Bと小さいため、 Recheck処理のオーバーヘッドは小さい
  • 12. © 2021 NTT DATA Corporation 12 2. Recheck処理のオーバーヘッドが発生する Recheck あり Bitmap Heap Scan on pgdocs (actual time=0.473..44.468 rows=352 loops=1) Recheck Cond: (contents ~~ '%PostgreSQL%'::text) Heap Blocks: exact=14 -> Bitmap Index Scan on pgdocs_bigm (actual time=0.247..0.247 rows=352 loops=1) Index Cond: (contents ~~ '%PostgreSQL%'::text) Planning Time: 0.111 ms Execution Time: 44.536 ms Recheck なし Bitmap Heap Scan on pgdocs (actual time=0.274..0.393 rows=352 loops=1) Recheck Cond: (contents ~~ '%PostgreSQL%'::text) Heap Blocks: exact=14 -> Bitmap Index Scan on pgdocs_bigm (actual time=0.258..0.258 rows=352 loops=1) Index Cond: (contents ~~ '%PostgreSQL%'::text) Planning Time: 0.115 ms Execution Time: 0.494 ms PostgreSQL日本語ドキュメントの各ソースファイルを格納したテーブルから、全文検索したときの実行プラン EXPLAIN ANALYZE SELECT * FROM pgdocs WHERE contents LIKE '%PostgreSQL%'; 検索対象文字列が平均51kBと大きく、 Recheck処理のオーバーヘッドが大きい
  • 13. © 2021 NTT DATA Corporation 13 3. 英字/数字のみの全文検索にはpg_trgmの利用も検討すべき pg_ bigm Bitmap Heap Scan on uuid (actual time=129.772..129.931 rows=8 loops=1) Recheck Cond: (id ~~ '%2f1da6%'::text) Rows Removed by Index Recheck: 183 Heap Blocks: exact=191 -> Bitmap Index Scan on uuid_bigm (actual time=129.714..129.714 rows=191 loops=1) Index Cond: (id ~~ '%2f1da6%'::text) Planning Time: 0.143 ms Execution Time: 129.969 ms pg_ trgm Bitmap Heap Scan on uuid (actual time=10.219..10.232 rows=8 loops=1) Recheck Cond: (id ~~ '%2f1da6%'::text) Rows Removed by Index Recheck: 1 Heap Blocks: exact=9 -> Bitmap Index Scan on uuid_trgm (actual time=10.207..10.207 rows=9 loops=1) Index Cond: (id ~~ '%2f1da6%'::text) Planning Time: 0.105 ms Execution Time: 10.261 ms gen_random_uuid()で作成したUUIDデータ1千万件から、全文検索したときの実行プラン EXPLAIN ANALYZE SELECT * FROM uuid WHERE id LIKE '%2f1da6%'; 検索対象文字列の文字種別が少ない場合は、 3文字区切りのpg_trgmのほうが インデックスから結果を絞り込みやすい
  • 14. © 2021 NTT DATA Corporation 14 14 © 2021 NTT DATA Corporation 4. シンプルな全文検索のみ可能 =# CREATE INDEX testidx ON test USING gin (normalize(col, NFKC) gin_bigm_ops); =# SELECT * FROM test WHERE normalize(col, NFKC) LIKE likequery(normalize('PostgreSQLバージョン13', NFKC)); col -------------------------------------------- PostgreSQLバージョン13の新機能 PostgreSQLバージョン13の新機能 PostgreSQLバージョン⑬の新機能 PostgreSQLバージョン13の新機能 (4 rows) 全文検索インデックスの作成時と 検索時にnormalize関数を指定 英数字・カタカナの全角半角や記号の区別なく 全文検索が可能に! 高度な全文検索を実現するには、関数などと組み合わせてpg_bigmを使う。 例えば、文字の種別を意識しない全文検索をするにはnormalize関数と組み合わせる
  • 15. © 2021 NTT DATA Corporation 15 FASTUPDATE = OFF FASTUPDATE = ON (デフォルト設定) 更 新 時 検 索 時 5. GINインデックスのFASTUPDATEパラメータについて検討すべき GIN GIN pending list GIN スキャン スキャン スキャン 大量のキーをGINイン デックスに追加するため、 更新は低速になりがち GINインデックスのみを スキャンするため、 検索は高速 大量のキーをリストに追加する だけのため、更新は高速。リス ト内のキーはVACUUM時など にGINインデックスに一括移動 GINインデックスとリストを スキャンするため、 リスト内のキーが多いほど 検索は低速になりがち 最大で、リストの最大サイズ(gin_pending_list_limit)分のスキャンのオーバーヘッドが追加発生。 検索を優先したい場合は、FASTUPDATEを無効化するか、検索時に大量のキーがリストに残っていないように VACUUMなどの実行頻度・契機を調整する FASTUPDATEパラメータの設定値により、更新・検索性能の傾向が変わる
  • 16. © 2021 NTT DATA Corporation 16 5. GINインデックスのFASTUPDATEパラメータについて検討すべき FASTUPDATE =off または FASTUPDATE =onでリストが空 Bitmap Heap Scan on jawiki (actual time=0.979..2.636 rows=3678 loops=1) Recheck Cond: (title ~~ '%東京都%'::text) Rows Removed by Index Recheck: 10 Heap Blocks: exact=822 -> Bitmap Index Scan on jawiki_bigm (actual time=0.863..0.864 rows=3688 loops=1) Index Cond: (title ~~ '%東京都%'::text) Planning Time: 0.065 ms Execution Time: 2.931 ms FASTUPDATE =onでリスト内に 約374万件の キーが存在 Bitmap Heap Scan on jawiki (actual time=903.286..904.517 rows=3678 loops=1) Recheck Cond: (title ~~ '%東京都%'::text) Rows Removed by Index Recheck: 10 Heap Blocks: exact=822 -> Bitmap Index Scan on jawiki_bigm (actual time=903.194..903.194 rows=3688 loops=1) Index Cond: (title ~~ '%東京都%'::text) Planning Time: 0.134 ms Execution Time: 904.738 ms 日本版Wikipediaタイトル一覧データ約374万件から全文検索したときの実行プラン EXPLAIN ANALYZE SELECT * FROM jawiki WHERE title LIKE '%東京都%';
  • 17. © 2021 NTT DATA Corporation 17 pg_bigmのよいところ 日本語全文検索でも高速 1文字、2文字の全文検索でも高速 LIKE検索でインデックスを利用できる GINインデックスをそのまま利用のため、 - PostgreSQLの機能をサポート(WAL、リカバリ、レプリケーションなど) - PostgreSQLの新機能もすぐにサポート (v13リリース直後から新機能パラレルVACUUMに対応など) - インデックスの信頼性が高い 一部のパブリッククラウドのマネージドDBサービスでも利用できる New!
  • 18. © 2021 NTT DATA Corporation 18 さいごに 5つのポイントに気を付けながら、 pg_bigmでの全文検索をぜひお試しいただければ!! 1. 完全一致検索や前方一致検索にはB-treeの利用も検討すべき 2. Recheck処理のオーバーヘッドが発生する 3. 英字/数字のみの全文検索にはpg_trgmの利用も検討すべき 4. シンプルな全文検索のみ可能 5. GINインデックスのFASTUPDATEパラメータについて検討すべき
  • 19. © 2021 NTT DATA Corporation その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。
  • 20. © 2021 NTT DATA Corporation 20 YouTubeチャンネル “NTT DATA Tech” 技術取り組み、活用情報を中心にお届けします https://www.youtube.com/NTTDATATech

Editor's Notes

  1. 情報発信については、NTT DATA Tech という YouTubeチャンネルを開設しました。 10月に開催したNTTデータ テクノロジーカンファレンスの模様や 技術トピックの解説映像などを、順次公開していきます。 こちらもあわせてご覧ください。