Postgres

postgresqlのexceptで勘違いしてた件

久々2連投。 こないだバッチ処理の結果確認するのにexcept使ってたんですけど、 これ重複すると丸められちゃうんですね。勘違いしてた*1 select * from table1; col1 ------- A A B D select * from table2; col1 ------- B C select * from ( select * fro…

Postgresql9.1の UNLOGGED TABLE を試してみた

http://lets.postgresql.jp/documents/technical/9.1/ Postgresql 9.1 から追加されたUNLOGGED TABLE。 WALログに一切書かれないので追加更新削除のパフォーマンスが良いらしい。 一連のバッチ処理などでの一時表の代わりに使ったり、 レポート集計テーブル…

コネクションをプーリングしている/していない時の比較ベンチマーク

だいぶ前に「postgresのコネクションはforkするので負荷大きい」 というアドバイスいただいていて、検証しようと思ってたのですが いままで手つかずで…。 手が空いたのでベンチマーク取ってみました。 環境 postgresql 8.4.4 pg-pool2 2.3.3 pg-poolはコネク…

postgresインポートで Cannot allocate memory for output buffer

本番データを社内DBサーバに移行してテストしようとして psqlからインポートしようとしたら、 Cannot allocate memory for output buffer (out of memory)というエラーでインポート出来なかった。 ※ちなみにエクスポートは普通にこんな感じ。 pg_dump hogeho…

Software Design Postgres8.4特集の気になったメモ

http://gihyo.jp/magazine/SD/archive/2010/201001 Software Design 2010年1月号のpostgres8.4特集が興味深かったので、 その中から特に気になった部分をピックアップしてメモ。 1章:PostgreSQL 8.4の新機能 再帰SQL その名の通り、クエリの中で再帰的な処…

Postgresql障害対応/復旧メモ

今年はまだ一つもいい事ない 2月はいろいろと最悪な月だった。 半分は障害対応してた。 とりあえず備忘録として、何があってどのような対応をして解決したかをメモっておきます。 概要 うちのとあるサービスのDBサーバはPostgresql8.3.8。 8.3から追加された…

PostgreSQL水

デブサミで頂いちゃいました。 しばらく飾っておくw 正式名称は「かめすい」?何故か名前書く欄があるんですが… カメかわいい。でも目がちょっとエロイですよね!

muninでpostgres監視

muninすげーカンタンでいいね! cactiでわけわかめになりながら何時間もかけて設定したのがアホらしい。 もちろんcactiより出来ることは少ないけど、情報としては十分。 で、postgresの監視しようと思ったら 思ったより手間取ったのでメモメモ。 プラグイン…

Postgresで正規表現を使った置換

sqlで正規表現って使ったことありませんでしたが、 たまたま仕事で必要になったので使ってみました。 今回の要件 要は とある列の前後の半角/全角スペースを削除する ということがしたかったのです。 正規表現はあまり得意ではないのですが この程度なら問…

日付データ格納型に関するベンチマーク

自分も常々気になっていた 2chにこんな話があったので試してみた。 865 :NAME IS NULL:2009/09/18(金) 18:15:56 ID:??? 頻繁に日付の完全一致検索を行うのですが、 その場合、データ型は date, text, int のどれが速いとかありますか? text/int なら 2009…

Postgres8.4のベンチマークを取ってみた その2

前回いろいろ腑に落ちなかったので再度行いました。 今回考慮したのは以下の項目です。 テスト用スクリプト作成 マルチコアでテスト postgresql.confのパラメータを合わせる pgbenchを行うperlスクリプト 再実行が面倒だったので作ってみました。 githubあげ…

Postgres8.4のベンチマークを取ってみた

※2009/7/19追記 こちらの方がおそらく正確でしょう。 先週行う予定だったベンチの結果です。 http://www.techscore.com/tech/sql/pgbench/6.html http://www.techscore.com/tech/sql/pgbench/7.html http://www.techscore.com/tech/sql/pgbench/8.html こち…

8.4リリース

http://www.postgresql.jp/PostgreSQL (略)中でも最も好評な改良点を以下に記します。 並列データベースリストア, バックアップからのリストア速度を最大8倍向上します。 列単位の権限, 取扱いに注意すべきデータに対してより細かな制御を可能にします。 …

PostgreSQL 8.4

http://lets.postgresql.jp/documents/technical/8.4/1 もうすぐリリースされそうですね。*1 新機能の中では、個人的には以下の項目が嬉しいです。 Window関数の実装 列別名の「AS」が不必要に plpgsqlに「CASE」文追加 パーティショニング関連の改善 あとは…

Postgresql システム時刻取得関数について発見

バッチ処理にpl/pgsqlも使ってたりするんですが、 先週たまたまアボートしてログ見てる時に気付いたことが。 あれ、開始と終了の時刻が一緒。 ログ出力で、ストアドの開始と終了に実行日付出してるんですが、 どのストアドみても開始と終了の時刻が一緒にな…

Postgresql ビューでdblinkを使用

postgresqlでカレントデータベースから他のデータベースに接続する場合は dblinkというcontrib*1をインストールして実現できるのですが、 そのまま使おうとすると非常に使いづらい…*2 なわけで、よく使うテーブルをあらかじめビューにしておくと良いのでは?…

Postgres 更新可能カーソル(記事修正)

カーソルでフェッチした行を、カーソル名で更新可能な更新可能カーソル*1。 こんな感じですかね。 EXEC SQL DECLARE cur_hoge CURSOR FOR SELECT * FROM hoge FOR UPDATE; EXEC SQL OPEN cur_hoge; EXEC SQL FETCH cur_hoge INTO :hogecol1, :hogecol2; EXEC…