最新版 PostgreSQL 8.1 の ご紹介

SRA OSS,Inc. 日本支社
技術部

Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

1

最新版 PostgreSQL 8.1 の ご紹介

Table of Contents
 ８．１リリースまで
 PostgreSQLのあゆみ 8.1の新機能
 8.1は速いってホント？
 今後の展望

Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

2

最新版 PostgreSQL 8.1 の ご紹介

8.1リリースまで
 PostgreSQLのあゆみ
リリース バージョン

1997.1
1998.3
1998.10
1999.112000.5
2001.4
2002.2
2002.112003.112005.1

6.0
6.3
6.4
6.5
7.0
7.1
7.2
7.3
7.4
8.0

主な変更／機能追加

postgres95からPostgreSQLに名称変更マルチバイト対応、サブクエリー
PL/pgSQL（ストアドプロシージャ）
MVCC（読み取り一貫性）
外部キー
W AL（トランザクションログ）ロックなしのVACUUM
スキーマ、プリペアドクエリ
問い合わせ性能向上、information_schema
W indows版、アーカイブログ、SAVEPOINT、テーブルスペース
Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

3

最新版 PostgreSQL 8.1 の ご紹介

8.1リリース 2005年11月8日リリース
 2005年8月からベータ版公開
 8.0同様にWindows版も同時にリリース

 新バージョンは・・・ 高速化
 エンタープライズ対応
 VACUUM不要？

Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

4

最新版 PostgreSQL 8.1 の ご紹介

Table of Contents
 8.1リリースまで
 ８．１の新機能 さまざまな高速化
 VACUUMの自動化
 二相コミット ロール 8.1は速いってホント？
 今後の展望
Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

5

最新版 PostgreSQL 8.1 の ご紹介

さまざまな高速化(1) 共有バッファへの同時アクセス改良
 マルチCPUに強くなった 実はいままでは弱点 （4CPU以上は効果なし）

 バッファアルゴリズムの改善によるバージョン アルゴリズム

7.4まで

LRU

8.0

ARC／2Q

8.1

CLOCK

特徴

同時実行に弱い（大きいロック）、大きい順スキャンに弱い
大きい順スキャンに強い、特許抵触を避けバージョン8.0.2から2Qに変更
同時実行に強い（小さいロック）

Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

6

最新版 PostgreSQL 8.1 の ご紹介

さまざまな高速化(2) ビットマップインデックススキャン
 通常のインデックスを用意すればOK 大量の顧客情報から「30代・既婚・男性・車運転・犬好き」など条件抽出をするとき効果的顧客ID
10000001
10000002
10000003
10000004

性別
F
F
M
M

生年1970
1980
1950
1940

Q1
NoNo
No
Yes

Q2
12
2
3

Q3
Yes
No
Yes
NoQ4
Yes
No
Yes
Yes

xx@xx

F

1940

No

1

Yes

No・・・

Q30
3
3
3
2・・・

E-Mail
xx@xx
xx@xx
xx@xx
xx@xx

10999999

Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

1
7

最新版 PostgreSQL 8.1 の ご紹介

さまざまな高速化(3) テーブルパーティション支援機能

id
1

value
xxx

・・

 大規模テーブルを複数のテーブルに分割すること
 継承と制約を使ってテーブルパーティションを構成すると、必要なテーブルのみ検索される

1000000xxx

id
1000001

valuexxx

・・

id
1

2000000

xxx

xxxid
2000001

valuexxx

・・・

valuexxx

3000000

・・
3000000
Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

xxx
8

最新版 PostgreSQL 8.1 の ご紹介

さまざまな高速化(4) 共有行レベルロック （SELECT ... FOR SHARE）
 これまで行レベルロックは排他ロックのみ
 外部キー制約の検査で（暗黙的に）発生していたロック要求が減少
 SELECT ... FOR SHARE構文でユーザから使える

Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

9

最新版 PostgreSQL 8.1 の ご紹介

