SlideShare a Scribd company logo
© 2023 NTT DATA Corporation
© 2023 NTT DATA Corporation
NewSQL/分散SQLデータベース よろず勉強会 #3
YugabyteDBの実行計画を眺める
2023年2月16日
NTTデータ 笠原辰仁
© 2023 NTT DATA Corporation 2
自己紹介
• 笠原 辰仁 (@kasa_zip)
• 長年PostgreSQLの検証や周辺ツールの開発、サポートなどに従事
• 最近はNewSQLや分散データベースに属するOSSプロダクトの調査や検証、
適用領域の見極めなど
• 本日は、分散データベースのOSSプロダクトであるYugabyteDBの実行計画の取得方法や
情報の見方を解説
© 2023 NTT DATA Corporation 3
実行計画とは
発行されたクエリをどのように実行するかをDBMSが生成する情報。一般的にはDBMSのPlannerやOptimizerと呼ばれる機能
が生成する。
通常、あまりユーザ(クエリを発行する人)が実行計画を意識することは無いが、思ったような性能が出ない場合の原因解析やクエ
リチューニングを行った効果などを調査したい時に、とても有用なもの。
SELECT * FROM t1 JOIN t2 ON t1.c1 = t2.c1 WHERE t1.c1 < 10;
QUERY PLAN
--------------------------------------
Nested Loop
Join Filter: (t1.c1 = t2.c1)
-> Index Scan using t1_pkey on t1
Index Cond: (c1 < 10)
-> Seq Scan on t2
YugabyteDB
(のPlanner)
© 2023 NTT DATA Corporation 4
実行計画の取得方法
YugabyteDBでは他のDBMSと同様にEXPLAINという句をクエリの先頭に付与することで実行計画を取得できる。
クエリは実際には実行されない。出力される情報はPostgreSQLとほぼ同じ。
yugabyte=# EXPLAIN SELECT * FROM r_t1 WHERE c1 < 100;
QUERY PLAN
-----------------------------------------------------------------------
Index Scan using r_t1_pkey on r_t1 (cost=0.00..4.11 rows=1 width=52)
Index Cond: (c1 < 100)
(2 rows)
yugabyte=# EXPLAIN SELECT * FROM r_t1;
QUERY PLAN
----------------------------------------------------------
Seq Scan on r_t1 (cost=0.00..100.00 rows=1000 width=52)
(1 row)
yugabyte=# EXPLAIN SELECT * FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE r.c1 < 100;
QUERY PLAN
-------------------------------------------------------------------------------
Nested Loop (cost=0.00..8.23 rows=1 width=104)
-> Index Scan using r_t1_pkey on r_t1 r (cost=0.00..4.11 rows=1 width=52)
Index Cond: (c1 < 100)
-> Index Scan using h_t1_pkey on h_t1 h (cost=0.00..4.11 rows=1 width=52)
Index Cond: (c1 = r.c1)
(5 rows)
© 2023 NTT DATA Corporation 5
実行計画の取得方法
EXPLAINではオプションをいくつか付与することで様々な情報を出力できる。
オプション 説明
ANALYZE 指定したクエリを実行し、実際の所要時間や消費した各種リソース(IOやメモリなど)の情報を出力する。
VERBOSE SELECT列の射影対象や中間処理での出力対象を出力する。
COSTS 実行計画のコスト情報を出力する。デフォルト有効。
TIMING 実行時の所要時間を出力する。ANALYZEの指定が必須でデフォルト有効。
BUFFERS 実行過程における巨大なハッシュやソート処理の一時ファイル書き出しで使用されたバッファサイズを出力す
る。ANALYZEの指定が必須。
SUMMARY 実行計画の末尾にプラン作成時間、実行時間、総メモリ消費量などを出力する。デフォルト有効。
FORMAT 実行計画情報の出力形式を指定する。TEXT、JSON、YAML、XMLから選択できデフォルトはTEXT。
DIST ストレージ層のDocDBへの読み書きリクエスト数やDocDBでの所要時間を出力する。
ANALYZEオプションを付与することで実際の所要時間が分かるため多用することが多い。ただし実際にクエリが実行されるため更
新系の処理を対象にするときは注意。(BEGIN; ABORT;で囲うなど工夫がいる)
COSTSやTIMING、SUMMARYについては変動要素の強い出力情報になるので、リグレッションテストなどの出力と期待のdiff
を取るときなどのノイズ除去として用いられたり、実行計画を簡潔に出力したい場合などに用いる。
© 2023 NTT DATA Corporation 6
EXPLAINの文法
EXPLAINでは複数のオプションを組み合わせて使用できる。以下のようにEXPLAIN (オプション [,..]) の形で指定する。
EXPLAIN (ANALYZE, BUFFERS, VERBOSE) SELECT …
上記はANALYZE、BUFFERS、VERBOSEを有効にしている。オプション [on | off] の形を取ることもできる。
EXPLAIN (ANALYZE on, BUFFERS on, COSTS off) SELECT …
上記はANALYZE、BUFFERSを有効にし、COSTSを無効にしている。
EXPLAINは通常のSELECTやUPDATEなどのクエリの他、カーソルのDECLARE、準備文(Prepared Statement)に対する
EXECUTEにも使用することができる。
PREPARE p1(int) AS SELECT … WHERE c1 = $1;
EXPLAIN (ANALYZE on, BUFFERS on) EXECUTE p1(10);
EXPLAIN (ANALYZE on, BUFFERS on) DECLARE cur FOR SELECT …
© 2023 NTT DATA Corporation 7
実行計画の見方
=> EXPLAIN SELECT * FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE h.c1 < 10;
QUERY PLAN
-------------------------------------------------------------------------------
Nested Loop (cost=0.00..216.39 rows=1000 width=104)
-> Seq Scan on h_t1 h (cost=0.00..102.50 rows=1000 width=52)
Filter: (c1 < 10)
-> Index Scan using r_t1_pkey on r_t1 r (cost=0.00..0.11 rows=1 width=52)
Index Cond: (c1 = h.c1)
(5 rows)
赤字部分はノードタイプとも呼ばれ、実行されるスキャン、
結合、集計等の各処理の種別を表す。
基本的にネストの深い方(右の方)から順次実行されていく
代表的なノードタイプには以下がある。
• スキャン:Seq Scan/Index Scan/Index Only Scan
• 結合:Nested Loop/Merge Join/Hash Join (Semi/Anti)
• 集計:HashAggregate/GroupAggregate
• 更新:Insert/Update/Delete
• その他:Sort/Limit/Result/Append… など。
ちなみにPostgreSQLにあるBitmapScanは無い
まず計画そのものとなるノード情報。
© 2023 NTT DATA Corporation 8
実行計画の見方
=> EXPLAIN SELECT * FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE h.c1 < 10;
QUERY PLAN
-------------------------------------------------------------------------------
Nested Loop (cost=0.00..216.39 rows=1000 width=104)
-> Seq Scan on h_t1 h (cost=0.00..102.50 rows=1000 width=52)
Filter: (c1 < 10)
-> Index Scan using r_t1_pkey on r_t1 r (cost=0.00..0.11 rows=1 width=52)
Index Cond: (c1 = h.c1)
(5 rows)
赤字部分はコストに関する情報で、N.NN .. M.MMはそれぞれ
スタートアップコスト(そのノードを開始するための準備コスト)と
トータルコスト(ノード処理を一通り完了するまでの総コスト)。
rowsは各ノードで取得する予想行数。
widthは各ノードで取得する列幅の総サイズ。
コストの計算式はPostgreSQLと同様のロジックだが、
YugabyteDB特有の要素がいくつかある。(異なるゾーン
やリージョンへの問い合わせコストは別途追加するなど)
src/backend/access/yb_access/yb_scan.cの
ybcCostEstimate()
Plannerが実行計画の作成の根拠とした見積情報。
© 2023 NTT DATA Corporation 9
実行計画の見方
=> EXPLAIN (ANALYZE on, COSTS off) SELECT r.c1, r.c4 FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE h.c1 < 100;
QUERY PLAN
---------------------------------------------------------------------------------------
Nested Loop (actual time=12.706..1979.256 rows=99 loops=1)
-> Seq Scan on h_t1 h (actual time=7.545..1669.513 rows=99 loops=1)
Filter: (c1 < 100)
Rows Removed by Filter: 599901
-> Index Scan using r_t1_pkey on r_t1 r (actual time=3.108..3.108 rows=1 loops=99)
Index Cond: (c1 = h.c1)
Planning Time: 0.127 ms
Execution Time: 1979.423 ms
Peak Memory Usage: 30 kB
(9 rows)
赤字部分は実際にかかった時間や取得した行数情報。
actual timeのNN.NN .. MM.MMは各ノードで最初の1行を取得す
るまでの時間(ms)と最後の行を取得するまでの時間(ms)。
rowsは各ノードで取得された件数。
loopsは各ノードが繰り返された回数。
Rows Removed by Filterはスキャンした件数のうち条件により除去
された件数。
loopsが2以上の場合、実際にかかる時間は
「actual time」 * 「loops回数」となる。
loopsが多いものはactual timeが短くても注意すると良い。
実際にクエリを実行した場合の所要時間や取得した件数などの情報。
© 2023 NTT DATA Corporation 10
実行計画の見方
=> EXPLAIN (ANALYZE on, COSTS off) SELECT r.c1, r.c4 FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE h.c1 < 100;
QUERY PLAN
---------------------------------------------------------------------------------------
Nested Loop (actual time=12.706..1979.256 rows=99 loops=1)
-> Seq Scan on h_t1 h (actual time=7.545..1669.513 rows=99 loops=1)
Filter: (c1 < 100)
Rows Removed by Filter: 599901
-> Index Scan using r_t1_pkey on r_t1 r (actual time=3.108..3.108 rows=1 loops=99)
Index Cond: (c1 = h.c1)
Planning Time: 0.127 ms
Execution Time: 1979.423 ms
Peak Memory Usage: 30 kB
(9 rows)
赤字部分はサマリ情報。
Planning Timeはプラン作成にかかった時間。
Execution Timeはクエリ処理にかかった総時間。
Peak Memory Usageはクエリ処理中の最もメモリを消費していた際
の利用量(Tserver上のpostgresバックエンドでの消費量)。
Execution TimeはYugabyteDB内での所要時間となり、
クライアントへ結果を返すなどの通信時間などは含まれない
ので注意。
実際にクエリを実行した場合のサマリ情報。
© 2023 NTT DATA Corporation 11
実行計画の見方
=> EXPLAIN (ANALYZE on, DIST on, COSTS off) SELECT r.c1, r.c4 FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE h.c1 < 100;
QUERY PLAN
---------------------------------------------------------------------------------------
Nested Loop (actual time=20.376..1765.325 rows=99 loops=1)
-> Seq Scan on h_t1 h (actual time=6.409..1478.253 rows=99 loops=1)
Filter: (c1 < 100)
Rows Removed by Filter: 599901
Storage Table Read Requests: 588
Storage Table Execution Time: 1424.985 ms
-> Index Scan using r_t1_pkey on r_t1 r (actual time=2.882..2.882 rows=1 loops=99)
Index Cond: (c1 = h.c1)
Storage Index Read Requests: 1
Storage Index Execution Time: 2.859 ms
Planning Time: 0.085 ms
Execution Time: 1765.460 ms
Storage Read Requests: 687
Storage Write Requests: 0
Storage Execution Time: 1707.983 ms
Peak Memory Usage: 30 kB
(16 rows)
赤字部分はストレージ(DocDB)での処理時間や回数の情報。
Storage Table~はSeqScan処理でDocDBへ行われたRPCの回数と所要時間。
Storage Index~はIndex Scan処理でDocDBへ行われたRPCの回数と所要時
間。
Storage Read/Write RequestはDocDBへリクエストされたRPCの総回数。
Storage Execution TimeはDocDBでの処理総時間。
なお、loopsが2以上の場合はStorage~Requestsはその回数だけ実施される。
DISTオプションによる実際にクエリを実行した場合のDocDBでの処理時間やリクエスト回数などの情報。
© 2023 NTT DATA Corporation 12
YugabyteDBのユニークな処理 – HashとRange -
YugabyteDBではインデックスはデフォルトでハッシュインデックスが利用される。そのため範囲検索を多用する場合はインデックス
定義に注意しておく。
=# CREATE TABLE r_t1 (c1 int, c2 int, c3 int, c4 text, c5 timestamp, primary key (c1 ASC)); -- 主キーはRange
=# CREATE TABLE h_t1 (c1 int, c2 int, c3 int, c4 text, c5 timestamp, primary key (c1)); -- 主キーはHash
(各テーブルに60万件ほど投入)
=# EXPLAIN (ANALYZE on, COSTS off) SELECT * FROM r_t1 WHERE c1 < 100;
QUERY PLAN
-------------------------------------------------------------------------------
Index Scan using r_t1_pkey on r_t1 (actual time=1.099..1.134 rows=99 loops=1)
Index Cond: (c1 < 100)
Planning Time: 0.055 ms
Execution Time: 1.163 ms
Peak Memory Usage: 0 kB
(5 rows)
=# EXPLAIN (ANALYZE on, COSTS off) SELECT * FROM h_t1 WHERE c1 < 100;
QUERY PLAN
-----------------------------------------------------------------
Seq Scan on h_t1 (actual time=19.090..2783.098 rows=99 loops=1)
Filter: (c1 < 100)
Rows Removed by Filter: 599901
Planning Time: 1.557 ms
Execution Time: 2783.488 ms
Peak Memory Usage: 0 kB
(6 rows)
同じInteger型の列に定義した主キーの範囲検索で
あっても、ハッシュインデックスではインデックスが効かない
© 2023 NTT DATA Corporation 13
YugabyteDBのユニークな処理 – remote filter -
YugabyteDBではストレージ層のKVS(DocDB)からデータを読み取り、YSQLの層(postgresのバックエンドプロセス)でFilter
や結合を実施する。そのためSeqScanなどは大量のデータをDocDBから読み込むことになる。
=# EXPLAIN (ANALYZE on,DIST on,COSTS off) SELECT * FROM h_t1 WHERE c1 < 100;
QUERY PLAN
-------------------------------------------------------------------------------
Seq Scan on h_t1 (actual time=13.273..3742.157 rows=99 loops=1)
Filter: (c1 < 100)
Rows Removed by Filter: 599901
Storage Table Read Requests: 588
Storage Table Execution Time: 3636.899 ms
Planning Time: 0.058 ms
Execution Time: 3742.478 ms
Storage Read Requests: 588
Storage Write Requests: 0
Storage Execution Time: 3636.899 ms
Peak Memory Usage: 0 kB
(11 rows)
Tserver
YSQL
DocDB
データ
ここでFilterや結合、
集計を実施
Tserver
DocDB
Tserver
DocDB
© 2023 NTT DATA Corporation 14
YugabyteDBのユニークな処理 – remote filter -
YugabyteDBではDocDB側へ一部のFilter演算をPushdownし、データのリクエスト量・回数を抑えることが可能。
Pushdownされた処理はRemote Filterとして表示される。
=# SET yb_enable_expression_pushdown TO on;
SET
=# EXPLAIN (ANALYZE on,DIST on,COSTS off) SELECT * FROM h_t1 WHERE c1 < 100;
QUERY PLAN
-------------------------------------------------------------------------------
Seq Scan on h_t1 (actual time=1211.024..2408.519 rows=99 loops=1)
Remote Filter: (c1 < 100)
Storage Table Read Requests: 2
Storage Table Execution Time: 2406.933 ms
Planning Time: 0.061 ms
Execution Time: 2408.693 ms
Storage Read Requests: 2
Storage Write Requests: 0
Storage Execution Time: 2406.933 ms
Peak Memory Usage: 14 kB
(10 rows)
=# EXPLAIN (ANALYZE on,DIST on,COSTS off) SELECT * FROM h_t1 WHERE c1 < 100;
QUERY PLAN
-----------------------------------------------------------------------------
--
Seq Scan on h_t1 (actual time=13.273..3742.157 rows=99 loops=1)
Filter: (c1 < 100)
Rows Removed by Filter: 599901
Storage Table Read Requests: 588
Storage Table Execution Time: 3636.899 ms
Planning Time: 0.058 ms
Execution Time: 3742.478 ms
Storage Read Requests: 588
Storage Write Requests: 0
Storage Execution Time: 3636.899 ms
Peak Memory Usage: 0 kB
(11 rows)
Remote Filterが有効に働くと、Storage~のリクエスト数などが
低減し、性能が向上することがある。
© 2023 NTT DATA Corporation 15
YugabyteDBのユニークな処理 – batched nested loop -
YugabyteDBではDocDB側からRPC経由でデータを取得するため、Nested Loopのような処理はNWレイテンシの影響など
を受けやすい。Range分割しているキーで範囲検索をするとある程度まとめてデータを取得できるが、Innerのテーブルへの検索
は多くのLoopとなる。
=# EXPLAIN (ANALYZE on, DIST on, COSTS off, TIMING off)
SELECT * FROM r_t1 r1, r_t2 r2 WHERE r1.c1 = r2.c1 AND r1.c1 < 2000;
QUERY PLAN
------------------------------------------------------------------------
Nested Loop (actual rows=1999 loops=1)
-> Index Scan using r_t1_pkey on r_t1 r1 (actual rows=1999 loops=1)
Index Cond: (c1 < 2000)
Storage Index Read Requests: 2
-> Index Scan using r_t2_pkey on r_t2 r2 (actual rows=1 loops=1999)
Index Cond: (c1 = r1.c1)
Storage Index Read Requests: 1
Planning Time: 0.116 ms
Execution Time: 309.301 ms
Storage Read Requests: 2001
Storage Write Requests: 0
Storage Execution Time: 262.997 ms
Peak Memory Usage: 24 kB
(13 rows)
Innerテーブルとなるr_t2に1999回のアクセス
Tserver
YSQL
DocDB
ここでFilterや結合、
集計を実施
Tserver
DocDB
Tserver
DocDB
© 2023 NTT DATA Corporation 16
YugabyteDBのユニークな処理 – batched nested loop -
YugabyteDBではyb_bnl_batch_sizeという動的に変更できるパラメータがあり、
「ANY(ARRAY[指定した数値分のデータ])」を利用してバッチ的にInnerテーブルへ引き当てに行く。
=# SET yb_bnl_batch_size = 5;
=# EXPLAIN (ANALYZE on, DIST on, COSTS off, TIMING off)
SELECT * FROM r_t1 r1, r_t2 r2 WHERE r1.c1 = r2.c1 AND r1.c1 < 2000;
QUERY PLAN
------------------------------------------------------------------------
YB Batched Nested Loop Join (actual rows=1999 loops=1)
Join Filter: (r1.c1 = r2.c1)
-> Index Scan using r_t1_pkey on r_t1 r1 (actual rows=1999 loops=1)
Index Cond: (c1 < 2000)
Storage Index Read Requests: 2
-> Index Scan using r_t2_pkey on r_t2 r2 (actual rows=5 loops=400)
Index Cond: (c1 = ANY (ARRAY[r1.c1, $1, $2, $3, $4]))
Storage Index Read Requests: 3
Planning Time: 0.134 ms
Execution Time: 210.351 ms
Storage Read Requests: 1202
Storage Write Requests: 0
Storage Execution Time: 183.998 ms
Peak Memory Usage: 237 kB
batch_sizeを5にすると、一度のIndex Scanで5件の検索をまとめて行う。
結果的にDocDBへのリクエスト数も減り、性能向上する。
(このケースだとsizeを100に引き上げると40msec程度までレスポンスタイムが改善。)
© 2023 NTT DATA Corporation 17
YugabyteDBのユニークなポイント
現時点のYugabyteDBは統計情報を収集しておらず、また活用することもしない。つまりルールベース オプティマイズと同様。
内部では固定値の行見積値を使っているため、想定行数は一定となる。また基本的にインデックスが使える場合はIndex Scan
を使用するようになる。ANALYZEはbeta機能として利用可能。
=# EXPLAIN SELECT * FROM r_t1 WHERE c1 = 1; -- 主キーで1件
QUERY PLAN
-----------------------------------------------------------------------
Index Scan using r_t1_pkey on r_t1 (cost=0.00..4.11 rows=1 width=52)
Index Cond: (c1 = 1)
(2 rows)
=# EXPLAIN SELECT * FROM r_t1 WHERE c1 < 100; -- 主キー範囲で99件
QUERY PLAN
-----------------------------------------------------------------------
Index Scan using r_t1_pkey on r_t1 (cost=0.00..4.11 rows=1 width=52)
Index Cond: (c1 < 100)
(2 rows)
=# EXPLAIN SELECT * FROM r_t1 WHERE c1 > 0; -- 主キー範囲で60万件
QUERY PLAN
-----------------------------------------------------------------------
Index Scan using r_t1_pkey on r_t1 (cost=0.00..4.11 rows=1 width=52)
Index Cond: (c1 > 0)
(2 rows)
© 2023 NTT DATA Corporation 18
YugabyteDBのユニークなポイント
前述のとおり統計情報を利用せず、インデックススキャンを積極的に利用する傾向が強いため、必然的にNested Loop結合が
選択されやすい。もともとYugabyteDBでは大量データのスキャンなどは得意としていないので、比較的多くの行を選択したり結
合する場合、HINT句の活用を視野に入れる必要がある。
=# EXPLAIN ANALYZE SELECT * FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE r.c1 < 1000000;
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------
Nested Loop (cost=0.00..8.23 rows=1 width=104) (actual time=8.286..244997.931 rows=600000 loops=1)
-> Index Scan using r_t1_pkey on r_t1 r (cost=0.00..4.11 rows=1 width=52) (actual time=7.775..1382.285 rows=600000 loops=1)
Index Cond: (c1 < 1000000)
-> Index Scan using h_t1_pkey on h_t1 h (cost=0.00..4.11 rows=1 width=52) (actual time=0.387..0.387 rows=1 loops=600000)
Index Cond: (c1 = r.c1)
Planning Time: 0.212 ms
Execution Time: 245603.057 ms
Peak Memory Usage: 32 kB
(8 rows)
=# /*+ HashJoin(r h) */ EXPLAIN ANALYZE SELECT * FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE r.c1 < 1000000;
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------
Hash Join (cost=4.12..106.76 rows=1 width=104) (actual time=4548.694..9061.421 rows=600000 loops=1)
Hash Cond: (h.c1 = r.c1)
-> Seq Scan on h_t1 h (cost=0.00..100.00 rows=1000 width=52) (actual time=6.727..3051.250 rows=600000 loops=1)
-> Hash (cost=4.11..4.11 rows=1 width=52) (actual time=4541.308..4541.309 rows=600000 loops=1)
Buckets: 65536 (originally 1024) Batches: 16 (originally 1) Memory Usage: 3725kB
-> Index Scan using r_t1_pkey on r_t1 r (cost=0.00..4.11 rows=1 width=52) (actual time=7.352..3880.254 rows=600000 loops=1)
Index Cond: (c1 < 1000000)
Planning Time: 0.294 ms
Execution Time: 9503.739 ms
Peak Memory Usage: 5899 kB
(10 rows)
© 2023 NTT DATA Corporation 19
まとめ
YugabyteDBでの実行計画の取得方法と簡単な見方、およびYugabyteDB特有の実行計画に関する機能・仕組みを紹介し
ました。PostgreSQLに慣れた方ならば、それと気づかずにYugabyteDBの実行計画を読めてしまうかもしれません。
どんなDBMSであっても実行計画の読み解きは必要となるスキルなので、ぜひ色々なクエリ、DBMSの実行計画を読んでみましょう。
© 2023 NTT DATA Corporation 20
参考
YugabyteDBのEXPLAIN
https://docs.yugabyte.com/preview/api/ysql/the-sql-language/statements/perf_explain/
PostgreSQLのEXPLAIN
https://www.postgresql.org/docs/current/sql-explain.html
YugabyteDBのHINT句利用方法
https://docs.yugabyte.com/preview/explore/query-1-performance/pg-hint-plan/
© 2022 NTT DATA Corporation
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。

