new firebird2.5.20100123

46
Firebird 日日日日日日日 日日日日日日 Firebird2.5 日日日日日日MySQL PostgreSQL 日日日日日日日日日日日OSC2010/Oita 日

Upload: tsutomu-hayashi

Post on 17-Dec-2014

2.414 views

Category:

Documents


0 download

DESCRIPTION

OSC2010/Oita での講演資料です。

TRANSCRIPT

Page 1: New Firebird2.5.20100123

Firebird日本ユーザー会 はやしつとむ

Firebird2.5 がやってきた!~ MySQL 、 PostgreSQL とのパフォーマンス比

較~

OSC2010/Oita 版

Page 2: New Firebird2.5.20100123

04/10/2023Copyright(c) 2009 Firebird日本ユーザー会2

そもそも Firebird とは

【無償】

【有償】

InterBase4.x商用版

InterBase5.x

InterBase6.0

InterBase6.5

InterBase7.0,7.1

InterBase7.5

InterBase4.x LinuxFreeBSD版

InterBase6.0

OpenSource版

Firebird1.0

Firebird1.5

Firebird2.0

【機能的にほぼ同一】

【日本未発売】

■起源は Borland 社の商用 RDBMS interBase■ 一時オープン化されたソースから分岐■ 現在はそれぞれ別の進化をとげる

Firebird2.1

Firebird2.5

InterBase2007

InterBase2009

Now β

2

Page 3: New Firebird2.5.20100123

InterBase は M1 エイブラムス戦車に搭載されていた

04/10/2023Copyright(c) 2009 Firebird 日本ユーザー会3

Page 4: New Firebird2.5.20100123

Firebird を作ったのは?

Copyright(c) 2009 Firebird 日本ユーザー会

生みの親 Jim Starkey ロシアの天才 Dmitry Yemanov

世界中の開発者とユーザーの皆さん

04/10/20234

Page 5: New Firebird2.5.20100123

04/10/2023Copyright(c) 2009 Firebird日本ユーザー会5

Firebird の市場シェア

ワールドワイドでは

MySQLvs

FirebirdMと Fと Pで「オープンソースデータベース御三家」

と呼びましょう!

EDC,2005,OpenSource RDBMS調査結果

情報提供: Evans Data Corporationhttp://www.evansdata.com/n2/pr/releases/EDCDB05_01.shtml

5

Page 6: New Firebird2.5.20100123

Firebird World Wide

Copyright(c) 2009 Firebird 日本ユーザー会

Firebird Developer Day   @Brazil 2009-07480 人も集まった!

Firebird World Conferrence  @italy 2008-11夜中まで飲んで討論

04/10/20236

Page 7: New Firebird2.5.20100123

Firebird 2.5RC1

Copyright(c) 2009 Firebird 日本ユーザー会

FB2.5 の主要な目標新しいスレッドモデルを実装すること

Supre Classic エンジンSQL レベルの新機能は最低限 ( といいつつ結構ある )

CREATE/ALTER/DROP USER 文の追加PSQL での AUTONOMOUS TRANSACTIONEXECUTE STATEMENT での外部データベース接続

パフォーマンスの改善64bit 版では、 DB キャッシュが 32TB まで拡張!

2.5Alpha1 の時のリリースノートが 248kb しかなかったのに、 2.5Beta1 で 500kb 、 2.5Beta2 で 573kb 、 2.5RC1 で696kb とどんどん増えている・・・

7 04/10/20237

Page 8: New Firebird2.5.20100123

Firebird のアーキテクチャFirebird には、以下の 3 つのエンジンアーキテクチャが存在する。

アーキテクチャ プロセス スレッド キャッシュ

Super Server

1プロセス クライアント毎生成

単一プロセス規定値: 2048

Classic Server

クライアント毎生成

なし 各プロセス規定値: 75

Super Classic

1プロセス クライアント毎生成

各スレッド規定値: 75

New FB2.5

Copyright(c) 2009 Firebird 日本ユーザー会8

MySQL

PostgreSQL

04/10/20238

