PostgreSQL

PLpgSQL クイズ

ワケあってPLpgSQL + Triggerのクイズを解いたのですが、PLpgSQLの基本はもとより、pg_notify()やらCTEやらJSONやら、実力を試すにはよいクイズだったように思うので、上げておきます。 質問 以下のテーブルがある。 CREATE TABLE transaction ( id SERIAL P…

PostgreSQLのROLLUP

こちらでROLLUPが考察さているが、PostgreSQLも先月(2016年1月)リリースのversion 9.5でROLLUPをサポートしたので、試す。 PostgreSQLのドキュメントはこちら。みるとわかるけども、PostgreSQLとSQL-ServerはSQL標準準拠。MySQLが方言。 サンプルはこちらと…

「ま、ここでいいか」と適当なディレクトリにPostgreSQLのデーブルスペースを作って後悔した場合の対処法

オリジナルの記事はこちら ディレクトリ`/usr/local/pgsql/tblspc`に作った`tblspc`を、`/home/postgres/tblspc`に移す。 [1] テーブルスペース`tblspc`のOidを調べる testdb=# SELECT oid,spcname FROM pg_tablespace WHERE spcname = 'tblspc'; oid | spcn…

Postgres-XC 多重化GTM システムが走るVagrant box

(5年前に作った)Postgres-XC用の多重化GTMシステムが動くVagrant boxを作ったので公開します。Postgres-XC用の多重化GTMシステムについては例えば"こちら"を参照。 Requirement Vagrant VirtualBox Install GitHubからリポジトリをcloneしてください。 # gi…

PostgreSQL version 9.5 のWALファイル管理

このブログに限り完全に著作権を放棄します(あくまでこのブログだけ。他のブログ、および下の英語文書は範囲外)。勝手に使ってよし。2016.12.20 公開した文書のごく一部を、翻訳して公開。(BLOGにするにあたり、構成は変えた。)http://www.interdb.jp/pg 概…

The Internals of PostgreSQL

Coming soon!http://www.interdb.jp/pg/index.html

ロングトランザクションとレプリケーションとPostgreSQL,MySQL

PostgreSQLとMySQL(MariaDB)のレプリケーションはいろいろ違うが、ロングトランザクションでの挙動の差は興味深いわりにあまり言及されないので、さくっと書く。 MySQLのレプリケーションはバイナリログベースである。動作は以下のとおり。 トランザクション…

pg_bman : Yet another backup tool for PostgreSQL

リモートサーバにデータをバックアップできるpg_rmanみたいなツールを作ってみた。 動機 pg_rmanはとてもよいツールだったのだが、PostgreSQLを置いたサーバにしかバックアップデータを保存できない*1。通常は別サーバにバックアップデータを置くので、実は…

PostgreSQLのリカバリ超入門

"JPUG勉強会の最終回"で「PostgreSQLのリカバリ超入門」という話をした。 "SlideShare:PostgreSQLのリカバリ超入門" WALとかCHECKPOINTとか、オンラインバックアップの原理について、可能な限り簡単に説明したつもり。 ネタ元の「内部構造:WAL」が分かりに…

MariaDB 10.0 GA記念 ダイナミックカラムって何?

(2014.12.3追記:以下の書籍にも記述した。)(2014.4.16)微妙に反応があるので、PostgreSQLネタ追記。 PostgreSQLには古くから配列型や複合型というのがあって、似たようなことができる。 あと、MariaDBのダイナミックカラムをJSONで取り出すcolumn_jsonなん…

溜まったアーカイブログを削除する

表題とおり、溜まったアーカイブログを削除するスクリプト*1。ここまでやる意味があるかどうかは別として。 commitやabortした時刻はWALログに記録されているので、pg_xlogdumpを使って「X日以前のWALアーカイブを削除する」スクリプトを書いた。 動作はpg_x…

pg_rmanの挙動

追記(2014.02.19):バグのようです。1.2.2から紛れ込んだ模様。開発者に連絡してもらったので、そのうち直るでしょう。 ドキュメントと違う挙動をしているように見える。 私の解釈が間違っているのか、使い方が間違っているのか?ドキュメントの記述を抜粋。…

VACUUM FULLとREINDEXはいつ行うべきか?

表題のとおり、みなさん「いつ、何をキッカケに実行してますか」という素朴な疑問。 VACUUM FULL ひとつ考えたのがpg_freespacemapを使う方法。以下のSQLを実行するとテーブル"tablename"の空き領域(FreeSpace)の割合が求まる。 SELECT pg_size_pretty(cas…

【はじめたばかりで1/3も書いてない】 OracleとPostgreSQLのシステムビュー/カタログ 比較

自分用メモ。 OracleのシステムビューとPostgreSQLの各種カタログ(テーブルとかビューとか)の対応を緩くまとめる。メモ書きをはじめたばかりで、内容には非常に多くの間違いが混じっているはずので信じないこと。 徐々に完成度を上げていく予定。 (なんとか)…

MySQL、MariaDB、PostgreSQLのオプティマイザ/エクゼキュータ比較用スクリプト群

こちらの実験を手元で再試行できるように、スクリプト群と実験方法を示す。 ここで示した例以外にも、こちらでMariaDB vs MysSQLのオプティマイザ機能比較があるので、各自試してみるとよいと思う。 https://mariadb.com/kb/en/optimizer-switch/ スクリプト…

長年の議論に終止符 -- MySQL、MariaDB、PostgreSQLのオプティマイザ/エクゼキュータ比較

https://mariadb.com/kb/en/optimizer-switch/にあるように、MariaDBのオプティマイザはかなり改良されている。 では、MariaDBのオプティマイザ/エクゼキュータはどの程度優秀か、4つのSELECT文の実行を通してMySQLと(ついでにPostgreSQLと)比較してみる。 …

PostgreSQL 9.3リリース記念  FDWで本当のデッドロックにはまってみよう

2013年9月9日、いきなりPostgreSQL9.3がリリースされた。 それを記念してFDWを使って本当のデッドロック状態をつくって遊んでみようと思う。 準備 サーバを2台準備する。サーバはtest1とtest2とする。

PostgreSQLの共有バッファ(shared_buffer)とMySQLのバッファプール(buffer_pool)のメカニズム比較

PostgreSQLとMySQLのバッファについて。 PostgreSQLのバッファマネージャ 詳細はこちらをみて頂くとして、PostgreSQLのバッファマネージャは、2005年リリースのバージョン8.1で大幅に変わった。以下の表をみて頂くとわかるようにページ置換アルゴリズム…

PostgreSQL全機能バイブル

毎度おなじみ、流浪のPostgreSQL本が2012年11月16日に出版されます。 今回の書名は「PostgreSQL全機能バイブル」。6年ぶり、バージョン9.2対応。 内部構造は100ページ、図70枚。内容的には前著の1024倍以上グレードアップしています。関連情報…

日本語版PostgreSQLwikiについて

調べものがあってPostgreSQLのwikiをみたのですが、日本語wikiにのみ、不思議な記述があります。http://ja.wikipedia.org/wiki/PostgreSQL 市場シェア 世界的な利用状況を見ると、2004年の時点では商用DBを含めると第6位、 オープンソースDBに限定すると MyS…

PostgreSQL 9.1 - 同期レプリケーション: クイックスタート

sr_sync02.htmlに、より詳細な動作機構や新規に追加された関数、ツールの紹介がある。 sr_sync03.htmlに、障害対応に関する解説がある。解説資料としては、 http://lets.postgresql.jp/documents/technical/replication/1 が詳しい。 (2012.10.30追記)以下の…

PostgreSQL 9.1 - 同期レプリケーションの障害対応

同期レプリケーションでの障害対応について、具体例を使って説明する。 なお、分量が多いのでここでは一部のみ公開。全体はこちら (2012.10.30追記)最新情報は書籍にまとめたので、参照のこと。 マスタ:スレーブ = 1:1の場合 マスタ障害:スレーブが1台の場合…

PostgreSQL 9.1の同期レプリケーション:機構と新機能など

今さら、同期レプリケーションについて。ここでは機構のみ。新機能など含む全文はこちら (2012.10.30追記)正式な文書は以下の書籍にまとめたので参照のこと。 また、http://www.interdb.jp/techinfo/postgresql/internal-11.html に原稿のサンプルをアップし…

イタリアのPostgreSQL Users Groupからのメッセージ

イタリアのPostgreSQL Users Groupからのメッセージ。JPUGのあるメンバー向けメッセージですが、複数のMLにすでに流れているので、勝手に転載。 I want to express our deepest sympathy for the recents events in Japan. We hope that your families and l…

PostgreSQL + QueryCache

2005年ころ、PostgreSQL+QueryCacheという実験をやっていたことをふと思い出す。今みてもソースが汚い。ソースよりも「インスパイヤライセンス」を書きたくて作った側面も否定できず。

Postgres-XC GTM(GlobalTransactionManager)の多重化 JGroups版

Postgres-XCの単一障害点であるgtmを多重化するmgtmを作ったので公表する。これはAPPIA版の改良でJGroupsを使っている。 2011年2月現在、最新版はver0.9.3〜0.9.4だが、mgtmはver0.9.2で動作する。もうすこしUI修正や動作を整えてから公開しようと思ったが、…

Java版のgtmとgtm_proxy for Postgres-XC ver.0.9.2

ポツポツとアクセスがあるのでアップデイト。2011年1月現在、最新版はver0.9.3だが、ver0.9.2で動作するgtmとgtm_proxyのJava版を作ったので公表する。 ダウンロード jgtm-0.3.2a.jarをダウンロードする。Java1.5以上のJDK、もしくはJREを用意すること。つづ…

Postgres-XC GTM(GlobalTransactionManager)の多重化

Postgres-XCの単一障害点であるGTM(GlobalTransactionManager)を多重化するmgtmを作ったので公表する。 2010年12月現在、最新版はver0.9.3だが、mgtmはver0.9.2で動作する。つづきはアップデイト版で前の文書はこちら なお、12月11日開催のJPUG仕組み+アプ…

Postgres-XC ver0.9.2クイックスタート

2010年12月現在、最新版はver0.9.3だが、ここではver0.9.2のインストール方法を示す。 つづきはこちら

ブックレビュー PostgreSQL 9.0 High Performance

G.Smith氏が今月"PostgreSQL9.0 Hight Performance"を出版した。https://www.packtpub.com/postgresql-9-0-high-performance/bookPDF版だと1000円程度なので早速ダウンロード。 99%チューニングに特化した内容。ベンチマークにも相当ページを割いている。 Ch…