More Related Content

What's hot

PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
 
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
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回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
 
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
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
NTT DATA Technology & Innovation
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
Masahiko Sawada
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
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
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
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
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
NTT DATA Technology & Innovation
 

What's hot (20)

PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 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 と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
 
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開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 

Similar to YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)

Pgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdwPgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdw
Toshi Harada
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニングKensuke Nagae
 
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)Hiromu Shioya
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
Kohei KaiGai
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLakirahiguchi
 
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
Nao Minami
 
PostgreSQL13 新機能紹介
PostgreSQL13 新機能紹介PostgreSQL13 新機能紹介
PostgreSQL13 新機能紹介
Satoshi Hirata
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
Masahiko Sawada
 
そうだ 検証、しよう。
そうだ 検証、しよう。そうだ 検証、しよう。
そうだ 検証、しよう。
健一 三原
 
PostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU CollationPostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU Collation
Noriyoshi Shinoda
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編Yosuke Onoue
 
generate_series関数使い込み
generate_series関数使い込みgenerate_series関数使い込み
generate_series関数使い込み
kawarasho
 
Introduction new features in Spark 3.0
Introduction new features in Spark 3.0Introduction new features in Spark 3.0
Introduction new features in Spark 3.0
Kazuaki Ishizaki
 
Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)
Noriyoshi Shinoda
 