Page 9: New Firebird2.5.20100123

Database A

Database B

Process 1

Super Server

Client 1Client 1

Client 1Client 1

Client 1

Client 1Client 1

Client 1Client 1

Clientn

Thread 1

Thread 1

Thread 1

Thread 1

Thread 1

Thread 1

Thread 1

Thread 1

Thread 1

Thread 1

Thread n 1Process only

have a cacheper Database

Security2.fdb

Copyright(c) 2009 Firebird 日本ユーザー会9 04/10/20239

Page 10: New Firebird2.5.20100123

Database A Database B

Process 1Process 1

Process 1Process 1

Process 1

Process 1Process 1

Process 1Process 1

Process n

Classic Server

Client 1Client 1

Client 1Client 1

Client 1

Client 1Client 1

Client 1Client 1

Clientn

Each Processes have own cache

Security2.fdb

Lock Manager

Copyright(c) 2009 Firebird 日本ユーザー会10 04/10/202310

Page 11: New Firebird2.5.20100123

Database A

Database B

Process 1

Super Classic

Client 1Client 1

Client 1Client 1

Client 1

Client 1Client 1

Client 1Client 1

Clientn

Thread 1

Thread 1

Thread 1

Thread 1

Thread 1

Thread 1

Thread 1

Thread n

Each threads Have own cache

Security2.fdb

Copyright(c) 2009 Firebird 日本ユーザー会11 04/10/202311

Page 12: New Firebird2.5.20100123

Firebird2.5 RC1

Copyright(c) 2009 Firebird 日本ユーザー会

管理機能の強化CREATE/ALTER/DROP USER 文の追加新 system role RDB$ADMIN が ODS 11.2 で追加され、 SYSDBA

権限をデータベース毎に他のユーザーに移譲出来るようになったモニタリングテーブルの拡張

Firebird2.1.1 では、 SYSDBA 以外の一般ユーザーは自分のコネクションに関する情報しか見ることが出来なかった。

Firebird2.5+Firebird2.1.2 以降では、「同じ接続ユーザー名」のコネクションに関する情報も見ることが出来る。

MON$MEMORY_USAGE 、 MON$CONTEXT_VARIABLES の新設

API の追加

SQL 文の実行時に、 SQL-2003 標準の 5 文字の SQLSTATE コードを返す

isc_dsql_free_statement API で、新たに DSQL_unprepare 定数を使用出来るようになった

12 04/10/202312

Page 13: New Firebird2.5.20100123

Firebird 2.5 RC1

Copyright(c) 2009 Firebird 日本ユーザー会

その他の SQL 言語の機能追加SIMILAR TO 正規表現のサポート (1BYTE 系のみ )ALTER COLUMN が計算項目で可能にVIEW の FROM 句に選択型ストアドプロシージャを指

定可能にLIST() 関数で区切り文字の指定が拡張された

Data-handling の機能拡張新しい組み込み関数: UUID CHAR(16) OCTETS

strings を RFC4122-compliant format に変換32-bit と 64-bit integers を hexadecimal での文字

列型数値や X-prefixed された文字列でのバイナリ表現への変換

13 04/10/202313

Page 14: New Firebird2.5.20100123

Firebird2.5 RC1

Copyright(c) 2009 Firebird 日本ユーザー会

国際化関係の機能追加CREATE DATABASE 文でデフォルトのコレーションを指定

出来るようになったUNICODE_FSS で不正なコードが許されなくなった。 UTF8

と同様の対応。GBAK のリストアスイッチに FIX_FSS_DATA and

FIX_FSS_METADATA が追加され、上記の対応をリストア時に取ることが出来るようになった。

Unicode にアクセント付の COLLATE が追加、 UNICODE_CI_AI

ALTER CHARACTER SET 文を追加キャラクタセットのデフォルトコレーションを変更出来るようになった

SJIS と EUCJ で厳格なチェックが行われるようになった。チェックルーチンは元々あったのを Active にした。(セキュリティ対策)14 04/10/202314

Page 15: New Firebird2.5.20100123

DBBench

