このページでは例題「性能監視」のアーカイブを試験ごとにまとめています。OSS-DB技術者認定試験の出題範囲に含まれる技術分野の学習にお役立てください。
修正等により、例題番号が連番ではない場合がございます。あらかじめご了承ください。
postgres=# EXPLAIN SELECT relname,nspname FROM pg_class left join pg_namespace ON (pg_class.relnamespace = pg_namespace.oid);
QUERY PLAN
-------------------------------------------------------------------------
Hash Left Join (cost=1.14..15.97 rows=288 width=128)
Hash Cond: (pg_class.relnamespace = pg_namespace.oid)
-> Seq Scan on pg_class (cost=0.00..10.88 rows=288 width=68)
-> Hash (cost=1.06..1.06 rows=6 width=68)
-> Seq Scan on pg_namespace (cost=0.00..1.06 rows=6 width=68)
(5 行)
例題解説の提供:株式会社デージーネット OSS研究室 後藤 慎司 氏 |
---|
例題解説の提供:株式会社デージーネット OSS研究室 奥原 章太 氏 |
---|
例題解説の提供:株式会社デージーネット OSS研究室 橋本 知里 氏 |
---|
例題解説の提供:株式会社デージーネット OSS研究室 大野 公善 氏 |
---|
例題解説の提供:株式会社メトロシステムズ OSS-DB Gold 認定者 岡野 慎也 氏 |
---|
EXPLAIN ANALYZE SELECT * FROM pgbench_accounts a
JOIN pgbench_branches b ON (a.bid = b.bid) WHERE a.aid = 10000;
上記問い合わせの実行計画(EXPLAIN ANALYZE)を確認したところ、下記の出力であった。
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------
Nested Loop (cost=0.00..2891.02 rows=1 width=461) (actual time=4.589..64.393 rows=1 loops=1)
Join Filter: (a.bid = b.bid)
-> Seq Scan on pgbench_accounts a (cost=0.00..2890.00 rows=1 width=97) (actual time=4.555..64.356 rows=1 loops=1)
Filter: (aid = 10000)
Rows Removed by Filter: 99999
-> Seq Scan on pgbench_branches b (cost=0.00..1.01 rows=1 width=364) (actual time=0.007..0.008 rows=1 loops=1)
Total runtime: 64.557 ms
(7 rows)
上記問い合わせをより高速にするために行うこととして最も適切なものをひとつ選びなさい。 なお、各テーブルの構成は下記のようになっている。
----------------------------------------------------
Table "public.pgbench_accounts"
Column | Type | Modifiers
---------- + --------------- + -----------
aid | integer | not null
bid | integer |
abalance | integer |
filler | character(84) |
----------------------------------------------------
----------------------------------------------------
Table "public.pgbench_branches"
Column | Type | Modifiers
---------- + --------------- + -----------
bid | integer | not null
bbalance | integer |
filler | character(88) |
Indexes:
"pgbench_branches_pkey" PRIMARY KEY, btree (bid)
----------------------------------------------------
pgbench_accountsのabalance列にインデックスを作成する
pgbench_accountsのaid列にインデックスを作成する
pgbench_branchesを対象にANALYZEを実行する
例題解説の提供:OSS-DBアカデミック認定校 NTTテクノクロス株式会社 OSS-DB Gold 認定者 勝俣 智成 氏 |
---|
例題解説の提供:株式会社メトロシステムズ 佐藤 千佳 氏 |
---|
例題解説の提供:株式会社メトロシステムズ 佐藤 千佳 氏 |
---|
pg_statio_all_tablesから、対象テーブルのバッファヒット数を取得することができる。
例題解説の提供:株式会社メトロシステムズ OSS-DB Gold 認定者 岡野 慎也 氏 |
---|
tup_fetchedはインデックススキャンを使用して読み取った行数が格納される。
例題解説の提供:株式会社メトロシステムズ 成瀬 智一 氏 |
---|
例題解説の提供:OSS-DBアカデミック認定校 NTTテクノクロス株式会社 OSS-DB Gold 認定者 勝俣 智成 氏 |
---|
pg_classでは、テーブルのほか、ビューやインデックスの情報も扱う。
例題解説の提供:OSS-DBアカデミック認定校 NTTテクノクロス株式会社 OSS-DB Gold 認定者 中津川 保 |
---|
EXPLAIN ANALYZE SELECT *
FROM table1 t1, table2 t2
WHERE t1.unique1 < 100 AND t1.unique2 = t2.unique2;
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------
Nested Loop (cost=0.00..352.17 rows=97 width=16) (actual time=0.033..1.875 rows=100 loops=1)
-> Index Scan using table1_i1 on table1 t1 (cost=0.00..24.05 rows=97 width=8) (actual time=0.016..0.218 rows=100 loops=1)
Index Cond: (unique1 < 100)
-> Index Scan using table2_i2 on table2 t2 (cost=0.00..3.27 rows=1 width=8) (actual time=0.004..0.006 rows=1 loops=100)
Index Cond: (t2.unique2 = t1.unique2)
Total runtime: 2.065 ms
この結果言えることとして、誤っているものを2つ選択せよ。
例題解説の提供:OSS-DBアカデミック認定校 NTTテクノクロス株式会社 OSS-DB Gold 認定者 中津川 保 氏 |
---|
プランナが SQL の最適な実行計画を作成するために利用される。
© EDUCO All Rights Reserved.