More Related Content
PDF
A12 既存のデータベース環境で分析業務を加速させるには? DB2が実現するソフトウエア分析ソリューション(DB2 BLU Acceleration)の仕... PDF
DLLAB Ignite Update Data Platform PDF
[db tech showcase Tokyo 2014] C25: Facebookが採用した世界最大級の分析基盤とは? by 日本ヒューレット・パッ... PPT
Vc1 idc管理 ご紹介資料 2011-01-20(kmt) PPTX
Apuri she ji_gaido_detaxue_chu_she_ji__v1.2 PPTX
Apuri she ji_gaido_teburushe_ji__v1.0 PPTX
PPTX
Apuri she ji_gaido_detaekusupotoshe_ji__v1.0 Similar to Apuri she ji_gaido_d_bmentenansushe_ji__v1.0
PDF
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門 PDF
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた PDF
Data consistency 入門 data partitioning ガイダンス PDF
PDF
[CTC Forum 2019/10/25] 事例から学ぶ!AWS 移行でデータベースの管理・コストを削減する方法 PDF
Deep Dive: Amazon DynamoDB (db tech showcase 2016) PDF
[D36] Michael Stonebrakerが生み出した列指向データベースは何が凄いのか? ~Verticaを例に列指向データベースのアーキテクチャ... PDF
[DI03] DWH スペシャリストが語る! Azure SQL Data Warehouse チューニングの勘所 PDF
Introduction of Oracle Database Architecture PDF
AWS Black Belt Online Seminar Amazon Redshift PDF
[db tech showcase Tokyo 2016] A13: 最新版VerticaのAnalytics機能を駆使して実現する簡単ログ分析 by日本... PPTX
Database Cloud Service/Exadata Cloud Service/Exadata Cloud at Customer サービスアッ... PPTX
03 kueripahuomansuchiyuninguno shou_fa_ PDF
DynamoDB MyNA・JPUG合同DB勉強会 in 東京 PDF
PDF
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説 PDF
Dat003 伸縮自在!.net ×_azure_sql_database_ PPTX
Dat003 伸縮自在!.net ×_azure_sql_database_ PPTX
PPTX
Vertica 8.1.1(8.1 SP1) 新機能 More from Kaito Tonooka
PDF
PDF
PDF
PPTX
01 shang ji_puroziekushiyon_she_ji_ PPTX
Apuri she ji_gaido_kuraiantojie_sok_she_ji__v1.0 PPTX
Apuri she ji_gaido_detarodoshe_ji__v1.1 PDF
Risosu guan li_noshi_zu_mitobesutopurakuteisu_v1 PDF
Vertica Brochure_2022April1_v4.pdf PPTX
02 kueri zui_shi_hua_notamenopuroziekushiyonshe_ji_ PPTX
Apuri she ji_gaido_puroziekushiyonshe_ji__v1.0 PDF
SCSK_Vertica_MotionBoard.pdf Apuri she ji_gaido_d_bmentenansushe_ji__v1.0
- 1.
- 2.
更新履歴
版 日付 変更者変更内容 備考
1.0 2018年7月3日 大林 加奈子 初版発行
※注意点
社外に提示する際は、本スライド(更新履歴)を削除し、PDF化
してお渡しください
- 3.
- 4.
- 5.
- 6.
VerticaでのDBメンテナンス処理の概要説明
Verticaでは、DBメンテナンスという観点で、下記2点の処理実装の検討が必要
- 統計情報の更新
-Tuple Mover(Moveout/Mergeout)
Vertica#1 Vertica#2 Vertica#3 Vertica#4 Vertica#5
Data#1 Data#2 Data#3 Data#4 Data#5
Read Optimized Store(ROS)
Data#1
Data#2
Data#3
Data#4
Data#5
ソースデータ
Write Optimized Store(WOS)
Data#1 Data#2 Data#3 Data#4 Data#5
• ディスク上
• ソート済/圧縮済
• 分散化
• 大量データを直接ロード
• メモリ上
• 未ソート/非圧縮
• 分散化
• 低レイテンシ/少量で短時
間のInsert
どちらにも
ロード可能TUPLE MOVER(Moveout)
非同期データ転送
- 7.
- 8.
Tuple Mover -moveout
MoveoutはWOSからROSへデータを非同期に移動させる内部処理
メモリー(WOS:Write Optimized Store)
メモリー上では、データは行単位で置かれる(未圧縮)
日付 顧客ID 店舗 エリア 売上高
0706 10001 横浜 神奈川 9,999
0706 10002 新宿 東京 3,000
日付 顧客ID 店舗 エリア 売上高
0706 10001 横浜 神奈川 9,999
0706 10002 新宿 東京 3,000
日付 顧客ID 店舗 エリア 売上高
0707 10001 横浜 神奈川 7,777
0707 10002 新宿 東京 9,000
日付 顧客ID 店舗 エリア 売上高
0707 10001 横浜 神奈川 7,777
0707 10002 新宿 東京 9,000
日付 売上高
0706 9,999
3,000
0707 7,777
9,000
エリア 店舗 日付 売上高 顧客ID
神奈川 横浜 0706 9,999 10001
0707 7,777 10001
東京 新宿 0706 3,000 10002
0707 9,000 10002
ディスク(ROS:Read Optimized Store) ディスクへ定期的にマージされながら、移動される(Moveout)
日付 売上高
0706 12,999
0707 16,777
Moveout
- 9.
Tuple Mover -moveout
日付 売上高
0701 100
1,000
0702 1,0000
0703 2,400
1,600
6,400
0705 1,000
0706 1,100
1,300
プロジェクション-1 プロジェクション-2
エリア 店舗 日付 売上高 顧客ID
大阪 梅田 0703 2,400 10004
0706 1,100 10008
東京 池袋 0703 1,600 10005
品川 0705 1,000 10007
新宿 0701 100 10001
1,000 10002
0703 6,400 10006
名古屋 名古屋 0702 1,0000 10003
0706 1,300 10009
日付 売上高
0706 9,999
3,000
0707 7,777
9,000
エリア 店舗 日付 売上高 顧客ID
神奈川 横浜 0706 9,999 10001
0707 7,777 10001
東京 新宿 0706 3,000 10002
0707 9,000 10002
ディスクへ移動されたタイミングでは、2つの固まりとして保存される。
このタイミングでのクエリは2つの固まりを読み結果を返す。
日付 売上(SUM)
0706 12,999
0707 16,777
日付 売上(SUM)
0701 1,100
0702 1,0000
0703 10,400
0705 1,000
0706 2,400
プロジェクション-3
データは、ソート/圧縮/エンコードされ、
列形式のファイルに格納される
- 10.
Tuple Mover -mergeout
日付 売上高
0701 100
1,000
0702 1,0000
0703 2,400
1,600
6,400
0705 1,000
0706 1,100
1,300
9,999
3,000
0707 7,777
9,000
プロジェクション-1 プロジェクション-2
エリア 店舗 日付 売上高 顧客ID
大阪 梅田 0703 2,400 10004
0706 1,100 10008
神奈川 横浜 0706 9,999 10001
0707 7,777 10001
東京 池袋 0703 1,600 10005
品川 0705 1,000 10007
新宿 0701 100 10001
1,000 10002
0703 6,400 10006
0706 3,000 10002
0707 9,000 10002
名古屋 名古屋 0702 1,0000 10003
0706 1,300 10009
定期的に、2つのファイルが1つにマージされて、最適化された形になる。
Postgresで必要なバキュームなどの必要は無く、Verticaが定期的に、未使用
領域の開放などをこのマージ中に実施する。
日付 売上(SUM)
0701 1,100
0702 1,0000
0703 10,400
0705 1,000
0706 14,999
0707 16,777
プロジェクション-3
Mergeout
Mergeoutは、ROSコンテナを統合し、
断片化することを軽減
- 11.
- 12.
統計情報更新の種類と実行方式
12
ANALYZE_ROW_COUNT ANALYZE_STATISTICS ANALYZE_HISTOGRAM
概要
•全テーブル・プロジェクショ
ンの行数のみをカウント
• 統計情報全要素を更新
• ANALYZE_HISTOGRAMコマンド
のエイリアス
• ANALYZE_STATISTICSはサンプル
パーセンテージが10%
(Default)
• 統計情報全要素を更新
• サンプルのパーセンテージ(1
~100%)を指定可能
発行方法 自動発行
※60秒毎(Default)
手動発行 手動発行
実行コマンド 実行間隔を下記コマンドで変更可
能
=> SELECT
SET_CONFIG_PARAMETER(‘AnalyzeRo
wCountInterval’, 秒数);
ロード直後等、データが大きく変
わった場合に、下記の通り発行
=> SELECT ANALYZE_STATISTICS
(‘(schema_name.)table-name’);
※全テーブルの統計情報を取得す
る場合は、(‘’)とします。
※「 ‘(schema_name.)table-
name.column_name’」を指定する
と、カラム単位でも取得可能です。
ロード直後等、データが大きく変
わった場合に、下記の通り発行
=> SELECT ANALYZE_HISTOGRAM
(‘(schema_name.)table-name’,
percent);
※全テーブルの統計情報を取得す
る場合は、(‘’)とします。
※「 ‘(schema_name.)table-
name.column_name’」を指定する
と、カラム単位でも取得可能です。
- 13.
- 14.
- 15.
Tuple Mover -Moveoutに関するパラメーター
15
パラメーター名 デフォルト値 変更を検討すべきか否か パラメーターの説明
MoveOutInterval 300秒(5分) Trickleロードが頻繁に発生
し、WOSが溢れる可能性が
ある場合は、実行間隔を短
くするなど検討
WOSからROSへ転送すべき新データが無い
かどうかをTuple Moverが確認する周期
(秒)
MoveOutMaxAgeTime 1800秒(30分) 変更する必要なし WOS上にあるデータが強制的にディスク
に書き込まれる周期(秒)
MoveOutSizePct 0%(閾値なし)
(※)
変更する必要なし Moveout処理が実行されるための、WOSの
データ量の閾値(%)
(※)この場合、WOSの最大値までWOSでデータが格納され、最大値に達すると、Moveout処理が実行されます。
- 16.
Tuple Mover -Mergeoutに関するパラメーター
16
パラメーター名 デフォルト値 変更を検討すべきか否か パラメーターの説明
ActivePartitionCount 1 テーブルにパーティション
キーを設定している場合、
データの挿入方法によって
は変更を検討
Tuple Moverはパーティションテーブルの
最新のパーティションにのみデータが挿
入されることを前提とする。もしそうで
ない場合、このパラメーターを設定する
ことで、同時にデータを受け取り可能な
パーティションの数を設定可能
MergeOutInterval 600秒(10分) Moveoutの実行間隔を短く
した場合、Mergeoutの実行
間隔も必要に応じて短くす
ることを検討
Mergeoutすべき新ファイルがROS上に無い
かどうかをTuple Moverが確認する周期
(秒)。ROSコンテナが頻繁に追加されて
いる場合、この値を小さく取る必要があ
り
MaxROSPerStratum 32 変更する必要なし Mergeoutが実行されるROSの閾値になりま
す。Defaultの場合、ROSの数が32個に達す
ると、Mergeoutが発行される。ただし、
この値を変更することは通常ない
- 17.
ActivePartitionCount=1の場合の動作例
前提:日付でパーティション
ロード処理概要:当日、前日、前々日までのデータが混在
動作例:
1. 当日のデータをロードする。(当日データの複数のROS
コンテナが生成される。)
2. 前日のデータをロードする。(当日のROSコンテナが1つ
に統合されつつ、前日データには複数のROSコンテナが
生成される。)
ベストプラクティス
左記のようなロード処理の場合、ActivePartitionCount=3とする
動作例:
1. 当日のデータをロードする。(当日データの複数のROS
コンテナが生成される。)
2. 前日のデータをロードする。(当日のROSコンテナはそ
のままで、前日データには複数のROSコンテナが生成さ
れる。)
17
当日 前日 前々日
当日 前日 前々日
当日 前日 前々日
当日 前日 前々日
ActivePartitionCountの最適な設定について
任意のテーブルにパーティションキーを設定している場合要検討
ActivePartitionCount=1の場合、別日のデータが挿入されるたびに、該当以外のパーティションに含まれ
るROSのマージ処理が走るためシステム負荷が高まり、ユーザークエリに性能影響がでる可能性あり!
- 18.
- 19.
統計情報の確認方法
どの種類の統計情報がいつ取得されているのかの確認方法
確認実行SQL
実行結果例
-統計情報を手動取得している場合
- 統計情報を手動取得していない場合
19
=> select SELECT PROJECTION_NAME,PROJECTION_COLUMN_NAME,STATISTICS_TYPE,STATISTICS_UPDATED_TIMESTAMP
FROM PROJECTION_COLUMNS
WHERE TABLE_NAME = 'テーブル名' AND TABLE_SCHEMA = 'スキーマ名'
ORDER BY 1,2;
PROJECTION_NAME | PROJECTION_COLUMN_NAME | STATISTICS_TYPE | STATISTICS_UPDATED_TIMESTAMP
-----------------+------------------------+-----------------+-------------------------------
trades_p_b0 | ask | FULL | 2017-06-01 02:09:04.408772+00
trades_p_b0 | bid | FULL | 2017-06-01 02:09:04.408772+00
trades_p_b0 | stock | FULL | 2017-06-01 02:09:04.408772+00
PROJECTION_NAME | PROJECTION_COLUMN_NAME | STATISTICS_TYPE | STATISTICS_UPDATED_TIMESTAMP
-----------------+------------------------+-----------------+-------------------------------
trades_p_b0 | ask | ROWCOUNT | 2017-06-01 02:07:03.045345+00
trades_p_b0 | bid | ROWCOUNT | 2017-06-01 02:07:03.045345+00
trades_p_b0 | stock | ROWCOUNT | 2017-06-01 02:07:03.045345+00
- 20.
統計情報の確認方法
その他の確認方法
統計情報が取得されているかどうかを確認
統計情報更新が手動実行されたかどうかを確認
20
=>SELECT GET_PROJECTION_STATUS('public.trades_p_b0');
GET_PROJECTION_STATUS
---------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
Current system K is 1.
# of Nodes: 3.
public.trades_p_b0 [Segmented: Yes] [Seg Cols: "public.trades.stock", "public.trades.bid", "public.trades.ask"] [K:
1] [public.trades_p_b1] [Safe: Yes] [UptoDate: Yes] [Stats: Yes]
(1 row)
=> SELECT PROJECTION_NAME,HAS_STATISTICS
FROM PROJECTIONS
WHERE ANCHOR_TABLE_NAME = 'trades' AND PROJECTION_SCHEMA = 'public';
PROJECTION_NAME | HAS_STATISTICS
-----------------+----------------
trades_p_b0 | t
trades_p_b1 | t
(2 rows) 手動取得されている場合:’t’
手動取得されていない場合:’f’
No:RowCountsも取得されていない状態
RowCounts:RowCountsのみ取得されている状態
Yes:手動取得されている場合
- 21.
- 22.
Tuple Mover関連処理のモニタリング
システムテーブルtuple_mover_operationsで確認可能
Moveoutの状況確認
Mergeoutの状況確認
Analyze Statisticsの状況確認
22
=> SELECT node_name, projection_name, plan_type, operation_start_timestamp, operation_status
FROM TUPLE_MOVER_OPERATIONS WHERE plan_type = ‘Moveout’ and table_name=‘trades’ ORDER BY 1,2,3,4;
node_name | projection_name | plan_type | operation_start_timestamp | operation_status
-----------------+-----------------+-----------+-------------------------------+------------------
v_demo_node0001 | trades_p_b1 | Moveout | 2017-06-01 02:11:03.018112+00 | Start
v_demo_node0001 | trades_p_b1 | Moveout | 2017-06-01 02:11:03.051374+00 | Complete
=> SELECT node_name, projection_name, plan_type, operation_start_timestamp, operation_status
FROM TUPLE_MOVER_OPERATIONS WHERE plan_type = ‘Mergeout’ and table_name=‘trades’ ORDER BY 1,2,3,4;
node_name | projection_name | plan_type | operation_start_timestamp | operation_status
-----------------+-----------------+------------+-------------------------------+------------------
v_demo_node0001 | trades_p_b1 | Mergeout | 2017-06-01 03:11:03.018112+00 | Start
v_demo_node0001 | trades_p_b1 | Mergeout | 2017-06-01 03:11:03.051374+00 | Complete
=> SELECT node_name, projection_name, plan_type, operation_start_timestamp, operation_status
FROM TUPLE_MOVER_OPERATIONS WHERE plan_type = ‘Analyze Statistics’ and table_name=‘trades’ ORDER BY 1,2,3,4;
node_name | projection_name | plan_type | operation_start_timestamp | operation_status
-----------------+-----------------+----------------------+-------------------------------+------------------
v_demo_node0001 | trades_p_b1 | Analyze Statistics | 2017-06-01 03:11:03.018112+00 | Start
v_demo_node0001 | trades_p_b1 | Analyze Statistics | 2017-06-01 03:11:03.051374+00 | Complete
WHERE句にoperation_status=‘Running’
を付与することで、実行中のものに
絞って参照可能
- 23.
関連ページ
Best Practicesfor Statistics Collection(英語)
Collecting Database Statistics (英語)
Tuple Mover Best Practices(英語)
- 上記記事の日本語版はこちら
Vertica Partitions: The FAQs (英語)
- 上記記事の日本語版はこちら
Tuple Mover Operations (英語)
Managing the Tuple Mover(英語)
23
- 24.