「PostgreSQL」カテゴリーアーカイブ

PostgreSQL:年、月、日、時、分、秒以下を切り捨てて取得する方法

OracleでのTRUC関数と類似したものにPostgreSQLではDATE_TRUNC関数があります。

DATE_TRUNC関数は「DATE_TRUNC([‘精度’],[列名])」形式で指定する事で取得できます。

使用例

サンプルテーブル「goods」

クエリー(SQL)

サンプルテーブル「goods」のtype_code=’102’のadd_dateをサンプルとしてDATE_TRUNC関数で抽出してみます。

出力結果

PostgreSQLの定期メンテナンス

PostgreSQLの大きな特徴として追記型のアーキテクチャであることです。このことによりデータが更新される度に使われないタプル(tuple)が蓄積されていきます。
PostgreSQLに必要な保守作業は、この使用されることのないタブルを解放し利用できる領域にすることが必須となっています。

この作業を行うのがVACUUMコマンドです。

VACUUMを実行するとデータベースのパフォーマンスを向上させることができます。
VACUUMには、VACUUM FULLと標準VACUUMがあります。
VACUUM FULLは、システムへの負荷が大きく作業に長時間を要します。

膨大な量のデータ削除を行った時や利用可能なディスク容量が急迫した等の緊急時以外は、VACUUM FULLは行うべきではありません。
標準VACUUMを定期的に行っていいれば、VACUUM FULLを実行する必要性が発生する頻度を低減させることができます。

また、なんとなくVACUUMを行うのではなく、pgAdminなどを使用してデッドタプル(不要領域)を確認してうえで実行することが重要です。
PostgreSQL8.1以降では、autovacuumが実装されていますのでメンテナンスにかかる負荷も低減されています。

データの一括登録に便利。PostgreSQLのCOPYコマンド

PostgreSQL独自のSQLコマンドとしてCOPYコマンドが実装されています。
これはサーバ上にあるCSVファイルからある表に、一括してデータを流し込むこ操作を行うことの出来るコマンドとなっています。

コマンドは通常のSQLと同様にpsql上から発行できます。
表の全列にデータを流し込む場合には、以下の書式になります。

insert分などと同様に、表の一部の列にだけデータを流し込むことも可能です。
その場合のSQLの記述方法は以下となります。

また、サーバ側にCSVファイルがない場合、psqlの標準入力からCSV形式でデータを入力することも可能です。その場合には以下の書式となります。

PostgreSQLCOPYコマンドはデータ一括登録時時に便利なので覚えておくのも良いかもしれません。

PostgreSQLのバージョン番号

PostgreSQLのバージョンは「9.1.14」の様に2つのピリオドに区切られた3つの数字で表記されています。
左から2つは、メジャーバージョンを表し、最後の1つはマイナーバージョンを表しています。
例えば、9.1.14なら、メジャーバージョンが9.1、マイナーバージョンが14となります。
メジャーバージョンアップは1年毎、マイナーバージョンアップは、年に3回~5回程度実施されます。
このバージョンをアップすることを維持管理と呼び、2015年1月27日現在で維持管理の対象となっているのは、9.4.0、9.3.5、9.2.9、9.1.14、9.0.18となります。
左端が8の8.4.22以前のものは、ダウンロードができます(available)が、維持管理の対象外(No longer supported)であり、これ以降はバージョンのアップは行われません。
維持管理対象外のバージョンは、「EOL’d releases」とも呼ばれています。EOLは「End-of-life」の略です。
マイナーバージョンアップは、バイナリ変更だけで対応できますが、メジャーバージョンアップでは、データファイルの移行の必要があるので、メジャーアップデート作業はアップデート計画に沿って、慎重に(シュミュレーション・予行演習など)行うことが大切となります。