Verticaではプロジェクションを最適化することで、データが最適な順番でソートされるため、検索パフォーマンスを向上させることができます。
Databae Designer(DBD)で最適化を実行後、意図した順番でソートされているか確認したい場合は、DBD実行時に出力されるデプロイファイル(XXX_deploy.sql)で確認できますが、vsql上からも確認できます。
プロジェクションのソート順の確認方法
1)以下のSQLを実行し、ソート順を確認したいプロジェクション(テーブル)のプロジェクション名を確認します。
1 2 3 4 |
SELECT * FROM projections WHERE projection_schema='スキーマ名' AND anchor_table_name='テーブル名'; |
例)table1のプロジェクション名を確認する場合
1 2 3 4 5 6 7 8 9 10 |
dbadmin=> SELECT anchor_table_name,projection_name dbadmin-> FROM projections dbadmin-> WHERE projection_schema='public' dbadmin-> AND dbadmin-> anchor_table_name='table1'; anchor_table_name | projection_name -------------------+------------------- table1 | table1_DBD_seg_b0 table1 | table1_DBD_seg_b1 (2 rows) |
2)以下のSQLを実行し、手順1)で確認したプロジェクションのソート順を確認します。
1 2 3 4 5 6 7 8 |
SELECT table_name,table_column_name,column_position,sort_position FROM projection_columns WHERE table_schema='スキーマ名' AND table_name='テーブル名' AND projection_name='手順1)で確認したプロジェクション名' ORDER BY column_position; |
※K-safetyが1以上になっている場合は、レプリカのプロジェクションが存在するため、手順1)の例のように、1つのテーブルに対して複数のプロジェクションが存在します。その場合は、どちらか一方のプロジェクション名を指定します。
例)table1_DBD_seg_b0プロジェクションのソート順を確認する場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
dbadmin=> SELECT table_name,table_column_name,column_position,sort_position dbadmin-> FROM projection_columns dbadmin-> WHERE table_schema='public' dbadmin-> AND dbadmin-> table_name='table1' dbadmin-> AND dbadmin-> projection_name='table1_DBD_seg_b0' dbadmin-> ORDER BY column_position; table_name | table_column_name | column_position | sort_position ------------+-------------------+-----------------+--------------- table1 | 日付 | 0 | table1 | 顧客ID | 1 | table1 | 店舗 | 2 | 1 table1 | エリア | 3 | 0 table1 | 売上高 | 4 | (5 rows) |
上記例の場合、table1のプロジェクションは、エリア列、店舗列の順にソートされていることが確認できます。
[projection_columns]
列名 | 内容 |
---|---|
table_name | テーブル名 |
table_column_name | 列名 |
column_position | 列の順番 数字が小さい列から順に並んでいる |
sort_position | 列のソート順 数字が小さい列から順にソートされている(「0」が1番目のソート列、「1」が2番目のソート列)。 ソート対象外の列は空白になる。 |
参考情報
admintoolsを利用したDatabase Designerの実行手順http://vertica-tech.ashisuto.co.jp/execute-database-designer-using-admintools/