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億のデータのパフォーマンステスト結果を以下に示します。 画像をクリックしてパフォーマンス結果を拡大してください。
両方に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億のデータのパフォーマンステスト結果を以下に示します。 画像をクリックしてパフォーマンス結果を拡大してください。
両方に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億のデータのパフォーマンステスト結果を以下に示します。 画像をクリックしてパフォーマンス結果を拡大してください。
両方に2億のデータが含まれている場合、範囲の日付と月をまたいで検索すると、パーティションテーブルは非パーティションテーブルよりも約39.97%高速になります
'2008-06-20'から '2008-07-10'までの範囲の日付とクロス月で検索;
取得されたレコード= 12220658
パーティションテーブル= 1310.766秒
非パーティションテーブル= 1834.743秒
結論
パーティションテーブルと非パーティションテーブルの間でいくつかのパフォーマンステストを行った結果、明らかに、このパフォーマンステストでパーティションテーブルが完全に勝ちました。