pg_timestamp
Top >
pg_timestamp
ユーザ定義関数がタイムスタンプ文字列のパースのオーバヘッドをスキップするための追加モジュールです。 これも pg_bulkload のパッケージに含まれています。
pg_timestamp_in
このユーザ定義関数は timestamp 型のデータを高速にロードします。 高速に読みこむための入力は、以下の19バイトの型式に限定されます。
2007-01-01 12:34:56
- 年/月/日/時/分/秒 は数字(0x30-0x39)
- 年と月、月と日の間はハイフン(0x2D)
- 年月日と時分秒の間はASCII空白(0x20)
- 時と分、分と秒の間はコロン(0x3A)
- これ以外に、余分な空白やタブを加えてはいけません。
インストール
インストール手順は以下の通りです。インストール先のディレクトリへのアクセス権限は正しく与えられているものとします。
$ cd [directory where postgresql-8.2or3.X.tar.gz is untared]/contrib/
$ tar zxvf pg_bulkload-2.3.X.tar.gz
$ cd pg_bulkload
$ make
$ make install
$ postgresql start
$ psql -f $PGHOME/share/contrib/pg_timestamp.sql database_name
注意点
タイムゾーンを含む入力文字列は高速化の対象外です。 また、上記のフォーマットに合致しないものはPostgreSQLの書式変換ルーチンを通します。 この場合の処理速度は従来のものと同じか、もしくは遅くなります。
pg_timestamp_in は timestamp 型データを高速に読む機能を提供するものの、
通常使われる PostgreSQL の内部関数を置き換えます。
pg_timestampを登録すると、pg_bulkloadに限らず、timestamp型を利用する全ての処理
はこの関数を使うことになります。すなわち、COPY
やINSERT
でもこの関数を利用します。
この影響を避けるためには、pg_timestamp_in をロードの時だけ利用し、
通常時はアンインストールするなどの対応が必要です。