New Firebird2.5.20100123

2,752 views
2,641 views

Published on

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

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,752
On SlideShare
0
From Embeds
0
Number of Embeds
331
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

New Firebird2.5.20100123

  1. 1. Firebird2.5がやってきた!~MySQL、PostgreSQLとのパフォーマンス比較~<br />Firebird日本ユーザー会 はやしつとむ<br />OSC2010/Oita版<br />
  2. 2. 10.1.23<br />Copyright(c) 2009 Firebird日本ユーザー会<br />1<br />そもそもFirebirdとは<br />Firebird<br />2.0<br />Firebird<br />2.1<br />Firebird<br />2.5<br />【無償】<br />【機能的にほぼ同一】<br />Firebird<br />1.5<br />InterBase<br />6.0<br />OpenSource版<br />Firebird<br />1.0<br />InterBase<br />4.x Linux<br />FreeBSD版<br />Now β<br />InterBase<br />4.x商用版<br />InterBase<br />5.x<br />InterBase<br />6.0<br />InterBase<br />6.5<br />InterBase<br />7.0,7.1<br />【有償】<br />InterBase<br />2007<br />InterBase<br />2009<br />InterBase<br />7.5<br />【日本未発売】<br />■起源はBorland社の商用RDBMS interBase<br />■一時オープン化されたソースから分岐<br />■現在はそれぞれ別の進化をとげる<br />1<br />
  3. 3. InterBaseはM1エイブラムス戦車に搭載されていた<br />10.1.23<br />Copyright(c) 2009 Firebird日本ユーザー会<br />2<br />
  4. 4. Firebirdを作ったのは?<br />Copyright(c) 2009 Firebird日本ユーザー会<br />生みの親 Jim Starkey<br />ロシアの天才 Dmitry Yemanov<br />世界中の開発者とユーザーの皆さん<br />10.1.23<br />3<br />
  5. 5. 10.1.23<br />Copyright(c) 2009 Firebird日本ユーザー会<br />4<br />Firebirdの市場シェア<br />EDC,2005,OpenSource RDBMS調査結果<br />ワールドワイドでは<br />MySQL<br />vs<br />Firebird<br />MとFとPで<br />「オープンソース<br />データベース<br />御三家」<br />と呼びましょう!<br />情報提供:Evans Data Corporation<br />http://www.evansdata.com/n2/pr/releases/EDCDB05_01.shtml<br />4<br />
  6. 6. Firebird World Wide<br />Copyright(c) 2009 Firebird日本ユーザー会<br />Firebird World Conferrence @italy2008-11<br />夜中まで飲んで討論<br />Firebird Developer Day @Brazil2009-07<br />480人も集まった!<br />10.1.23<br />5<br />
  7. 7. Firebird 2.5RC1<br />Copyright(c) 2009 Firebird日本ユーザー会<br />FB2.5の主要な目標<br /><ul><li>新しいスレッドモデルを実装すること
  8. 8. Supre Classicエンジン
  9. 9. SQLレベルの新機能は最低限(といいつつ結構ある)
  10. 10. CREATE/ALTER/DROP USER 文の追加
  11. 11. PSQL でのAUTONOMOUS TRANSACTION
  12. 12. EXECUTE STATEMENT での外部データベース接続
  13. 13. パフォーマンスの改善
  14. 14. 64bit版では、DBキャッシュが32TBまで拡張!
  15. 15. 2.5Alpha1の時のリリースノートが248kbしかなかったのに、2.5Beta1で500kb、2.5Beta2で573kb、2.5RC1で696kb とどんどん増えている・・・</li></ul>6<br />10.1.23<br />6<br />
  16. 16. Firebirdのアーキテクチャ<br />Firebirdには、以下の3つのエンジンアーキテクチャが存在する。<br />MySQL<br />PostgreSQL<br />New FB2.5<br />Copyright(c) 2009 Firebird日本ユーザー会<br />7<br />10.1.23<br />7<br />
  17. 17. Super Server<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Clientn<br />Thread 1<br />Thread 1<br />Thread 1<br />Thread 1<br />Thread 1<br />Thread 1<br />Thread 1<br />Thread 1<br />Thread 1<br />Thread 1<br />Thread n<br />1Process only <br />have a cache<br />perDatabase<br />Process 1<br />Database A<br />Database B<br />Security2.fdb<br />Copyright(c) 2009 Firebird日本ユーザー会<br />8<br />10.1.23<br />8<br />
  18. 18. Classic Server<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Clientn<br />Process 1<br />Process 1<br />Process 1<br />Process 1<br />Lock Manager<br />Process 1<br />Process 1<br />Process 1<br />Process 1<br />Process 1<br />Process n<br />Database A<br />Database B<br />Each Processes<br /> have own cache<br />Security2.fdb<br />Copyright(c) 2009 Firebird日本ユーザー会<br />9<br />10.1.23<br />9<br />
  19. 19. Super Classic<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Client 1<br />Clientn<br />Thread 1<br />Thread 1<br />Thread 1<br />Thread 1<br />Thread 1<br />Thread 1<br />Thread 1<br />Thread n<br />Each threads <br />Have own cache<br />Process 1<br />Database A<br />Database B<br />Security2.fdb<br />Copyright(c) 2009 Firebird日本ユーザー会<br />10<br />10.1.23<br />10<br />
  20. 20. Firebird2.5 RC1<br />Copyright(c) 2009 Firebird日本ユーザー会<br />管理機能の強化<br /><ul><li>CREATE/ALTER/DROP USER 文の追加
  21. 21. 新system role RDB$ADMINがODS 11.2で追加され、SYSDBA権限をデータベース毎に他のユーザーに移譲出来るようになった
  22. 22. モニタリングテーブルの拡張
  23. 23. Firebird2.1.1では、SYSDBA以外の一般ユーザーは自分のコネクションに関する情報しか見ることが出来なかった。
  24. 24. Firebird2.5+Firebird2.1.2以降では、「同じ接続ユーザー名」のコネクションに関する情報も見ることが出来る。
  25. 25. MON$MEMORY_USAGE、MON$CONTEXT_VARIABLESの新設</li></ul>APIの追加<br /><ul><li>SQL文の実行時に、SQL-2003標準の5文字のSQLSTATE コードを返す
  26. 26. isc_dsql_free_statement APIで、新たにDSQL_unprepare定数を使用出来るようになった</li></ul>11<br />10.1.23<br />11<br />
  27. 27. Firebird 2.5 RC1<br />Copyright(c) 2009 Firebird日本ユーザー会<br />その他のSQL言語の機能追加<br /><ul><li>SIMILAR TO正規表現のサポート(1BYTE系のみ)
  28. 28. ALTER COLUMNが計算項目で可能に
  29. 29. VIEWのFROM句に選択型ストアドプロシージャを指定可能に
  30. 30. LIST()関数で区切り文字の指定が拡張された</li></ul>Data-handlingの機能拡張<br /><ul><li>新しい組み込み関数:UUID CHAR(16) OCTETS stringsをRFC4122-compliant formatに変換
  31. 31. 32-bitと64-bit integersをhexadecimal での文字列型数値やX-prefixedされた文字列でのバイナリ表現への変換</li></ul>12<br />10.1.23<br />12<br />
  32. 32. Firebird2.5 RC1<br />Copyright(c) 2009 Firebird日本ユーザー会<br />国際化関係の機能追加<br /><ul><li>CREATE DATABASE文でデフォルトのコレーションを指定出来るようになった
  33. 33. UNICODE_FSSで不正なコードが許されなくなった。UTF8と同様の対応。
  34. 34. GBAK のリストアスイッチにFIX_FSS_DATA and FIX_FSS_METADATAが追加され、上記の対応をリストア時に取ることが出来るようになった。
  35. 35. Unicodeにアクセント付のCOLLATEが追加、UNICODE_CI_AI
  36. 36. ALTER CHARACTER SET 文を追加キャラクタセットのデフォルトコレーションを変更出来るようになった
  37. 37. SJISとEUCJで厳格なチェックが行われるようになった。チェックルーチンは元々あったのをActiveにした。(セキュリティ対策)</li></ul>13<br />10.1.23<br />13<br />
  38. 38. DBBench <br />Copyright(c) 2009 Firebird日本ユーザー会<br />PostgreSQLのpgbenchをFirebird/MySQLへ移植<br /><ul><li>Delphi + dbExpressによるマルチスレッド実装
  39. 39. dbExpressのドライバを切り替えれば他のDBへも応用可能
  40. 40. 単一のコード/バイナリで、現状Firebird/MySQL/PostgreSQLをテスト出来る
  41. 41. GUIによる設定が可能
  42. 42. ものすごく手軽なデータベースベンチマーク
  43. 43. Firebirdのベンチマークは、この他にTPC-RやAS3APなどがあります。</li></ul>14<br />10.1.23<br />14<br />
  44. 44. TPC-B<br />Copyright(c) 2009 Firebird日本ユーザー会<br />TPCとは、Transaction Processing Performanc Counsilが定める標準ベンチマーク仕様<br /><ul><li>TPC-Bは1990年制定、95年に非推奨となっている
  45. 45. 同種のトランザクションが多数並行するバッチ処理等を想定したテスト
  46. 46. 銀行の支店間取引をシュミレートしている</li></ul>15<br />10.1.23<br />15<br />
  47. 47. Copyright(c) 2009 Firebird日本ユーザー会<br />TPC-B<br />対象のテーブルは4つ<br /><ul><li>create table branches(bid int not null,bbalance int,filler char(88));
  48. 48. create table tellers(tid int not null,bid int,tbalance int,filler char(84));
  49. 49. create table accounts(aid int not null,bid int,abalance int,filler char(84));
  50. 50. create table history(tid int,bid int,aid int,delta int,mtime timestamp,filler char(22))</li></ul>10.1.23<br />16<br />16<br />
  51. 51. Copyright(c) 2009 Firebird日本ユーザー会<br />TPC-B<br />処理内容は以下の流れ<br /><ul><li>update accounts set abalance = abalance + :delta where aid = :aid;
  52. 52. select abalance from accounts where aid = :aid;
  53. 53. update tellers set tbalance = tbalance + :delta where tid = :tid;
  54. 54. update branches set bbalance = bbalance + :delta where bid = :bid;
  55. 55. insert into history(tid,bid,aid,delta) values(:tid,:bid,:aid,:delta);</li></ul>17<br />10.1.23<br />17<br />
  56. 56. Copyright(c) 2009 Firebird日本ユーザー会<br />ScalingFactor<br />Scalingfactoristestscale<br /><ul><li>Scalingfactoraffects
  57. 57. Branchcountequalsscalingfactor
  58. 58. Tellercountisscalingfactor * 10
  59. 59. Accountcountisscalingfactor * 100,000
  60. 60. SoIusescalingfactor100
  61. 61. Branchis100,Telleris1000,Accountsis10,000,000
  62. 62. Firebirddatabasealmost600MB,MySQLisalmost1.2GB</li></ul>18<br />10.1.23<br />18<br />
  63. 63. Copyright(c) 2009 Firebird日本ユーザー会<br />ベンチーク環境<br />じゃんけんに買って手に入れて下さいね~<br />AMD AthlonTM 1640B(2.7GHz)<br />AMD PhenomTM 9350e(2.0GHz)<br />HP製 ML115G5<br />ECCは付いてるけど<br />512MBDDR2-6400<br />HDDは標準の160GBのまま・・・<br />Non-ECC<br />4GBDDR2-6400<br />19<br />10.1.23<br />19<br />
  64. 64. Firebird2.1vsFirebird2.5<br />@WindowsServer2008<br />10.1.23<br />Copyright(c) 2009 Firebird日本ユーザー会<br />20<br />
  65. 65. Copyright(c) 2009 Firebird日本ユーザー会<br />Firebird 2.1SS vs Firebird 2.5SS<br />21<br />Firebird2.1とFirebird2.5の結果を比較<br />@Windows<br />10.1.23<br />21<br />
  66. 66. Copyright(c) 2009 Firebird日本ユーザー会<br />Firebird 2.1CS vs Firebird 2.5CS<br />22<br />Firebird2.1とFirebird2.5の結果を比較<br />@Windows<br />10.1.23<br />22<br />
  67. 67. Copyright(c) 2009 Firebird日本ユーザー会<br />Firebird 2.1SS vs Firebird 2.5SC<br />23<br />Firebird2.1とFirebird2.5の結果を比較<br />@Windows<br />10.1.23<br />23<br />
  68. 68. Firebird2.1vsFirebird2.5<br />@LinuxCentOS5.3<br />10.1.23<br />Copyright(c) 2009 Firebird日本ユーザー会<br />24<br />
  69. 69. Copyright(c) 2009 Firebird日本ユーザー会<br />Firebird 2.1SS vs Firebird 2.5SS<br />25<br />Firebird2.1とFirebird2.5の結果を比較<br />引き分け<br />@Linux<br />10.1.23<br />25<br />
  70. 70. Copyright(c) 2009 Firebird日本ユーザー会<br />Firebird 2.1CS vs Firebird 2.5CS<br />26<br />Firebird2.1とFirebird2.5の結果を比較<br />@Linux<br />10.1.23<br />26<br />
  71. 71. Copyright(c) 2009 Firebird日本ユーザー会<br />Firebird 2.1SS vs Firebird 2.5SC<br />27<br />Firebird2.1とFirebird2.5の結果を比較<br />@Linux<br />10.1.23<br />27<br />
  72. 72. MySQL5.1.40vsFirebird2.5<br />@WindowsServer2008&<br />LinuxCentOS5.3<br />10.1.23<br />Copyright(c) 2009 Firebird日本ユーザー会<br />28<br />with InnoDB<br />
  73. 73. Copyright(c) 2009 Firebird日本ユーザー会<br />MySQL5.1vsFirebird2.5SC<br />MySQL5.1.40とFirebird2.5の結果を比較<br />with InnoDB<br />@Windows<br />29<br />10.1.23<br />29<br />
  74. 74. Copyright(c) 2009 Firebird日本ユーザー会<br />MySQL5.1vsFirebird2.5SC<br />MySQL5.1.40とFirebird2.5の結果を比較<br />with InnoDB<br />@Linux<br />30<br />10.1.23<br />30<br />
  75. 75. Copyright(c) 2009 Firebird日本ユーザー会<br />MySQL5.1vsFirebird1.5SS<br />MySQL5.1.40とFirebird2.5の結果を比較<br />with InnoDB<br />引き分け<br />@Linux<br />31<br />10.1.23<br />31<br />
  76. 76. PostgreSQL8.4vsFirebird2.5<br />@WindowsServer2008&<br />LinuxCentOS5.3<br />10.1.23<br />Copyright(c) 2009 Firebird日本ユーザー会<br />32<br />
  77. 77. Copyright(c) 2009 Firebird日本ユーザー会<br />PostgreSQL8.4vsFirebird2.5CS<br />33<br />PostgreSQL8.4.1とFirebird2.5の結果を比較<br />@Windows<br />10.1.23<br />33<br />
  78. 78. Copyright(c) 2009 Firebird日本ユーザー会<br />PostgreSQL8.4vsFirebird2.5CS<br />34<br />PostgreSQL8.4.1とFirebird2.5の結果を比較<br />@Linux<br />10.1.23<br />34<br />
  79. 79. LinuxでのFirebirdが遅~~い!!<br />ファイルシステムが悪いんじゃないか?<br />10.1.23<br />Copyright(c) 2009 Firebird日本ユーザー会<br />35<br />@Linux<br />35<br />
  80. 80. Copyright(c) 2009 Firebird日本ユーザー会<br />Firebird2.5SCで検証<br />Ext3とXFSでパフォーマンスを測定<br />Ext3<br />XFS<br />@Linux<br />36<br />10.1.23<br />36<br />
  81. 81. Copyright(c) 2009 Firebird日本ユーザー会<br />Linux+XFSだと劇速! Firebird2.5SC<br />調子に乗って500クライアントもテスト!<br />XFS<br />@Linux<br />37<br />10.1.23<br />37<br />
  82. 82. Copyright(c) 2009 Firebird日本ユーザー会<br />Linux+XFSでMySQLは<br />MySQL5.1.40も500クライアントまでテスト<br />XFS<br />Firebird<br />@Linux<br />38<br />10.1.23<br />38<br />
  83. 83. Copyright(c) 2009 Firebird日本ユーザー会<br />Linux+XFSでPostgreSQLは<br />PostgreSQL8.4.1も500クライアントまでテスト<br />XFS<br />Firebird<br />@Linux<br />39<br />10.1.23<br />39<br />
  84. 84. まとめ<br /> ベンチマークはあくまで目安なので、実際の運用環境を想定して、データベースを選択しよう。<br /> Firebird2.5は、他のDBを比較しても遜色のない性能を発揮出来そう。<br /> 500クライアント以上の高負荷環境でも通用するぞ~!<br />Copyright(c) 2009 Firebird日本ユーザー会<br />40<br />10.1.23<br />40<br />
  85. 85. Copyright(c) 2009 Firebird日本ユーザー会<br />余談 LostUpdate<br />41<br />並行するトランザクションで、後から開始したトランザクションが先行するトランザクションのデータを上書きしてしまう現象<br />LostUpdateは、MySQLのFalconを除いて、他のRDBMSでは検出することが出来ない。<br />MySQLの新ストレージエンジン Falcon徹底リサーチ<br />5 トランザクション制御 - MVCCと排他制御松信嘉範2007/03/03<br />http://journal.mycom.co.jp/special/2007/falcon/004.html<br />Falcon storage engine in depth<br />http://dev.mysql.com/tech-resources/articles/falcon-in-depth.html<br />10.1.23<br />41<br />
  86. 86. MySQLにあるthread_stack<br />Firebirdのスレッドモデルでは、MySQLのようにスレッドのスタックサイズを変更出来ない。Windwosの既定値は1MBとでかい。このサイズはOSによって結構違う。<br /><ul><li>Windows 1MB
  87. 87. CentOS 16KB
  88. 88. AIX32bit 96KB
  89. 89. FreeBSD 4KB
  90. 90. MacOSX 8KB</li></ul>10.1.23<br />Copyright(c) 2009 Firebird日本ユーザー会<br />42<br />
  91. 91. threadのスタックサイズを変更<br />Firebirdのソース中、ThreadStart.cppにこの辺のことは書いてある。Windows用の_beginthreadex() API の第2パラメータを変更してベンチマークを取ってみた。<br />10.1.23<br />Copyright(c) 2009 Firebird日本ユーザー会<br />43<br />
  92. 92. Copyright(c) 2009 Firebird日本ユーザー会<br />44<br />10.1.23<br />44<br />Firebirdの本が出ました!<br />翔泳社刊<br />Firebird徹底入門<br />
  93. 93. Presented by Tomneko<br />Special thanks to Q-tan<br />

×