Copyright(c) 2009 Firebird 日本ユーザー会

PostgreSQL の pgbench を Firebird/MySQL へ移植

Delphi + dbExpress によるマルチスレッド実装dbExpress のドライバを切り替えれば他の DB へ

も応用可能単一のコード / バイナリで、現状 Firebird/

MySQL/PostgreSQL をテスト出来るGUI による設定が可能ものすごく手軽なデータベースベンチマーク

Firebird のベンチマークは、この他に TPC-R やAS3AP などがあります。

15 04/10/202315

Page 16: New Firebird2.5.20100123

TPC-B

Copyright(c) 2009 Firebird 日本ユーザー会

TPC とは、 Transaction Processing Performanc Counsil が定める標準ベンチマーク仕様

TPC-B は 1990 年制定、 95 年に非推奨となっている同種のトランザクションが多数並行するバッチ処理等を想定したテスト銀行の支店間取引をシュミレートしている

16 04/10/202316

Page 17: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

TPC-B対象のテーブルは 4 つ

create table branches(bid int not null,bbalance int,filler char(88));

create table tellers(tid int not null,bid int,tbalance int,filler char(84));

create table accounts(aid int not null,bid int,abalance int,filler char(84));

create table history(tid int,bid int,aid int,delta int,mtime timestamp,filler char(22))

04/10/20231717

Page 18: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

TPC-B

18

処理内容は以下の流れupdate accounts set abalance = abalance

+ :delta where aid = :aid;select abalance from accounts where aid

= :aid; update tellers set tbalance = tbalance

+ :delta where tid = :tid; update branches set bbalance = bbalance +

:delta where bid = :bid;insert into history(tid,bid,aid,delta)

values(:tid,:bid,:aid,:delta);

04/10/202318

Page 19: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

Scaling Factor

19

Scaling factor is test scaleScaling factor affects

Branch count equals scaling factorTeller count is scaling factor * 10Account count is scaling factor * 100,000

So I use scaling factor 100Branch is 100, Teller is 1000, Accounts is 10,000,000Firebird database almost 600MB, MySQL is almost

1.2GB

04/10/202319

Page 20: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

ベンチーク環境

HP製 ML115G5

AMD AthlonTM 1640B( 2.7GHz)

AMD PhenomTM 9350e( 2.0GHz)

ECC は付いてるけど512MB DDR2-6400

Non-ECC4GB DDR2-6400

HDD は標準の160GB のまま・・・

じゃんけんに買って手に入れて下さいね~

20 04/10/202320

Page 21: New Firebird2.5.20100123

Firebird2.1 vs Firebird2.5

@WindowsServer2008

04/10/2023Copyright(c) 2009 Firebird 日本ユーザー会21

Page 22: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

Firebird 2.1SS vs Firebird 2.5SS

22

Firebird2.1 と Firebird2.5 の結果を比較

@Windows10 50 100

0.00 20.00 40.00 60.00 80.00

100.00 120.00 140.00 160.00 180.00 200.00

92.23 76.99

66.94

TPS

TPS

10 50 1000.00

20.00 40.00 60.00 80.00

100.00 120.00 140.00 160.00 180.00 200.00

112.87 88.83

74.77

TPS

TPS

04/10/202322

Page 23: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

Firebird 2.1CS vs Firebird 2.5CS

23

Firebird2.1 と Firebird2.5 の結果を比較

@Windows10 50 100

0.00

50.00

100.00

150.00

200.00

138.49

107.13

67.35

TPS

TPS

10 50 1000.00

50.00

100.00

150.00

200.00

142.57

107.39

12.74

TPS

TPS

04/10/202323

Page 24: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

Firebird 2.1SS vs Firebird 2.5 SC

24

Firebird2.1 と Firebird2.5 の結果を比較

@Windows10 50 100

0.00

50.00

100.00

150.00

200.00

112.87 88.83

74.77

TPS

TPS

10 50 1000.00

50.00

100.00

150.00

200.00

151.48

106.08 91.34

TPS

TPS

04/10/202324

Page 25: New Firebird2.5.20100123