さまざまな高速化(5) 関数MIN(x)とMAX(x)の最適化
 実はこれまでは苦手な関数でした インデックスが使われるようになる

 COPY FROMの改良
 大量データロードなどが高速化 64ビットマシンで各種設定値メモリサイズを２GB以上に指定可能に
 近い将来における大規模DB高速化の手段としてCopyright © 2005 SRA OSS, Inc. Japan All rights reserved.

10最新版 PostgreSQL 8.1 の ご紹介

VACUUM自動化
 自動VACUUM機能が追加
 これまで外部ツールで提供された機能を取り込み
 データ更新量を監視して、適当なタイミングでVACUUMやANALYZEを自動実行してくれる
ポスグレ？
バキュームがあるからなぁー

いろんな意味で昔の話です。

 8.1の自動VACUUMにも更なる改良の余地はある
Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

11

最新版 PostgreSQL 8.1 の ご紹介

二相コミット ニ相コミットの追加
 トランザクションで、準備状態（内容は確定しているがCOMMITとROLLBACKを選択できる状態）を取れる
 複数台マシンでDBMSを使うシステムで必須
 PREPARE TRANSACTION
 COMMIT PREPARED ROLLBACK PREPARED
DBクライアント

DBMS
1号
DBMS
2号

Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

２台以上のマシンにまたがって一貫性を確保

12

最新版 PostgreSQL 8.1 の ご紹介

ロール

 ユーザ、グループが「ロール」という概念に統合
 「グループにグループを含む」などが表現できる
 もはや 「ユーザを追加できるユーザ」は、必ず「スーパーユーザ（管理者ユーザ）」ではない
 ロールをサポートするDBMSからの移植性アップ

Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

13

最新版 PostgreSQL 8.1 の ご紹介

その他

 PL/pgSQLでIN/OUT/INOUTパラメータをサポート
 ユーザ定義関数で複数の返し値を返すのが容易に
 他のDBMSからのロジックの移植をより容易にする

 管理用コマンドの拡充
 外部ツール扱いだったdbsize、reindexdbを取り込み その他、さまざまな改修

Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

14

最新版 PostgreSQL 8.1 の ご紹介

Table of Contents
 8.1リリースまで
 8.1の新機能
 ８．１は速いってホント？
 8.0、7.4と比較する
 MySQL5.0と比較する

 今後の展望

Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

15

最新版 PostgreSQL 8.1 の ご紹介

7.4、8.0と比較する
 単純な比較結果

 Xeon2.8GHz
 1.5GBメモリ
 RHES4150
125pgbench (TPS) 同時接続数とバッファサ
イズだけ変更 pgbenchで計測
 IA32サーババージョンの比較

100
7.4.9
8.0.4
8.1.0

75
50
25050

100

150200

同時接続数Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

16

最新版 PostgreSQL 8.1 の ご紹介

マルチCPU環境下で8.0と比較する
 比較的重い問い合わせ5 最大12個のテーブルの結合を含む
 2.2GHzのOpteron 848×4個
 8GBメモリ

4相対性能

 環境

CURRENT
8.0.1

4.5

3.5
3
2.5
2
1.5
1

1

2

3

4

6

812

16同時接続数※データはML（pgsql-general）より
Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

17

最新版 PostgreSQL 8.1 の ご紹介

MySQLと比較する
sql-bench (sec.)

 同時期にMySQL最新版5.0が正式リリース（2005/10/25）
 双方チューニング無しでMySQL付属のベンチマークツールで比較
 単純な繰り返しでは・・・
 実際的な処理では・・・

big-tables x5
800

PostgreSQL
MySQL

connectwisconsin
0select

Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

transactions

18

最新版 PostgreSQL 8.1 の ご紹介

Table of Contents
 8.1リリースまで
 8.1の新機能
 8.1は速いってホント？
 今後の展望

Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

19

最新版 PostgreSQL 8.1 の ご紹介

今後の展望 機能追加フェーズは完成の域に到達しつつある より大規模、エンタープライズ指向へ 高速化、最適化はこれからも

Copyright © 2005 SRA OSS, Inc. Japan All rights reserved.

20