PostgreSQLのパーティションテーブルのパフォーマンステスト - 第3部

PostgreSQLのパーティションテーブルのパフォーマンステスト-パート3

パーティションテーブルと非パーティションテーブルの間でパフォーマンステストを行います。

これが2つのテーブルで、どちらにも200 millionsのデータが含まれています。

1)hashvalue_pt(月のパーティションテーブル)
2)ハッシュ値(非パーティトンテーブル)

P.S Please visit Partition Table In PostgreSQL (Create Partition) – Part 1 If you do not know how to do table partition in PostgreSQL, and visit Partition Table In PostgreSQL (Simulate Millions Data) – Part 2 to simulate millions of data to test it.

指定日のパフォーマンステスト

--partition table
SELECT * FROM hashvalue_PT WHERE hashtime = DATE '2008-08-01'

--non partition table
SELECT * FROM hashvalue WHERE hashtime = DATE '2008-08-01'

100万から2億のデータのパフォーマンステスト結果を以下に示します。 画像をクリックしてパフォーマンス結果を拡大してください。

performance-test-on-partition-table-postgresql-1

両方に2億のデータが含まれている場合、指定された日付に検索すると、パーティションテーブルは非パーティションテーブルよりも約144.45%高速になります

指定された日付「2008-08-01」で検索
取得されたレコード= 741825
パーティションテーブル= 359.61秒
非パーティションテーブル= 879.062秒

同じ月の範囲日のパフォーマンステスト

--partition table
SELECT * FROM hashvalue_PT WHERE  hashtime >= DATE '2008-05-01' AND hashtime <= '2008-05-15';

--non partition table
SELECT * FROM hashvalue WHERE hashtime >= DATE '2008-05-01' AND hashtime <= '2008-05-15';

100万から2億のデータのパフォーマンステスト結果を以下に示します。 画像をクリックしてパフォーマンス結果を拡大してください。

performance-test-on-partition-table-postgresql-2

両方に2億のデータが含まれている場合、同じ月の範囲の日付で検索すると、パーティションテーブルは非パーティションテーブルよりも高速で約209.84%

'2008-05-01'から '2008-05-15'までの同じ月の範囲の日付で検索;
取得されたレコード= 11112338
パーティションテーブル= 603.328秒
非パーティションテーブル= 1869.375秒

1か月を超える範囲の日付でのパフォーマンステスト

--partition table
SELECT * FROM hashvalue_PT WHERE  hashtime >= DATE '2008-06-20' AND hashtime <= '2008-07-10';

--non partition table
SELECT * FROM hashvalue WHERE hashtime >= DATE '2008-06-20' AND hashtime <= '2008-07-10';

100万から2億のデータのパフォーマンステスト結果を以下に示します。 画像をクリックしてパフォーマンス結果を拡大してください。

performance-test-on-partition-table-postgresql-3

両方に2億のデータが含まれている場合、範囲の日付と月をまたいで検索すると、パーティションテーブルは非パーティションテーブルよりも約39.97%高速になります

'2008-06-20'から '2008-07-10'までの範囲の日付とクロス月で検索;
取得されたレコード= 12220658
パーティションテーブル= 1310.766秒
非パーティションテーブル= 1834.743秒

結論

パーティションテーブルと非パーティションテーブルの間でいくつかのパフォーマンステストを行った結果、明らかに、このパフォーマンステストでパーティションテーブルが完全に勝ちました。