-
2020-06-15 Swarm64 DA
PostgreSQL高速化モジュール Swarm64 DA(ver.4.1.0)~検証編②~
PostgreSQLの高速化モジュールであるSwarm64 DAはデータローディングに対しても大きな効果を発揮します。Nativeテーブルとの実行時間を比較することでよりその性能を知ることができるでしょう。
はじめに
みなさん、こんにちは、インサイトの梅宮です。本日はPostgreSQLの高速化モジュールであるSwarm64 DAのデータローディングの性能を確かめるべく、大量データをINSERTする場合、Swarm64 DAと通常のPostgreSQLとで実行時間や秒間のINSERT処理にどの程度の差が見られるのかを検証しましたのでご紹介します。
検証方法
pgbenchを利用して並行処理化したデータのINSERTをNativeテーブルとSwarm64 DA外部テーブルに流す。
データベース設計
NativeテーブルのDDL
CREATE TABLE ins_n (
o_orderkey bigint primary key,
o_custkey int NOT NULL,
o_orderstatus character(1) NOT NULL,
o_totalprice numeric(13,2) NOT NULL,
o_orderdate date NOT NULL,
o_orderpriority character(15) NOT NULL,
o_clerk character(15) NOT NULL,
o_shippriority int NOT NULL,
o_comment character varying(79) NOT NULL
);
Swarm64 DA外部テーブルのDDL
CREATE FOREIGN TABLE ins_s (
o_orderkey bigint NOT NULL, o_custkey int NOT NULL, o_orderstatus character(1) NOT NULL,
o_totalprice numeric(13,2) NOT NULL,
o_orderdate date NOT NULL,
o_orderpriority character(15) NOT NULL,
o_clerk character(15) NOT NULL,
o_shippriority int NOT NULL,
o_comment character varying(79) NOT NULL
)
SERVER swarm64da_server OPTIONS(
range_index 'o_orderdate',
primary_key_hint 'PRIMARY KEY (o_orderkey)');
挿入データ
以下のようなデータを100万件持ったテーブルから挿入する。
"5996547911","86183725","F","164039.85","1992-08-13","5-LOW","Clerk#000058053","0","kages eat after the special excuses. ru"
データ挿入クエリ
Nativeテーブル、Swarm64 DA外部テーブルどちらに対しても同様のSQLを実行
INSERT INTO テーブル名 SELECT * FROM insert_table;
※上記SQLをinsert.sqlというSQLファイルに格納
pgbenchのコマンド
- コネクション数:100
- スレッド数:1
- トランザクション:1
- 1トランザクションあたり100万件
各テーブルにデータ挿入処理を100並列で流します。
pgbench -U postgres -h localhost -c 100 -j 1 -t 1 -n -f insert.sql -d insdb
検証結果
まず上記の図から、NativeテーブルとSwarm64 DA外部テーブルのlatency average(1トランザクションあたりの経過時間平均値)を比較してみると、Swarm64DA 外部テーブルはNativeテーブルよりも約24倍早いという結果が出ました。
また、処理に使用したデータ総数とlatency averageからSwarm64 DA外部テーブルにおけるINSERT処理は毎秒約1500万件でした。
まとめ
今回はSwarm64 DAの性能を、INSERT処理速度をNativeテーブルと比較することでご紹介しました。今回は100万件という大量のデータを使用して検証しましたが、100万件以上のデータ挿入に対してSwarm64 DAは効果を発揮することも私たちの検証から明らかになっています。
以前のブログではTPC-Hベンチマークを用いてSELECT文の高速化処理を紹介しましたが、今回の検証でINSERTに対しても効果を発揮するということが理解できたのではないでしょうか。
大量のデータに対する問い合わせだけでなく、大量データの挿入にも大変有効な機能です。
終わりに
次回もSwarm64の性能や効果を理解してもらうために新たな検証結果をご紹介したいと思っています。
また現在進行形でSwarm64 DAの最新版ユーザーガイドの翻訳も行なっております。
本日はどうもありがとうございました。
お問い合わせフォーム
https://www.insight-ltd.co.jp/contact/
関連記事
PostgreSQL高速化モジュール Swarm64 DA-入門編-
PostgreSQL高速化モジュール Swarm64 DA-導入編①-
PostgreSQL高速化モジュール Swarm64 DA-導入編②-
PostgreSQL高速化モジュール Swarm64 DA-検証編①-
参考記事
https://www.postgresql.jp/document/11/html/pgbench.html
https://docs.snowflake.com/ja/user-guide/sample-data-tpch.html