Firebird2.1 vs Firebird2.5

@Linux CentOS5.3

04/10/2023Copyright(c) 2009 Firebird 日本ユーザー会25

Page 26: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

Firebird 2.1SS vs Firebird 2.5SS

26

Firebird2.1 と Firebird2.5 の結果を比較

@Linux10 50 100

0.00

50.00

100.00

150.00

200.00

50.58 48.19 46.14

TPS

TPS

10 50 1000.00

50.00

100.00

150.00

200.00

51.68 46.56 43.06

TPS

TPS

引き分け

04/10/202326

Page 27: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

Firebird 2.1CS vs Firebird 2.5CS

27

Firebird2.1 と Firebird2.5 の結果を比較

@Linux10 50 100

0.00

50.00

100.00

150.00

200.00

59.37 53.33 68.96

TPS

TPS

10 50 1000.00

50.00

100.00

150.00

200.00

57.40

13.64 7.30

TPS

TPS

04/10/202327

Page 28: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

Firebird 2.1SS vs Firebird 2.5SC

28

Firebird2.1 と Firebird2.5 の結果を比較

@Linux10 50 100

0.00 20.00 40.00 60.00 80.00

100.00 120.00 140.00 160.00 180.00 200.00

50.58 48.19 46.14

TPS

TPS

04/10/202328

10 50 1000.00

50.00

100.00

150.00

200.00

51.94 51.84 45.57

TPS

TPS

Page 29: New Firebird2.5.20100123

MySQL5.1.40 vs Firebird2.5

@WindowsServer2008 &Linux CentOS5.3

04/10/2023Copyright(c) 2009 Firebird 日本ユーザー会29

with InnoDB

Page 30: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

MySQL 5.1 vs Firebird 2.5SC

30

MySQL5.1.40 と Firebird2.5 の結果を比較

@Windows10 50 100

0.00

50.00

100.00

150.00

200.00

58.53 74.47 77.16

TPS

TPS

10 50 1000.00

20.00 40.00 60.00 80.00

100.00 120.00 140.00 160.00 180.00 200.00

151.48

106.08 91.34

TPS

TPS

04/10/202330

with InnoDB

Page 31: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

MySQL 5.1 vs Firebird 2.5SC

31

MySQL5.1.40 と Firebird2.5 の結果を比較

@Linux10 50 100

0.00

50.00

100.00

150.00

200.00

87.41 86.42 86.86

TPS

TPS

10 50 1000.00

50.00

100.00

150.00

200.00

51.94 51.84 45.57

TPS

TPS

04/10/202331

with InnoDB

Page 32: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

MySQL 5.1 vs Firebird 1.5SS

32

MySQL5.1.40 と Firebird2.5 の結果を比較

@Linux10 50 100

0.00

50.00

100.00

150.00

200.00

87.41 86.42 86.86

TPS

TPS

10 50 1000.00

50.00

100.00

150.00

200.00

79.01 94.58

76.82

TPS

TPS

引き分け

04/10/202332

with InnoDB

Page 33: New Firebird2.5.20100123

PostgreSQL8.4 vs Firebird2.5

@WindowsServer2008 &Linux CentOS5.3

04/10/2023Copyright(c) 2009 Firebird 日本ユーザー会33

Page 34: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

PostgreSQL 8.4 vs Firebird 2.5CS

34

PostgreSQL8.4.1 と Firebird2.5 の結果を比較

@Windows10 50 100

0.00

50.00

100.00

150.00

200.00

61.29

112.35

65.98

TPS

TPS

10 50 1000.00

50.00

100.00

150.00

200.00

142.57

107.39

12.74

TPS

TPS

04/10/202334

Page 35: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

PostgreSQL 8.4 vs Firebird 2.5CS

35

PostgreSQL8.4.1 と Firebird2.5 の結果を比較

@Linux10 50 1000.00

20.00 40.00 60.00 80.00

100.00 120.00 140.00 160.00 180.00 200.00

54.72 56.96 46.60

TPS

TPS

10 50 1000.00

50.00

100.00

150.00

200.00

