Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
MariaDB ColumnStore
ベンチマークしちゃいませんか?
JPMUG 代表 カワノ
ColumnStoreとは?
ColumnStoreの歴史
ColumnStoreとは?
チューニングレスで高い検索パフォーマ
ンスを実現するDWH特化型データベース
ColumnStoreとは?
• 分析/集計処理に最適なカラムストアエンジン
• MySQLとの互換性
• 専用HD不要
• リニアにスケールアウト
アーキテクチャ
• 大規模並列処理(Massively Parallel Processing)
アーキテクチャ
大規模並列処理
Clients
User
Module
Performance
Module
ColumnStore Distributed
Data Storage
User sessions
MariaDB
SQL Fron...
アーキテクチャ
対称型マルチプロセッシング(SMP)
Clients
User
Module
Performance
Module
ColumnStore Distributed
Data Storage
User sessions
Maria...
アーキテクチャ
Extent Map
• 物理的なセグメントファイル内
に存在する論理ブロック
• エクステント及び対応するブ
ロックを管理
• データの抽出と配置は、エクス
テントマップにより高速で処理
される
• リアルタイム解凍と圧縮
•...
アーキテクチャ
Extent Map
SELECT
COL – D
FROM
TABLE
WHERE
COL - D BETWEEN 110 AND 180
;
アーキテクチャ
Extent Map
SELECT
COL – D
FROM
TABLE
WHERE
COL - D BETWEEN 110 AND 180
;
リニアにスケールアウト
12
おまけ
Transaction
Engine Transactions XA
Columnstore YES NO
MyISAM NO NO
InnoDB YES YES
Transaction
ColumnStore vs InnoDB
sysbench
# sysbench --test=oltp --db-driver=mysql --mysql-socket=/usr/local/mariadb/colu...
TPC-H Benchmark
InnoDB vs ColumnStore
TPC-H Benchmark
DWH 用ベンチマーク
http://www.tpc.org/tpch/
TPC-H Benchmark
HammerDB
HammerDB 2.23 を使用
http://www.hammerdb.com/
TPC-H Benchmark
検証環境
最小構成 検証環境
CPU 8 core Intel / AMD 8 core Intel (Core i7-4790K)
Memory 32GB 32GB
Storage 適切なRAID冗長構成を組ん...
HammerDB Install
TPC-H Benchmark
HammerDB Install
• Release 2.23 for Linux 64-bit をダウンロード
• 実行権限を付与した上でインストーラを実行
TPC-H Benchmark
HammerDB Install
実行権限付与
# chmod a+x HammerDB-2.23-Linux-x86-64-Install
#./HammerDB-2.23-Linux-x86-64-Insta...
TPC-H Benchmark
HammerDB 起動確認
起動
# cd /usr/local/HammerDB-2.23
# ./hammerora.tcl
起動時に下記エラーが出る場合
wish8.5: error while loadi...
TPC-H Benchmark
HammerDB 初期値設定
config.xml編集
# cd /usr/local/HammerDB-2.23
# vi config.xml
TPC-H Benchmark
HammerDB 初期値設定
<?xml version="1.0" encoding="utf-8">
<hammerdb>
...
<benchmark>
<rdbms>MySQL</rdbms>
<bm>T...
データベース作成
TPC-H Benchmark
InnoDBデータベース作成
MySQL Host 127.0.0.1
MySQL Port 3306
MySQL User root
MySQL User password rootのパスワード
MySQL D...
TPC-H Benchmark
InnoDBデータベース作成
TPC-H Benchmark
ColumnStore データベース作成
InnoDB用 TPC-H データベースおよびテーブル確認
# mcsmysql -u root -p -D tpch
...
MariaDB [tpch]> show ...
TPC-H Benchmark
ColumnStore データベース作成
全てのテーブルをCSV出力
MariaDB [tpch]> SELECT * FROM customer INTO
OUTFILE '/usr/local/mariadb...
TPC-H Benchmark
ColumnStore データベース作成
データベース作成
MariaDB [tpch]> CREATE DATABASE tpch_mcs CHARACTER SET utf8;
Query OK, 1 row...
TPC-H Benchmark
ColumnStore データベース作成
テーブル作成
MariaDB [tpch_mcs]> CREATE TABLE nation (
N_NATIONKEY INTEGER NOT NULL,
N_NAME...
TPC-H Benchmark
ColumnStore CSVインポート
全のCSVファイルをインポート
# cpimport tpch_mcs customer '/usr/…/tpch/customer.csv' -s ',' -E '"'...
データサイズ確認
TPC-H Benchmark
Table行数
Table_schema Table_name Rows
tpch lineitem 58,025,902
tpch orders 14,807,501
tpch partsupp 9,691,9...
TPC-H Benchmark
データサイズ確認
InnoDB
MariaDB [tpch_mcs]> use tpch;
...
MariaDB [tpch]> SELECT
table_schema ,
table_name ,
engin...
TPC-H Benchmark
データサイズ確認
ColumnStore
MariaDB [tpch]> call columnstore_info.table_usage( NULL, NULL);
TPC-H Benchmark
データサイズ比較 (GB)
InnoDB ColumnStore
Table_schema Table_name Data Index Total Data Dict Total
tpch lineitem 7....
TPC-H Benchmark
データサイズ比較 (GB)
InnoDBと比較してデータサイズが51%減少
大幅なDisk I/O削減が期待できる
クエリ書き換え
TPC-H Benchmark
クエリ書き換え
Query # Error
Query 2 ERROR 1815 (HY000): Internal error: IDB-3012: Scalar filter and semi join ar...
TPC-H Benchmark
Query 2
TPC-H Benchmark
Query 5
TPC-H Benchmark
Query 17
TPC-H Benchmark
Query 19
TPC-H Benchmark
hdb_tpch.tcl書き換え
hdb_tpch.tcl のクエリを書き換える
# cd /usr/local/HammerDB-2.23
# vi hdb_tpch.tcl
TPC-H Benchmark
hdb_tpch.tcl書き換え
#TPCH QUERY GENERATION
proc set_query { myposition } {
global sql
set sql(1) "select l_re...
TPC-H Benchmark
hdb_tpch.tcl download
JPMUG-KK/MariaDB
https://github.com/JPMUG-KK/MariaDB
my.cnf 編集
TPC-H Benchmark
my.cnf 編集
# cd /usr/local/mariadb/columnstore/mysql
# vi my.conf
…
# You can set .._buffer_pool_size up to...
ベンチマーク実行
TPC-H Benchmark
ベンチマーク実行
MySQL Host 127.0.0.1
MySQL Port 3306
MySQL User root
MySQL User password rootのパスワード
MySQL Databas...
TPC-H Benchmark
ベンチマーク実行
TPC-H Benchmark
ベンチマーク実行
Virtual Users 1
User Delay(ms) 0
Repeat Delay(ms) 0
Iterations 1
Show Output Check
Log Output Tem...
TPC-H Benchmark
ベンチマーク実行
ベンチマーク結果
TPC-H Benchmark
ベンチマーク比較(sec)
Engine
Query
1 2 3 4 5 6 7 8 9 10 11
InnoDB 83.21 17.97 28.69 2.46 76.25 16.04 7.54 22.17 23...
TPC-H Benchmark
ベンチマーク比較
TPC-H Benchmark
ベンチマーク比較
TPC-H Benchmark
考察
• ColumnStoreの真価を発揮できているだろうか?
• ColumnStoreの真価は並列処理とエクステントマップの有効活用
TPC-H Benchmark
実行計画を取得する
• EXPLAINでは有益な情報を得られない
• 専用関数 calSetTrace(), calGetTrace() を使用する
TPC-H Benchmark
実行計画を取得する
MariaDB [tpc_mcs]> select calSetTrace(1);
MariaDB [tpc_mcs]> select l_returnflag, l_linestatus, ...
TPC-H Benchmark
実行計画を取得する
Desc Mode Table TableOID ReferencedColumns PIO LIO PBE Elapsed Rows
BPS PM lineitem 4042 (L_DISC...
TPC-H Benchmark
エクステントマップ確認
• 調査対象のカラムOID取得
• editemプロセスからエクステントマップ情報を取得
• 引数にカラムID必須
エクステントマップ確認
カラムOID取得
Select
`schema`,
`tablename`,
`columnname`,
`objectid`
From
calpontsys.syscolumn
Where
`schema` = ‘対象...
エクステントマップ確認
editemプロセスから情報取得
[myuser@srv1~]# /usr/local/mariadb/columnstore/bin/editem -o 4043
Col OID = 4043, NumExtents ...
TPC-H Benchmark
エクステントマップ確認
state Num min max seqNum fbo DBRoot part# seg# HWM
valid 5306368 - 5310463 (4096) 130551998 13...
まとめ
TPC-H Benchmark
まとめ
•ColumnStoreはInnoDBと比較して7倍高速
• ただし並列処理の恩恵のみ
TPC-H でベンチマークする場合エクステントマップの恩恵は得られない
• エクステントマップの恩恵を得られれば
更...
TPC-H Benchmark
CPU使用率傾向の違い
InnoDB ColumnStore
おまけ
mariadb-columnstore-samples
Flight data source
• mariadb-corporation/mariadb-columnstore-
samples
• https://github.com/mar...
mariadb-columnstore-samples
Flight data summary
TableName Rows InnoDB ColumnStore
Flight 約2,300万 2.46GB 1.24GB
airports 34...
全米フライトデータ可視化アプリで違いを体感しよう
https://youtu.be/U3gDRTskh7Q
ベンチマークしちゃいませんか?
Thank you so, so much!
MariaDB ColumnStore ベンチマークしちゃいませんか?
Upcoming SlideShare
Loading in …5
×

MariaDB ColumnStore ベンチマークしちゃいませんか?

1,091 views

Published on

MariaDB ColumnStore に対するHammerDBを用いたTPC-Hベンチマークのやり方をレクチャー。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

MariaDB ColumnStore ベンチマークしちゃいませんか?

  1. 1. MariaDB ColumnStore ベンチマークしちゃいませんか? JPMUG 代表 カワノ
  2. 2. ColumnStoreとは?
  3. 3. ColumnStoreの歴史
  4. 4. ColumnStoreとは? チューニングレスで高い検索パフォーマ ンスを実現するDWH特化型データベース
  5. 5. ColumnStoreとは? • 分析/集計処理に最適なカラムストアエンジン • MySQLとの互換性 • 専用HD不要 • リニアにスケールアウト
  6. 6. アーキテクチャ • 大規模並列処理(Massively Parallel Processing)
  7. 7. アーキテクチャ 大規模並列処理 Clients User Module Performance Module ColumnStore Distributed Data Storage User sessions MariaDB SQL Front End Query Engine Local Storage, SAN EBS,HDFS…
  8. 8. アーキテクチャ 対称型マルチプロセッシング(SMP) Clients User Module Performance Module ColumnStore Distributed Data Storage User sessions MariaDB SQL Front End Query Engine Local Storage, SAN EBS,HDFS…
  9. 9. アーキテクチャ Extent Map • 物理的なセグメントファイル内 に存在する論理ブロック • エクステント及び対応するブ ロックを管理 • データの抽出と配置は、エクス テントマップにより高速で処理 される • リアルタイム解凍と圧縮 • バージョンバッファーファイル (UNDO)
  10. 10. アーキテクチャ Extent Map SELECT COL – D FROM TABLE WHERE COL - D BETWEEN 110 AND 180 ;
  11. 11. アーキテクチャ Extent Map SELECT COL – D FROM TABLE WHERE COL - D BETWEEN 110 AND 180 ;
  12. 12. リニアにスケールアウト 12
  13. 13. おまけ Transaction Engine Transactions XA Columnstore YES NO MyISAM NO NO InnoDB YES YES
  14. 14. Transaction ColumnStore vs InnoDB sysbench # sysbench --test=oltp --db-driver=mysql --mysql-socket=/usr/local/mariadb/columnstore/mysql/lib/mysql/mysql.sock --num-threads=1 --max-requests=500 --max-time=0 --oltp-test-mode=complex --mysql-user=sbtest --mysql-password=sbtest --oltp-test-mode=nontrx --oltp-nontrx-mode=insert run ※ columnstoreは並列度が1じゃないとlockエラーするのでnum-threads=1で比較
  15. 15. TPC-H Benchmark InnoDB vs ColumnStore
  16. 16. TPC-H Benchmark DWH 用ベンチマーク http://www.tpc.org/tpch/
  17. 17. TPC-H Benchmark HammerDB HammerDB 2.23 を使用 http://www.hammerdb.com/
  18. 18. TPC-H Benchmark 検証環境 最小構成 検証環境 CPU 8 core Intel / AMD 8 core Intel (Core i7-4790K) Memory 32GB 32GB Storage 適切なRAID冗長構成を組んだローカル ディスク、もしくはネットワーク接続スト レージ。 240GB(RAID0) 対応OS RHEL/CentOS v6, v7 Ubuntu 16.04 LTS Debian v8 SUSE 12 CentOS Linux release 7.3.1611(Core)
  19. 19. HammerDB Install
  20. 20. TPC-H Benchmark HammerDB Install • Release 2.23 for Linux 64-bit をダウンロード • 実行権限を付与した上でインストーラを実行
  21. 21. TPC-H Benchmark HammerDB Install 実行権限付与 # chmod a+x HammerDB-2.23-Linux-x86-64-Install #./HammerDB-2.23-Linux-x86-64-Install …インストールウィザードで導入
  22. 22. TPC-H Benchmark HammerDB 起動確認 起動 # cd /usr/local/HammerDB-2.23 # ./hammerora.tcl 起動時に下記エラーが出る場合 wish8.5: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory # yum install libXScrnSaver
  23. 23. TPC-H Benchmark HammerDB 初期値設定 config.xml編集 # cd /usr/local/HammerDB-2.23 # vi config.xml
  24. 24. TPC-H Benchmark HammerDB 初期値設定 <?xml version="1.0" encoding="utf-8"> <hammerdb> ... <benchmark> <rdbms>MySQL</rdbms> <bm>TPC-H</bm> </benchmark> ... </hammerdb> ... <mysql> ... <tpch> <schema> <mysql_scale_fact>1</mysql_scale_fact> <mysql_tpch_user>root</mysql_tpch_user> <mysql_tpch_pass>root_password</mysql_tpch_pass> <mysql_tpch_dbase>tpch</mysql_tpch_dbase> <mysql_num_tpch_threads>1</mysql_num_tpch_threads> <mysql_tpch_storage_engine>innodb</mysql_tpch_storage_engine> </schema> ... </tpch>
  25. 25. データベース作成
  26. 26. TPC-H Benchmark InnoDBデータベース作成 MySQL Host 127.0.0.1 MySQL Port 3306 MySQL User root MySQL User password rootのパスワード MySQL Database tpch Data Warehouse Storage engine innodb Scale Factor 10 Virtual Users Build Schema 1
  27. 27. TPC-H Benchmark InnoDBデータベース作成
  28. 28. TPC-H Benchmark ColumnStore データベース作成 InnoDB用 TPC-H データベースおよびテーブル確認 # mcsmysql -u root -p -D tpch ... MariaDB [tpch]> show tables; +----------------------+ | Tables_in_tpch | +----------------------+ | customer | | lineitem | | nation | | orders | | part | | partsupp | | region | | supplier | +----------------------+
  29. 29. TPC-H Benchmark ColumnStore データベース作成 全てのテーブルをCSV出力 MariaDB [tpch]> SELECT * FROM customer INTO OUTFILE '/usr/local/mariadb/columnstore/mysql/tpch/customer.csv’ FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; …
  30. 30. TPC-H Benchmark ColumnStore データベース作成 データベース作成 MariaDB [tpch]> CREATE DATABASE tpch_mcs CHARACTER SET utf8; Query OK, 1 row affected (0.00 sec) MariaDB [tpch]> use tpch_mcs; Database changed …
  31. 31. TPC-H Benchmark ColumnStore データベース作成 テーブル作成 MariaDB [tpch_mcs]> CREATE TABLE nation ( N_NATIONKEY INTEGER NOT NULL, N_NAME CHAR(25) NOT NULL, N_REGIONKEY INTEGER NOT NULL, N_COMMENT VARCHAR(152)) ENGINE=columnstore DEFAULT CHARSET=utf8; …
  32. 32. TPC-H Benchmark ColumnStore CSVインポート 全のCSVファイルをインポート # cpimport tpch_mcs customer '/usr/…/tpch/customer.csv' -s ',' -E '"' … DB TABLE File path option
  33. 33. データサイズ確認
  34. 34. TPC-H Benchmark Table行数 Table_schema Table_name Rows tpch lineitem 58,025,902 tpch orders 14,807,501 tpch partsupp 9,691,914 tpch part 1,980,115 tpch customer 1,485,848 tpch supplier 99,036 tpch nation 25 tpch region 5 Scale Factor = 10 Virtual Users Build Schema = 1 Scale Factor=1 で作成した場合lineitemの行数が 600万行程度 エクステントマップが効かないので 10 で作成 ※ ※
  35. 35. TPC-H Benchmark データサイズ確認 InnoDB MariaDB [tpch_mcs]> use tpch; ... MariaDB [tpch]> SELECT table_schema , table_name , engine , table_rows AS tbl_rows , avg_row_length AS rlen , FORMAT( (data_length + index_length) / (1024*1024*1024), 2) AS All_GB , FORMAT( (data_length) / (1024*1024*1024), 2) AS Data_GB , FORMAT( (index_length) / (1024*1024*1024), 2) AS Index_GB FROM information_schema.tables WHERE TABLE_SCHEMA='tpch’ ORDER BY (data_length + index_length) DESC;
  36. 36. TPC-H Benchmark データサイズ確認 ColumnStore MariaDB [tpch]> call columnstore_info.table_usage( NULL, NULL);
  37. 37. TPC-H Benchmark データサイズ比較 (GB) InnoDB ColumnStore Table_schema Table_name Data Index Total Data Dict Total tpch lineitem 7.83 7.55 15.38 3.03 1.94 4.97 tpch orders 1.84 0.59 2.42 0.61 1.38 1.99 tpch partsupp 1.93 0.19 2.11 0.22 1.00 1.22 tpch part 0.30 0.00 0.30 0.52 0.44 0.96 tpch customer 0.27 0.02 0.29 0.45 0.38 0.83 tpch supplier 0.02 0.00 0.02 0.01 0.13 0.14 tpch nation 0.01 0.00 0.01 0.01 0.01 0.01 tpch region 0.01 0.00 0.01 0.01 0.01 0.01 Total 20.54 10.13
  38. 38. TPC-H Benchmark データサイズ比較 (GB) InnoDBと比較してデータサイズが51%減少 大幅なDisk I/O削減が期待できる
  39. 39. クエリ書き換え
  40. 40. TPC-H Benchmark クエリ書き換え Query # Error Query 2 ERROR 1815 (HY000): Internal error: IDB-3012: Scalar filter and semi join are not from the same pair of tables. Query 5 ERROR 1815 (HY000): Internal error: IDB-1003: Circular joins are not supported. Query 17 ERROR 1815 (HY000): Internal error: IDB-3012: Scalar filter and semi join are not from the same pair of tables. Query 19 ERROR 1815 (HY000): Internal error: IDB-1000: 'lineitem' and 'part' are not joined. ColumnStoreで実行する場合クエリを書き換える必要がある
  41. 41. TPC-H Benchmark Query 2
  42. 42. TPC-H Benchmark Query 5
  43. 43. TPC-H Benchmark Query 17
  44. 44. TPC-H Benchmark Query 19
  45. 45. TPC-H Benchmark hdb_tpch.tcl書き換え hdb_tpch.tcl のクエリを書き換える # cd /usr/local/HammerDB-2.23 # vi hdb_tpch.tcl
  46. 46. TPC-H Benchmark hdb_tpch.tcl書き換え #TPCH QUERY GENERATION proc set_query { myposition } { global sql set sql(1) "select l_returnflag, l_linestatus, sum(l_quantity)… set sql(2) "select s_acctbal, s_name, n_name, p_partkey, p_mfgr… … set sql(5) "select n_name, sum(l_extendedprice * (1 - l_discount)) … … set sql(17) "select sum(l_extendedprice) / 7.0 as avg_yearly from … … set sql(19) "select sum(l_extendedprice * (1 - l_discount)) as revenue … … set sql(22) "select cntrycode, count(*) as numcust, sum(c_acctbal) as } 6,081 ~ 6,106 行目
  47. 47. TPC-H Benchmark hdb_tpch.tcl download JPMUG-KK/MariaDB https://github.com/JPMUG-KK/MariaDB
  48. 48. my.cnf 編集
  49. 49. TPC-H Benchmark my.cnf 編集 # cd /usr/local/mariadb/columnstore/mysql # vi my.conf … # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high innodb_buffer_pool_size = 20GB #innodb_additional_mem_pool_size = 20M # Set .._log_file_size to 25 % of buffer pool size #innodb_log_file_size = 100M #innodb_log_buffer_size = 8M #innodb_flush_log_at_trx_commit = 1 #innodb_lock_wait_timeout = 50 InnoDBでベンチマーク時のみ有効にする
  50. 50. ベンチマーク実行
  51. 51. TPC-H Benchmark ベンチマーク実行 MySQL Host 127.0.0.1 MySQL Port 3306 MySQL User root MySQL User password rootのパスワード MySQL Database tpch or tpch_mcs Data Warehouse Storage engine innodb Scale Factor 10 Virtual Users Build Schema 1
  52. 52. TPC-H Benchmark ベンチマーク実行
  53. 53. TPC-H Benchmark ベンチマーク実行 Virtual Users 1 User Delay(ms) 0 Repeat Delay(ms) 0 Iterations 1 Show Output Check Log Output Temp Uncheck
  54. 54. TPC-H Benchmark ベンチマーク実行
  55. 55. ベンチマーク結果
  56. 56. TPC-H Benchmark ベンチマーク比較(sec) Engine Query 1 2 3 4 5 6 7 8 9 10 11 InnoDB 83.21 17.97 28.69 2.46 76.25 16.04 7.54 22.17 234.23 4.77 2.01 ColumnStore 7.74 1.38 1.87 7.86 2.82 0.63 8.29 1.81 8.02 2.32 0.39 Engine Query 12 13 14 15 16 17 18 19 20 21 22 InnoDB 110.70 20.71 2.64 39.38 2.83 5.40 - 2.38 1.35 12.96 0.82 ColumnStore 1.43 4.02 1.05 1.36 1.37 12.48 6.69 3.45 3.36 12.32 4.67
  57. 57. TPC-H Benchmark ベンチマーク比較
  58. 58. TPC-H Benchmark ベンチマーク比較
  59. 59. TPC-H Benchmark 考察 • ColumnStoreの真価を発揮できているだろうか? • ColumnStoreの真価は並列処理とエクステントマップの有効活用
  60. 60. TPC-H Benchmark 実行計画を取得する • EXPLAINでは有益な情報を得られない • 専用関数 calSetTrace(), calGetTrace() を使用する
  61. 61. TPC-H Benchmark 実行計画を取得する MariaDB [tpc_mcs]> select calSetTrace(1); MariaDB [tpc_mcs]> select l_returnflag, l_linestatus, sum(l_quantity) as sum_qty, … MariaDB [tpc_mcs]> select calGetTrace();
  62. 62. TPC-H Benchmark 実行計画を取得する Desc Mode Table TableOID ReferencedColumns PIO LIO PBE Elapsed Rows BPS PM lineitem 4042 (L_DISCOUNT, L_EXTENDEDPRICE, L_LINESTATUS, L_QUANTITY, L_RETURNFLAG, L_SHIPDATE, L_TAX) 136074 278562 0 7.451 488 TNS UM 7.354 4 Partition Blocks Eliminated • エクステントマップにより読み飛ばしたブロックサイズ • この値が0の場合、エクステントマップの恩恵を得られていない Query 1 実行計画
  63. 63. TPC-H Benchmark エクステントマップ確認 • 調査対象のカラムOID取得 • editemプロセスからエクステントマップ情報を取得 • 引数にカラムID必須
  64. 64. エクステントマップ確認 カラムOID取得 Select `schema`, `tablename`, `columnname`, `objectid` From calpontsys.syscolumn Where `schema` = ‘対象スキーマ名’ and `tablename` = ‘対象テーブル名’ and `tablename` = ‘対象カラム名’ ;
  65. 65. エクステントマップ確認 editemプロセスから情報取得 [myuser@srv1~]# /usr/local/mariadb/columnstore/bin/editem -o 4043 Col OID = 4043, NumExtents = 8, width = 4 5306368 - 5310463 (4096) min: 130551998, max: 130987966, seqNum: 1, state: valid, fbo: 0, DBRoot: 1, part#: 0, seg#: 0, HWM: 0; status: avail 5468160 - 5472255 (4096) min: 130551998, max: 130987966, seqNum: 1, state: valid, fbo: 0, DBRoot: 1, part#: 0, seg#: 1, HWM: 0; status: unavail 5621760 - 5625855 (4096) min: 130551998, max: 130987966, seqNum: 1, state: valid, fbo: 0, DBRoot: 1, part#: 0, seg#: 2, HWM: 0; status: unavail …
  66. 66. TPC-H Benchmark エクステントマップ確認 state Num min max seqNum fbo DBRoot part# seg# HWM valid 5306368 - 5310463 (4096) 130551998 130987966 1 0 1 0 0 0 valid 5468160 - 5472255 (4096) 130551998 130987966 1 0 1 0 1 0 valid 5621760 - 5625855 (4096) 130551998 130987966 1 0 1 0 2 0 valid 5775360 - 5779455 (4096) 130551998 130987966 1 0 1 0 3 0 valid 5928960 - 5933055 (4096) 130551998 130987966 1 4096 1 0 0 8191 valid 6074368 - 6078463 (4096) 130551998 130987966 1 4096 1 0 1 8191 valid 6219776 - 6223871 (4096) 130551998 130987966 1 4096 1 0 2 8191 valid 6365184 - 6369279 (4096) 130551998 130987966 1 4096 1 0 3 4725 各エクステントの MIN/MAX値 が同値=絞り込み不可 lineitem テーブル l_shipdateカラム エクステントマップ詳細
  67. 67. まとめ
  68. 68. TPC-H Benchmark まとめ •ColumnStoreはInnoDBと比較して7倍高速 • ただし並列処理の恩恵のみ TPC-H でベンチマークする場合エクステントマップの恩恵は得られない • エクステントマップの恩恵を得られれば 更に高速化できる余地はある
  69. 69. TPC-H Benchmark CPU使用率傾向の違い InnoDB ColumnStore
  70. 70. おまけ
  71. 71. mariadb-columnstore-samples Flight data source • mariadb-corporation/mariadb-columnstore- samples • https://github.com/mariadb-corporation/mariadb- columnstore-samples/tree/master/flights # このサンプルでは2016年のデータのみ • 2013~2017 flight data • https://downloads.mariadb.com/ColumnStore/sampledata /flights/
  72. 72. mariadb-columnstore-samples Flight data summary TableName Rows InnoDB ColumnStore Flight 約2,300万 2.46GB 1.24GB airports 342 0.06MB 9.55MB airlines 17 0.02MB 2.25MB
  73. 73. 全米フライトデータ可視化アプリで違いを体感しよう https://youtu.be/U3gDRTskh7Q
  74. 74. ベンチマークしちゃいませんか?
  75. 75. Thank you so, so much!

×