PostgreSQLでテーブルパーティションを実行する方法がわからない場合は、

PostgreSQL(パーティションの作成)のパーティションテーブル – 第1部

ここでは、パーティションテーブルに何百万というデータを挿入する方法を示す簡単な関数を提供します。

--create sequence for testing

CREATE SEQUENCE hashvalue__PT__serial START 1;

--Generate Dynamic data for testing
CREATE OR REPLACE FUNCTION hashvalue__PT__InsertRandomRecords(in a__no__of__records integer) RETURNS integer AS $$
DECLARE
    v__counter integer;
    vhash varchar(255);
    v__date varchar(15);
BEGIN

    v__counter := 1;

    RAISE NOTICE 'No of records insert : %', a__no__of__records;

    WHILE (v__counter <= a__no__of__records) LOOP

    IF( v__counter % 10000 =0) THEN
        RAISE NOTICE 'Counter here is %', v__counter;
    END IF;


    v__date := trunc(random() **  27) +1;
    vhash := '00' || nextval('hashvalue__PT__serial');

    --insert into partiton table
    INSERT INTO hashvalue__pt(
            hash, hashtime)
            VALUES (E'\\003\\002\\001\\0151'::bytea || vhash::bytea , date ('2008-01-' || v__date));
    INSERT INTO hashvalue__pt(
            hash, hashtime)
            VALUES (E'\\003\\002\\001\\0151'::bytea || vhash::bytea, date ('2008-02-' || v__date));
    INSERT INTO hashvalue__pt(
            hash, hashtime)
            VALUES (E'\\003\\002\\001\\0151'::bytea || vhash::bytea, date ('2008-03-' || v__date));
    INSERT INTO hashvalue__pt(
            hash, hashtime)
            VALUES (E'\\003\\002\\001\\0151'::bytea || vhash::bytea, date ('2008-04-' || v__date));
    INSERT INTO hashvalue__pt(
            hash, hashtime)
            VALUES (E'\\003\\002\\001\\0151'::bytea || vhash::bytea, date ('2008-05-' || v__date));
    INSERT INTO hashvalue__pt(
            hash, hashtime)
            VALUES (E'\\003\\002\\001\\0151'::bytea || vhash::bytea , date ('2008-06-' || v__date));
    INSERT INTO hashvalue__pt(
            hash, hashtime)
            VALUES (E'\\003\\002\\001\\0151'::bytea || vhash::bytea, date ('2008-07-' || v__date));
    INSERT INTO hashvalue__pt(
            hash, hashtime)
            VALUES (E'\\003\\002\\001\\0151'::bytea || vhash::bytea, date ('2008-08-' || v__date));
    INSERT INTO hashvalue__pt(
            hash, hashtime)
            VALUES (E'\\003\\002\\001\\0151'::bytea || vhash::bytea, date ('2008-09-' || v__date));
    INSERT INTO hashvalue__pt(
            hash, hashtime)
            VALUES (E'\\003\\002\\001\\0151'::bytea || vhash::bytea, date ('2008-10-' || v__date));


    v__counter := v__counter + 1;

    END LOOP;

    RETURN 0;
END;
$$ LANGUAGE plpgsql;

パーティションテーブルのパフォーマンステストのためのデータをシミュレートする簡単な “hashvalue

PT

InsertRandomRecords”関数を作成しました。

select **  from hashvalue__PT__InsertRandomRecords(20000000);

ハハ..ワンショットは200百万のデータを挿入します。さて、私は10ヶ月で200万のデータを持っています。次のセッションでは、パーティションと非パーティションテーブル間のパフォーマンステストを開始します。リンク://database/performance-testing-on-partition-table-inをご覧ください。 -postgresql-part-3/[PostgreSQLのパーティションテーブルのパフォーマンステスト – 第3部]