はじめに
本記事は、SQL Profileの利用方法をご紹介します。SQL Profileは、既存のテーブルで管理されているデータをスクリプトでチェックし、不必要に確保されているカラム長や、実データに合った最適なデータ型を確認することができるパッケージです。
Verticaは、クエリの実行時に実データ長ではなく、カラム長をもとにメモリを確保します。
不要にカラム長を大きくとりすぎた場合は、その分のメモリも確保するので、パフォーマンスは低下する(※)可能性があります。
このような場合に、SQL Profileの実行結果をもとに、最適なデータ型、カラム長を再設定することで、パフォーマンスの改善が期待できます。
(※)カラム長による性能劣化についての詳細は、以下リンク先をご参照ください。
http://vertica-tech.ashisuto.co.jp/column_length/
使用方法
利用スクリプト
SQL Profileに含まれるスクリプトは、以下のとおりです。スクリプト名 | 説明 |
---|---|
profile.sql | SQL Profileを実行するためのスクリプトです。 |
tabsel.sql | profile.sqlの実行対象テーブルを定義するためのスクリプトです。 |
profile_scenario.sql | SQL Profileのテスト用サンプルテーブルの作成、データの挿入を行うスクリプトです。 お客様自身のテーブルに対してSQL Profileを実施する場合、こちらのスクリプトは不要です。 |
スクリプト実行手順
以下の手順にて、各カラムに格納されているデータのサイズ、実データに合った最適なデータ型を確認します。
Step1:SQL Profileのダウンロード
Step2:「tabsel.sql」の編集、実行
Step3:「profile.sql」の実行
Step4:出力された「out.sql」の確認
Step1:SQL Profileのダウンロード
以下リンク先のGitHubから、「tabsel.sql」、「profile.sql」ダウンロードし、任意のディレクトリに配置します。
※改行コードはLFに設定してください。
https://github.com/marco-the-sane/sqlprofile
Step2:「tabsel.sql」の編集、実行
テーブル定義を見直すスキーマ・テーブル名を 「tabsel.sql」 に記述します。
編集完了後、tabsel.sqlを実行し、「profile.sql」の実行に必要になる、tbidテーブルを作成します。
1 |
$ vsql -f tabsel.sql |
作成されたテーブル 「tbid」 に、指定したテーブルがリストアップされていることを確認します。
1 2 3 4 5 6 7 8 9 |
SQL=> SELECT * FROM tbid; /*** 実行例 ***/ table_schema | table_name | reduction_filter -------------+------------+------------------ public | DATE1 | public | PART | public | SUPPLIER | public | CUSTOMER | public | LINEORDER | |
Step3:「profile.sql」の実行
dbadminユーザで「profile.sql」を実行し、結果を 「out.sql」 へ出力します。
1 |
$ vsql -f profile.sql | tee out.sql |
※profile.sql の実行にあたって、以下の注意事項をご確認ください。
・実行の際、dbadminユーザのパスワード入力を数回求められます。
・実行には高い負荷がかかります。
可能であればメンテナンス期間を設けてご実施いただくことをお勧めします。
・指定したテーブル数分のビューが作成されます。
例:「CUSTOMER」テーブルを指定した場合、「CUSTOMER_pv」ビューが作成されます。
・実行には高い負荷がかかります。
可能であればメンテナンス期間を設けてご実施いただくことをお勧めします。
・指定したテーブル数分のビューが作成されます。
例:「CUSTOMER」テーブルを指定した場合、「CUSTOMER_pv」ビューが作成されます。
Step4:出力された「out.sql」の確認
「out.sql」を開き、チェック対象で指定したスキーマ名に接尾辞 「_new」 がついた CREATE SCHEMA と、
最適化したデータ型・カラム長の CREATE TABLE が出力されていることを確認します。
参考情報
SQL Profilehttps://github.com/marco-the-sane/sqlprofile