Introduction of Oracle Database Architecture
Introduction of Oracle Database ArchitectureIntroduction of Oracle Database Architecture
Introduction of Oracle Database Architecture
Ryota Watabe
 
[Cloud OnAir] Google Networking Deep Dive ! その技術と設計の紹介 2018年8月9日 放送
[Cloud OnAir] Google Networking Deep Dive ! その技術と設計の紹介 2018年8月9日 放送[Cloud OnAir] Google Networking Deep Dive ! その技術と設計の紹介 2018年8月9日 放送
[Cloud OnAir] Google Networking Deep Dive ! その技術と設計の紹介 2018年8月9日 放送
Google Cloud Platform - Japan
 
20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部
NVIDIA Japan
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方Satoshi Nagayasu
 
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
Kohei KaiGai
 

Similar to YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料) (20)

Pgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdwPgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdw
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
 
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
 
PostgreSQL13 新機能紹介
PostgreSQL13 新機能紹介PostgreSQL13 新機能紹介
PostgreSQL13 新機能紹介
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
そうだ 検証、しよう。
そうだ 検証、しよう。そうだ 検証、しよう。
そうだ 検証、しよう。
 
PostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU CollationPostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU Collation
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
 
generate_series関数使い込み
generate_series関数使い込みgenerate_series関数使い込み
generate_series関数使い込み
 