59.37 53.33 68.96

TPS

TPS

04/10/202335

Page 36: New Firebird2.5.20100123

Linux での Firebird が遅~~い!!

ファイルシステムが悪いんじゃないか?

04/10/2023Copyright(c) 2009 Firebird 日本ユーザー会3636

@Linux

Page 37: New Firebird2.5.20100123

10 50 1000.00

50.00

100.00

150.00

200.00

130.11 133.22 134.48

TPS

TPS

Copyright(c) 2009 Firebird 日本ユーザー会

Firebird2.5SC で検証

37

Ext3 と XFS でパフォーマンスを測定

@Linux10 50 100

0.00 20.00 40.00 60.00 80.00

100.00 120.00 140.00 160.00 180.00 200.00

59.37 53.33 68.96

TPS

TPS

04/10/202337

Ext3 XFS

Page 38: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

Linux+XFSだと劇速! Firebird2.5SC

38

調子に乗って 500 クライアントもテスト!

@Linux10 50 100 500

0.00

50.00

100.00

150.00

200.00

130.11 133.22 134.48 134.51

TPS

TPS

04/10/202338

XFS

Page 39: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

Linux+XFS で MySQL は

39

MySQL5.1.40 も 500 クライアントまでテスト

@Linux04/10/202339

10 50 100 5000

50

100

150

200 155.346666666667

117.3575.3566666666667

93.7666666666667

TPS

TPS

XFS

Firebird

Page 40: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

Linux+XFS で PostgreSQL は

40

PostgreSQL8.4.1 も 500 クライアントまでテスト

@Linux04/10/202340

10 50 100 5000.00

50.00

100.00

150.00

200.00 177.15 166.19

69.15 64.97

TPS

TPS

XFS

Firebird

Page 41: New Firebird2.5.20100123

まとめ ベンチマークはあくまで目安なので、実際の運

用環境を想定して、データベースを選択しよう。

  Firebird2.5 は、他の DB を比較しても遜色のない性能を発揮出来そう。

  500 クライアント以上の高負荷環境でも通用するぞ~!

Copyright(c) 2009 Firebird 日本ユーザー会41 04/10/202341

Page 42: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会

余談  LostUpdate

42

並行するトランザクションで、後から開始したトランザクションが先行するトランザクションのデータを上書きしてしまう現象

Lost Update は、 MySQL の Falcon を除いて、他の RDBMS では検出することが出来ない。

MySQL の新ストレージエンジン Falcon徹底リサーチ

5 トランザクション制御 - MVCC と排他制御 松信嘉範 2007/03/03

http://journal.mycom.co.jp/special/2007/falcon/004.html

Falcon storage engine in depth

http://dev.mysql.com/tech-resources/articles/falcon-in-depth.html

04/10/202342

Page 43: New Firebird2.5.20100123

MySQL にある thread_stackFirebird のスレッドモデルでは、 MySQL のよう

にスレッドのスタックサイズを変更出来ない。Windwos の既定値は 1MB とでかい。このサイズは OS によって結構違う。

Windows 1MBCentOS 16KBAIX32bit 96KBFreeBSD 4KBMacOSX 8KB

04/10/2023Copyright(c) 2009 Firebird 日本ユーザー会43

Page 44: New Firebird2.5.20100123

thread のスタックサイズを変更Firebird のソース中、 ThreadStart.cpp にこの辺

のことは書いてある。 Windows 用の_beginthreadex() API の第 2 パラメータを変更してベンチマークを取ってみた。

04/10/2023Copyright(c) 2009 Firebird 日本ユーザー会44

1MB コネクト

192KB コネクト

1MB  TPS

192KB  TPS

0 20 40 60 80 100120140160

100

100.3541912632

82

135.7

137

実行時間

実行時間

Page 45: New Firebird2.5.20100123

Copyright(c) 2009 Firebird 日本ユーザー会45 04/10/202345

Firebird の本が出ました!

翔泳社刊Firebird徹底入門

Page 46: New Firebird2.5.20100123

Presented by Tomneko

Special thanks to Q-tan