Introduction new features in Spark 3.0
Introduction new features in Spark 3.0Introduction new features in Spark 3.0
Introduction new features in Spark 3.0
 
Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)
 
Introduction of Oracle Database Architecture
Introduction of Oracle Database ArchitectureIntroduction of Oracle Database Architecture
Introduction of Oracle Database Architecture
 
[Cloud OnAir] Google Networking Deep Dive ! その技術と設計の紹介 2018年8月9日 放送
[Cloud OnAir] Google Networking Deep Dive ! その技術と設計の紹介 2018年8月9日 放送[Cloud OnAir] Google Networking Deep Dive ! その技術と設計の紹介 2018年8月9日 放送
[Cloud OnAir] Google Networking Deep Dive ! その技術と設計の紹介 2018年8月9日 放送
 
20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
 
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
 

More from NTT DATA Technology & Innovation

YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
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のバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(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
 

More from NTT DATA Technology & Innovation (20)

YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
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のバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(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アンカンファレンス@オンライン 発表資料)
 

Recently uploaded

【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 

Recently uploaded (15)

【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 

YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)

  • 1. © 2023 NTT DATA Corporation © 2023 NTT DATA Corporation NewSQL/分散SQLデータベース よろず勉強会 #3 YugabyteDBの実行計画を眺める 2023年2月16日 NTTデータ 笠原辰仁
  • 2. © 2023 NTT DATA Corporation 2 自己紹介 • 笠原 辰仁 (@kasa_zip) • 長年PostgreSQLの検証や周辺ツールの開発、サポートなどに従事 • 最近はNewSQLや分散データベースに属するOSSプロダクトの調査や検証、 適用領域の見極めなど • 本日は、分散データベースのOSSプロダクトであるYugabyteDBの実行計画の取得方法や 情報の見方を解説
  • 3. © 2023 NTT DATA Corporation 3 実行計画とは 発行されたクエリをどのように実行するかをDBMSが生成する情報。一般的にはDBMSのPlannerやOptimizerと呼ばれる機能 が生成する。 通常、あまりユーザ(クエリを発行する人)が実行計画を意識することは無いが、思ったような性能が出ない場合の原因解析やクエ リチューニングを行った効果などを調査したい時に、とても有用なもの。 SELECT * FROM t1 JOIN t2 ON t1.c1 = t2.c1 WHERE t1.c1 < 10; QUERY PLAN -------------------------------------- Nested Loop Join Filter: (t1.c1 = t2.c1) -> Index Scan using t1_pkey on t1 Index Cond: (c1 < 10) -> Seq Scan on t2 YugabyteDB (のPlanner)
  • 4. © 2023 NTT DATA Corporation 4 実行計画の取得方法 YugabyteDBでは他のDBMSと同様にEXPLAINという句をクエリの先頭に付与することで実行計画を取得できる。 クエリは実際には実行されない。出力される情報はPostgreSQLとほぼ同じ。 yugabyte=# EXPLAIN SELECT * FROM r_t1 WHERE c1 < 100; QUERY PLAN ----------------------------------------------------------------------- Index Scan using r_t1_pkey on r_t1 (cost=0.00..4.11 rows=1 width=52) Index Cond: (c1 < 100) (2 rows) yugabyte=# EXPLAIN SELECT * FROM r_t1; QUERY PLAN ---------------------------------------------------------- Seq Scan on r_t1 (cost=0.00..100.00 rows=1000 width=52) (1 row) yugabyte=# EXPLAIN SELECT * FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE r.c1 < 100; QUERY PLAN ------------------------------------------------------------------------------- Nested Loop (cost=0.00..8.23 rows=1 width=104) -> Index Scan using r_t1_pkey on r_t1 r (cost=0.00..4.11 rows=1 width=52) Index Cond: (c1 < 100) -> Index Scan using h_t1_pkey on h_t1 h (cost=0.00..4.11 rows=1 width=52) Index Cond: (c1 = r.c1) (5 rows)
  • 5. © 2023 NTT DATA Corporation 5 実行計画の取得方法 EXPLAINではオプションをいくつか付与することで様々な情報を出力できる。 オプション 説明 ANALYZE 指定したクエリを実行し、実際の所要時間や消費した各種リソース(IOやメモリなど)の情報を出力する。 VERBOSE SELECT列の射影対象や中間処理での出力対象を出力する。 COSTS 実行計画のコスト情報を出力する。デフォルト有効。 TIMING 実行時の所要時間を出力する。ANALYZEの指定が必須でデフォルト有効。 BUFFERS 実行過程における巨大なハッシュやソート処理の一時ファイル書き出しで使用されたバッファサイズを出力す る。ANALYZEの指定が必須。 SUMMARY 実行計画の末尾にプラン作成時間、実行時間、総メモリ消費量などを出力する。デフォルト有効。 FORMAT 実行計画情報の出力形式を指定する。TEXT、JSON、YAML、XMLから選択できデフォルトはTEXT。 DIST ストレージ層のDocDBへの読み書きリクエスト数やDocDBでの所要時間を出力する。 ANALYZEオプションを付与することで実際の所要時間が分かるため多用することが多い。ただし実際にクエリが実行されるため更 新系の処理を対象にするときは注意。(BEGIN; ABORT;で囲うなど工夫がいる) COSTSやTIMING、SUMMARYについては変動要素の強い出力情報になるので、リグレッションテストなどの出力と期待のdiff を取るときなどのノイズ除去として用いられたり、実行計画を簡潔に出力したい場合などに用いる。
  • 6. © 2023 NTT DATA Corporation 6 EXPLAINの文法 EXPLAINでは複数のオプションを組み合わせて使用できる。以下のようにEXPLAIN (オプション [,..]) の形で指定する。 EXPLAIN (ANALYZE, BUFFERS, VERBOSE) SELECT … 上記はANALYZE、BUFFERS、VERBOSEを有効にしている。オプション [on | off] の形を取ることもできる。 EXPLAIN (ANALYZE on, BUFFERS on, COSTS off) SELECT … 上記はANALYZE、BUFFERSを有効にし、COSTSを無効にしている。 EXPLAINは通常のSELECTやUPDATEなどのクエリの他、カーソルのDECLARE、準備文(Prepared Statement)に対する EXECUTEにも使用することができる。 PREPARE p1(int) AS SELECT … WHERE c1 = $1; EXPLAIN (ANALYZE on, BUFFERS on) EXECUTE p1(10); EXPLAIN (ANALYZE on, BUFFERS on) DECLARE cur FOR SELECT …
  • 7. © 2023 NTT DATA Corporation 7 実行計画の見方 => EXPLAIN SELECT * FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE h.c1 < 10; QUERY PLAN ------------------------------------------------------------------------------- Nested Loop (cost=0.00..216.39 rows=1000 width=104) -> Seq Scan on h_t1 h (cost=0.00..102.50 rows=1000 width=52) Filter: (c1 < 10) -> Index Scan using r_t1_pkey on r_t1 r (cost=0.00..0.11 rows=1 width=52) Index Cond: (c1 = h.c1) (5 rows) 赤字部分はノードタイプとも呼ばれ、実行されるスキャン、 結合、集計等の各処理の種別を表す。 基本的にネストの深い方(右の方)から順次実行されていく 代表的なノードタイプには以下がある。 • スキャン:Seq Scan/Index Scan/Index Only Scan • 結合:Nested Loop/Merge Join/Hash Join (Semi/Anti) • 集計:HashAggregate/GroupAggregate • 更新:Insert/Update/Delete • その他:Sort/Limit/Result/Append… など。 ちなみにPostgreSQLにあるBitmapScanは無い まず計画そのものとなるノード情報。
  • 8. © 2023 NTT DATA Corporation 8 実行計画の見方 => EXPLAIN SELECT * FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE h.c1 < 10; QUERY PLAN ------------------------------------------------------------------------------- Nested Loop (cost=0.00..216.39 rows=1000 width=104) -> Seq Scan on h_t1 h (cost=0.00..102.50 rows=1000 width=52) Filter: (c1 < 10) -> Index Scan using r_t1_pkey on r_t1 r (cost=0.00..0.11 rows=1 width=52) Index Cond: (c1 = h.c1) (5 rows) 赤字部分はコストに関する情報で、N.NN .. M.MMはそれぞれ スタートアップコスト(そのノードを開始するための準備コスト)と トータルコスト(ノード処理を一通り完了するまでの総コスト)。 rowsは各ノードで取得する予想行数。 widthは各ノードで取得する列幅の総サイズ。 コストの計算式はPostgreSQLと同様のロジックだが、 YugabyteDB特有の要素がいくつかある。(異なるゾーン やリージョンへの問い合わせコストは別途追加するなど) src/backend/access/yb_access/yb_scan.cの ybcCostEstimate() Plannerが実行計画の作成の根拠とした見積情報。
  • 9. © 2023 NTT DATA Corporation 9 実行計画の見方 => EXPLAIN (ANALYZE on, COSTS off) SELECT r.c1, r.c4 FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE h.c1 < 100; QUERY PLAN --------------------------------------------------------------------------------------- Nested Loop (actual time=12.706..1979.256 rows=99 loops=1) -> Seq Scan on h_t1 h (actual time=7.545..1669.513 rows=99 loops=1) Filter: (c1 < 100) Rows Removed by Filter: 599901 -> Index Scan using r_t1_pkey on r_t1 r (actual time=3.108..3.108 rows=1 loops=99) Index Cond: (c1 = h.c1) Planning Time: 0.127 ms Execution Time: 1979.423 ms Peak Memory Usage: 30 kB (9 rows) 赤字部分は実際にかかった時間や取得した行数情報。 actual timeのNN.NN .. MM.MMは各ノードで最初の1行を取得す るまでの時間(ms)と最後の行を取得するまでの時間(ms)。 rowsは各ノードで取得された件数。 loopsは各ノードが繰り返された回数。 Rows Removed by Filterはスキャンした件数のうち条件により除去 された件数。 loopsが2以上の場合、実際にかかる時間は 「actual time」 * 「loops回数」となる。 loopsが多いものはactual timeが短くても注意すると良い。 実際にクエリを実行した場合の所要時間や取得した件数などの情報。
  • 10. © 2023 NTT DATA Corporation 10 実行計画の見方 => EXPLAIN (ANALYZE on, COSTS off) SELECT r.c1, r.c4 FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE h.c1 < 100; QUERY PLAN --------------------------------------------------------------------------------------- Nested Loop (actual time=12.706..1979.256 rows=99 loops=1) -> Seq Scan on h_t1 h (actual time=7.545..1669.513 rows=99 loops=1) Filter: (c1 < 100) Rows Removed by Filter: 599901 -> Index Scan using r_t1_pkey on r_t1 r (actual time=3.108..3.108 rows=1 loops=99) Index Cond: (c1 = h.c1) Planning Time: 0.127 ms Execution Time: 1979.423 ms Peak Memory Usage: 30 kB (9 rows) 赤字部分はサマリ情報。 Planning Timeはプラン作成にかかった時間。 Execution Timeはクエリ処理にかかった総時間。 Peak Memory Usageはクエリ処理中の最もメモリを消費していた際 の利用量(Tserver上のpostgresバックエンドでの消費量)。 Execution TimeはYugabyteDB内での所要時間となり、 クライアントへ結果を返すなどの通信時間などは含まれない ので注意。 実際にクエリを実行した場合のサマリ情報。
  • 11. © 2023 NTT DATA Corporation 11 実行計画の見方 => EXPLAIN (ANALYZE on, DIST on, COSTS off) SELECT r.c1, r.c4 FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE h.c1 < 100; QUERY PLAN --------------------------------------------------------------------------------------- Nested Loop (actual time=20.376..1765.325 rows=99 loops=1) -> Seq Scan on h_t1 h (actual time=6.409..1478.253 rows=99 loops=1) Filter: (c1 < 100) Rows Removed by Filter: 599901 Storage Table Read Requests: 588 Storage Table Execution Time: 1424.985 ms -> Index Scan using r_t1_pkey on r_t1 r (actual time=2.882..2.882 rows=1 loops=99) Index Cond: (c1 = h.c1) Storage Index Read Requests: 1 Storage Index Execution Time: 2.859 ms Planning Time: 0.085 ms Execution Time: 1765.460 ms Storage Read Requests: 687 Storage Write Requests: 0 Storage Execution Time: 1707.983 ms Peak Memory Usage: 30 kB (16 rows) 赤字部分はストレージ(DocDB)での処理時間や回数の情報。 Storage Table~はSeqScan処理でDocDBへ行われたRPCの回数と所要時間。 Storage Index~はIndex Scan処理でDocDBへ行われたRPCの回数と所要時 間。 Storage Read/Write RequestはDocDBへリクエストされたRPCの総回数。 Storage Execution TimeはDocDBでの処理総時間。 なお、loopsが2以上の場合はStorage~Requestsはその回数だけ実施される。 DISTオプションによる実際にクエリを実行した場合のDocDBでの処理時間やリクエスト回数などの情報。
  • 12. © 2023 NTT DATA Corporation 12 YugabyteDBのユニークな処理 – HashとRange - YugabyteDBではインデックスはデフォルトでハッシュインデックスが利用される。そのため範囲検索を多用する場合はインデックス 定義に注意しておく。 =# CREATE TABLE r_t1 (c1 int, c2 int, c3 int, c4 text, c5 timestamp, primary key (c1 ASC)); -- 主キーはRange =# CREATE TABLE h_t1 (c1 int, c2 int, c3 int, c4 text, c5 timestamp, primary key (c1)); -- 主キーはHash (各テーブルに60万件ほど投入) =# EXPLAIN (ANALYZE on, COSTS off) SELECT * FROM r_t1 WHERE c1 < 100; QUERY PLAN ------------------------------------------------------------------------------- Index Scan using r_t1_pkey on r_t1 (actual time=1.099..1.134 rows=99 loops=1) Index Cond: (c1 < 100) Planning Time: 0.055 ms Execution Time: 1.163 ms Peak Memory Usage: 0 kB (5 rows) =# EXPLAIN (ANALYZE on, COSTS off) SELECT * FROM h_t1 WHERE c1 < 100; QUERY PLAN ----------------------------------------------------------------- Seq Scan on h_t1 (actual time=19.090..2783.098 rows=99 loops=1) Filter: (c1 < 100) Rows Removed by Filter: 599901 Planning Time: 1.557 ms Execution Time: 2783.488 ms Peak Memory Usage: 0 kB (6 rows) 同じInteger型の列に定義した主キーの範囲検索で あっても、ハッシュインデックスではインデックスが効かない
  • 13. © 2023 NTT DATA Corporation 13 YugabyteDBのユニークな処理 – remote filter - YugabyteDBではストレージ層のKVS(DocDB)からデータを読み取り、YSQLの層(postgresのバックエンドプロセス)でFilter や結合を実施する。そのためSeqScanなどは大量のデータをDocDBから読み込むことになる。 =# EXPLAIN (ANALYZE on,DIST on,COSTS off) SELECT * FROM h_t1 WHERE c1 < 100; QUERY PLAN ------------------------------------------------------------------------------- Seq Scan on h_t1 (actual time=13.273..3742.157 rows=99 loops=1) Filter: (c1 < 100) Rows Removed by Filter: 599901 Storage Table Read Requests: 588 Storage Table Execution Time: 3636.899 ms Planning Time: 0.058 ms Execution Time: 3742.478 ms Storage Read Requests: 588 Storage Write Requests: 0 Storage Execution Time: 3636.899 ms Peak Memory Usage: 0 kB (11 rows) Tserver YSQL DocDB データ ここでFilterや結合、 集計を実施 Tserver DocDB Tserver DocDB
  • 14. © 2023 NTT DATA Corporation 14 YugabyteDBのユニークな処理 – remote filter - YugabyteDBではDocDB側へ一部のFilter演算をPushdownし、データのリクエスト量・回数を抑えることが可能。 Pushdownされた処理はRemote Filterとして表示される。 =# SET yb_enable_expression_pushdown TO on; SET =# EXPLAIN (ANALYZE on,DIST on,COSTS off) SELECT * FROM h_t1 WHERE c1 < 100; QUERY PLAN ------------------------------------------------------------------------------- Seq Scan on h_t1 (actual time=1211.024..2408.519 rows=99 loops=1) Remote Filter: (c1 < 100) Storage Table Read Requests: 2 Storage Table Execution Time: 2406.933 ms Planning Time: 0.061 ms Execution Time: 2408.693 ms Storage Read Requests: 2 Storage Write Requests: 0 Storage Execution Time: 2406.933 ms Peak Memory Usage: 14 kB (10 rows) =# EXPLAIN (ANALYZE on,DIST on,COSTS off) SELECT * FROM h_t1 WHERE c1 < 100; QUERY PLAN ----------------------------------------------------------------------------- -- Seq Scan on h_t1 (actual time=13.273..3742.157 rows=99 loops=1) Filter: (c1 < 100) Rows Removed by Filter: 599901 Storage Table Read Requests: 588 Storage Table Execution Time: 3636.899 ms Planning Time: 0.058 ms Execution Time: 3742.478 ms Storage Read Requests: 588 Storage Write Requests: 0 Storage Execution Time: 3636.899 ms Peak Memory Usage: 0 kB (11 rows) Remote Filterが有効に働くと、Storage~のリクエスト数などが 低減し、性能が向上することがある。
  • 15. © 2023 NTT DATA Corporation 15 YugabyteDBのユニークな処理 – batched nested loop - YugabyteDBではDocDB側からRPC経由でデータを取得するため、Nested Loopのような処理はNWレイテンシの影響など を受けやすい。Range分割しているキーで範囲検索をするとある程度まとめてデータを取得できるが、Innerのテーブルへの検索 は多くのLoopとなる。 =# EXPLAIN (ANALYZE on, DIST on, COSTS off, TIMING off) SELECT * FROM r_t1 r1, r_t2 r2 WHERE r1.c1 = r2.c1 AND r1.c1 < 2000; QUERY PLAN ------------------------------------------------------------------------ Nested Loop (actual rows=1999 loops=1) -> Index Scan using r_t1_pkey on r_t1 r1 (actual rows=1999 loops=1) Index Cond: (c1 < 2000) Storage Index Read Requests: 2 -> Index Scan using r_t2_pkey on r_t2 r2 (actual rows=1 loops=1999) Index Cond: (c1 = r1.c1) Storage Index Read Requests: 1 Planning Time: 0.116 ms Execution Time: 309.301 ms Storage Read Requests: 2001 Storage Write Requests: 0 Storage Execution Time: 262.997 ms Peak Memory Usage: 24 kB (13 rows) Innerテーブルとなるr_t2に1999回のアクセス Tserver YSQL DocDB ここでFilterや結合、 集計を実施 Tserver DocDB Tserver DocDB
  • 16. © 2023 NTT DATA Corporation 16 YugabyteDBのユニークな処理 – batched nested loop - YugabyteDBではyb_bnl_batch_sizeという動的に変更できるパラメータがあり、 「ANY(ARRAY[指定した数値分のデータ])」を利用してバッチ的にInnerテーブルへ引き当てに行く。 =# SET yb_bnl_batch_size = 5; =# EXPLAIN (ANALYZE on, DIST on, COSTS off, TIMING off) SELECT * FROM r_t1 r1, r_t2 r2 WHERE r1.c1 = r2.c1 AND r1.c1 < 2000; QUERY PLAN ------------------------------------------------------------------------ YB Batched Nested Loop Join (actual rows=1999 loops=1) Join Filter: (r1.c1 = r2.c1) -> Index Scan using r_t1_pkey on r_t1 r1 (actual rows=1999 loops=1) Index Cond: (c1 < 2000) Storage Index Read Requests: 2 -> Index Scan using r_t2_pkey on r_t2 r2 (actual rows=5 loops=400) Index Cond: (c1 = ANY (ARRAY[r1.c1, $1, $2, $3, $4])) Storage Index Read Requests: 3 Planning Time: 0.134 ms Execution Time: 210.351 ms Storage Read Requests: 1202 Storage Write Requests: 0 Storage Execution Time: 183.998 ms Peak Memory Usage: 237 kB batch_sizeを5にすると、一度のIndex Scanで5件の検索をまとめて行う。 結果的にDocDBへのリクエスト数も減り、性能向上する。 (このケースだとsizeを100に引き上げると40msec程度までレスポンスタイムが改善。)
  • 17. © 2023 NTT DATA Corporation 17 YugabyteDBのユニークなポイント 現時点のYugabyteDBは統計情報を収集しておらず、また活用することもしない。つまりルールベース オプティマイズと同様。 内部では固定値の行見積値を使っているため、想定行数は一定となる。また基本的にインデックスが使える場合はIndex Scan を使用するようになる。ANALYZEはbeta機能として利用可能。 =# EXPLAIN SELECT * FROM r_t1 WHERE c1 = 1; -- 主キーで1件 QUERY PLAN ----------------------------------------------------------------------- Index Scan using r_t1_pkey on r_t1 (cost=0.00..4.11 rows=1 width=52) Index Cond: (c1 = 1) (2 rows) =# EXPLAIN SELECT * FROM r_t1 WHERE c1 < 100; -- 主キー範囲で99件 QUERY PLAN ----------------------------------------------------------------------- Index Scan using r_t1_pkey on r_t1 (cost=0.00..4.11 rows=1 width=52) Index Cond: (c1 < 100) (2 rows) =# EXPLAIN SELECT * FROM r_t1 WHERE c1 > 0; -- 主キー範囲で60万件 QUERY PLAN ----------------------------------------------------------------------- Index Scan using r_t1_pkey on r_t1 (cost=0.00..4.11 rows=1 width=52) Index Cond: (c1 > 0) (2 rows)
  • 18. © 2023 NTT DATA Corporation 18 YugabyteDBのユニークなポイント 前述のとおり統計情報を利用せず、インデックススキャンを積極的に利用する傾向が強いため、必然的にNested Loop結合が 選択されやすい。もともとYugabyteDBでは大量データのスキャンなどは得意としていないので、比較的多くの行を選択したり結 合する場合、HINT句の活用を視野に入れる必要がある。 =# EXPLAIN ANALYZE SELECT * FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE r.c1 < 1000000; QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------- Nested Loop (cost=0.00..8.23 rows=1 width=104) (actual time=8.286..244997.931 rows=600000 loops=1) -> Index Scan using r_t1_pkey on r_t1 r (cost=0.00..4.11 rows=1 width=52) (actual time=7.775..1382.285 rows=600000 loops=1) Index Cond: (c1 < 1000000) -> Index Scan using h_t1_pkey on h_t1 h (cost=0.00..4.11 rows=1 width=52) (actual time=0.387..0.387 rows=1 loops=600000) Index Cond: (c1 = r.c1) Planning Time: 0.212 ms Execution Time: 245603.057 ms Peak Memory Usage: 32 kB (8 rows) =# /*+ HashJoin(r h) */ EXPLAIN ANALYZE SELECT * FROM r_t1 r JOIN h_t1 h ON r.c1 = h.c1 WHERE r.c1 < 1000000; QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------- Hash Join (cost=4.12..106.76 rows=1 width=104) (actual time=4548.694..9061.421 rows=600000 loops=1) Hash Cond: (h.c1 = r.c1) -> Seq Scan on h_t1 h (cost=0.00..100.00 rows=1000 width=52) (actual time=6.727..3051.250 rows=600000 loops=1) -> Hash (cost=4.11..4.11 rows=1 width=52) (actual time=4541.308..4541.309 rows=600000 loops=1) Buckets: 65536 (originally 1024) Batches: 16 (originally 1) Memory Usage: 3725kB -> Index Scan using r_t1_pkey on r_t1 r (cost=0.00..4.11 rows=1 width=52) (actual time=7.352..3880.254 rows=600000 loops=1) Index Cond: (c1 < 1000000) Planning Time: 0.294 ms Execution Time: 9503.739 ms Peak Memory Usage: 5899 kB (10 rows)
  • 19. © 2023 NTT DATA Corporation 19 まとめ YugabyteDBでの実行計画の取得方法と簡単な見方、およびYugabyteDB特有の実行計画に関する機能・仕組みを紹介し ました。PostgreSQLに慣れた方ならば、それと気づかずにYugabyteDBの実行計画を読めてしまうかもしれません。 どんなDBMSであっても実行計画の読み解きは必要となるスキルなので、ぜひ色々なクエリ、DBMSの実行計画を読んでみましょう。
  • 20. © 2023 NTT DATA Corporation 20 参考 YugabyteDBのEXPLAIN https://docs.yugabyte.com/preview/api/ysql/the-sql-language/statements/perf_explain/ PostgreSQLのEXPLAIN https://www.postgresql.org/docs/current/sql-explain.html YugabyteDBのHINT句利用方法 https://docs.yugabyte.com/preview/explore/query-1-performance/pg-hint-plan/
  • 21. © 2022 NTT DATA Corporation その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。