オラクルにおけるMySQL戦略と最新版 MySQL 5 · 2011. 2. 25. · MySQL Server 5.1 +...
Transcript of オラクルにおけるMySQL戦略と最新版 MySQL 5 · 2011. 2. 25. · MySQL Server 5.1 +...
<Insert Picture Here>
オラクルにおけるMySQL戦略と最新版 MySQL 5.5
日本オラクル MySQLグローバルビジネスユニット梶山 隆輔, MySQL Principal Sales Consultant, Asia Pacific & Japan
2
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。
OracleとMySQLは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright© 2011, Oracle. All rights reserved.
The world's most popular open source database世界で最も有名なオープンソース データベース
MySQL 60.5% PostgreSQL 51.9%
出典:「第3回オープンソースソフトウエア活用ビジネス実態調査(2009年度調査)」独立行政法人 情報処理推進機構
PostgreSQL
MySQL
PostgreSQL
Oracle
SQL Server
IBM DB2
MySQL出典:「ITmediaリサーチインタラクティブ
第6回調査:DBMS」 ITmediaエンタープライズ、ITR
Who is Using MySQL – The Top 20 Websites
1. Google2. Facebook3. Youtube4. Yahoo5. Windows Live6. Wikipedia7. Baidu8. Blogger9. MSN10. QQ
11. Twitter12. Yahoo JP13. Google IN14. Taobao15. Google DE16. Google HK17. Wordpress18. Amazon.com19. Google UK20. Sina
...and many more: Flickr, Second Life, Craigslist, Slashdot, LiveJournal,Del.icio.us, Pricegrabber.com, Weather.com etc.
Alexa - Top Site in Japan (Dec. 2010)1. Yahoo!Japan2. Google JP3. FC24. YouTube5. 楽天市場6. Amebaブログ7. Google8. ライブドア9. Wikipedia10.Amazon JP
11. goo12. mixi13. ニコニコ動画14. Twitter15. MSN16. Ameba17. 2ちゃんねる18. はてな19. Facebook20. @nifty
...ほかにも、モバゲー、GREE、ハンゲーム、食べログ、DMM.com、 JWord、dwango、pixiv、オールアバウト、クックパッド、SONY Life-Xなど
コミュニティ版と商用版
→ データベース機能はコミュニティ版にも「全部入り」
プラガブル ストレージエンジン→ テーブル毎に機能変更可能なMySQL"だけ"の機能
オープンソース&企業としての開発と管理
→ 全てを知るエンジニアによる責任を持ったサポート
MySQL Strategy
Investment in MySQLRapid Innovation
• Make MySQL a Better MySQL• #1 Open Source Database for Web Applications• Most Complete LAMP Stack• Telecom & Embedded
• Develop, Promote and Support MySQL• Improve engineering, consulting and support• Leverage 24x7, World-Class Oracle Support
• MySQL Community Edition• Source and binary releases• GPL license
Oracle + MySQL Customers
• Product Integration• Oracle GoldenGate (Complete!)• Oracle Enterprise Linux + Oracle VM (CY 2011)• Oracle Secure Backup (CY 2011)• Oracle Audit Vault (CY 2011)• Oracle Enterprise Manager (CY 2011)
• Support• Leverage 24x7, World-Class Oracle Support• MyOracle Support
Multiple Platforms Multiple Languages
C C++ C#
MySQL is Everywhere
MySQL最新情報
MySQL 5.5
InnoDBがデフォルトのストレージエンジンに• ACIDトランザクション、外部キー、クラッシュリカバリ• 性能/CPUスケーラビリティの向上、データ圧縮
高可用性の向上• 準同期型(Semi-synchronous)レプリケーション• レプリケーション・ハートビート
ユーザビリティの向上• SIGNAL/RESIGNAL• パーティショニングオプション追加• PERFORMANCE_SCHEMA
4バイトUTF-8のサポート
GA
MySQL 5.5 - 性能の向上
• InnoDBの性能改善点• Multiple Buffer Pool Instances• Multiple Rollback Segments• Extended Change Buffering
(with delete buffering, purge buffering)• Improved Purge Scheduling• Improved Log Sys mutex• Separate Flush List mutex
• MySQLサーバの性能改善点• Better Metadata Locking within Transactions• Split LOCK_open mutex• Eliminated LOCK_alarm mutex as bottleneck• Eliminated LOCK_thread_count as bottleneck• Improved Performance/Scale on Win32, 64
• クラッシュリカバリの性能が10倍以上向上
Intel Xeon X7460 x86_64 4 CPU x 6 Cores/CPU 2.66 GHz, 32GB RAM Fedora 10
MySQL 5.1.40(InnoDB built-in)
MySQL 5.1.40 (InnoDB Plug-in)
MySQL 5.5.4 (New InnoDB)
MySQL 5.5 Sysbench ベンチマーク
MySQL 5.1.40(InnoDB built-in)
MySQL 5.1.40 (InnoDB Plug-in)
MySQL 5.5.4 (New InnoDB)
Intel Xeon X7460 x86_64 4 CPU x 6 Cores/CPU 2.66 GHz, 32GB RAM Fedora 10
MySQL 5.5 Sysbench ベンチマーク
MySQL 5.5 Scales on multi core SysBench Read Write
MySQL 5.1
MySQL 5.5.3
MySQL 5.5.4
AMD Opteron 7160 (Magny-Cours) @2100 MHz 64 GB memory 2 x Intel X25E SSD drives OS is Oracle Enterprise Linux with the Enterprise Kernel 4 sockets with a total of 48 cores.
Tran
sact
ions
/Sec
ond
Improved Recovery Performance
Crash Recovery
0
50
100
150
200
250
Total Scanning Log Applying
Min
utes
plugin 1.0.6InnoDB 1.1
5.1 5.1 5.1
5.5 5.5 5.5
Intel Xeon X7460 x86_64 4 CPU x 6 Cores/CPU 2.66 GHz, 32GB RAM Fedora 10
50 warehousesDatabase=9800MBInnodb_log_file_size=2x1950MBBuffer_pool-12GBStarted tested, killed server@5 mins
> 10x recovery performance gainfor MySQL 5.5 over 5.1
MySQL on WindowsThe Right Choice
WindowsはMySQLにとって重要なプラットフォーム• MySQL利用アプリの開発環境としての利用が最多• Making MySQL better on Windows
パフォーマンス• Windows上での性能改善• MySQL 5.5 Benchmarks
低コスト• より安価なソリューション• 管理の容易さ
より便利な利用方法• MySQL Workbench• New Connector/NET 6.3
クロスプラットフォーム• 20以上のプラットフォーム• 特定OSへのロックイン無し
MySQL 5.5 SysBench BenchmarksWindows
MySQL 5.1.50(InnoDB built-in)
MySQL 5.1.50 (InnoDB Plug-in)
MySQL 5.5.6 (New InnoDB)
Intel x86_644 CPU x 2 Cores/CPU3.166 GHz, 8GB RAMWindows Server 2008
538% performance gainfor MySQL 5.5 over 5.1.50; at scale
MySQL 5.5 SysBench BenchmarksWindows
MySQL 5.1.50(InnoDB built-in)
MySQL 5.1.50 (InnoDB Plug-in)
MySQL 5.5.6 (New InnoDB)
Intel x86_644 CPU x 2 Cores/CPU3.166 GHz, 8GB RAMWindows Server 2008
1561% performance gainfor MySQL 5.5 over 5.1.50; at scale
MySQL Server 5.1 + InnoDB Plugin
• 現在のMySQL 5.1に新ストレージエンジンInnoDB Pluginを同梱 (5.1.38から)※デフォルトは従来版のInnoDB
• InnoDB Pluginの新機能:• スケーラビリティ / 性能改善
Google提供のパッチによる改善• テーブルデータ圧縮• インデックス作成高速化• パフォーマンス関連メタデータ追加
• プラグイン部分は2010年4月にGA
非同期レプリケーション
Application
Master
Connection Thread
Data Binlog
Slave
DataRelaylog
Commit
ChangingData
ChangingBinlog
Replication
Response
ChangingData
Copyright Oracle Corporation 2010 24
MySQL 5.5のレプリケーション改善点
1. 準同期(Semisynchronous)レプリケーションスレーブに変更点を転送してからアプリケーションに応答を返すため、信頼性が向上
2. スレーブでのfsync改良&リレーログの自動復旧fsyncsを改良しスレーブの障害時のログ破損を回避。破損した場合にも自動普及
3. レプリケーション ハードビート障害発生検知のメカニズムの精度を向上
4. サーバ毎のレプリケーション フィルタリング特定のサーバIDを持つマスターのイベントを無視
Copyright Oracle Corporation 2010 25
MySQL 5.5のレプリケーション改善点
5. スレーブでのデータ型変換の自動化(RBR)マスターとスレーブ間でデータ型が異なる場合に自動的に型を変換
6. ログを個別にフラッシュ'FLUSH LOGS'実行時にログを選択してフラッシュ可能に
7. トランザクション非対応に関係なく安全にログに記録InnoDBとMyISAMのテーブルを同一のトランザクション内で更新した場合、コミット後に全変更点をバイナリログに記録
準同期レプリケーション
Application
Master
Connection Thread
Data Binlog
Slave
DataRelaylog
Commit
ChangingData
ChangingBinlog
Replication
ResponseChanging
Data
Response
UTF-8の符号体系
byte 文字種 5.1 5.51 ASCII ○ ○
2 ラテン、ギリシャ、アラビア等 ○ ○
3 CJK(BMP)、インド系諸文字等 ○ ○
4 古代文字、3に含まれない漢字 × ○New!!
第3・第4水準漢字の一部
28
4バイトUTF-8対応
• MySQL 5.1のUTF-8> 基本多言語面(BMP)のみをサポート> 1文字あたり最大3バイトまで> 文字コード名はutf8> 4バイトに割り当てられた文字を使いたい場合には、binary文字コードで代用。(ソート順が・・・)
• MySQL 5.5のUTF-8> 追加面をサポート。
Unicodeで定義されている漢字をすべて利用可能に!!– utf8: 最大3バイト、従来と互換性あり– utf8mb3: utf8へのエイリアス– utf8mb4: 4バイト対応
日付カラムの値を直接書けるようになった!~ BEFORE ~
create table t1 ( id int unsigned not null auto_increment, mydate date not null, primary key(id,mydate)) partition by range (to_days(mydate)) ( partition p1 values less than (to_days('2000-04-01')), partition p2 values less than (to_days('2001-08-01')), partition p3 values less than (to_days('2004-11-01')), partition p4 values less than (to_days('2008-01-01')), partition p5 values less than (to_days('2010-03-01')), partition p6 values less than (to_days('2011-04-01')), partition p7 values less than (maxvalue));
日付カラムの値を直接書けるようになった!~ AFTER ~
create table t2 ( id int unsigned not null auto_increment, mydate date not null, primary key(id,mydate)) partition by range columns (mydate) ( partition p1 values less than ('2000-04-01'), partition p2 values less than ('2001-08-01'), partition p3 values less than ('2004-11-01'), partition p4 values less than ('2008-01-01'), partition p5 values less than ('2010-03-01'), partition p6 values less than ('2011-04-01'), partition p7 values less than (maxvalue));
FROM_DAYS()で日付を表示→面倒!
ちなみに従来の仕様だと・・・
CREATE TABLE `t1` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `mydate` date NOT NULL, PRIMARY KEY (`id`,`mydate`)) ENGINE=InnoDB DEFAULT CHARSET=utf8/*!50100 PARTITION BY RANGE (to_days(mydate))(PARTITION p1 VALUES LESS THAN (730576) ENGINE = InnoDB, PARTITION p2 VALUES LESS THAN (731063) ENGINE = InnoDB, PARTITION p3 VALUES LESS THAN (732251) ENGINE = InnoDB, PARTITION p4 VALUES LESS THAN (733407) ENGINE = InnoDB, PARTITION p5 VALUES LESS THAN (734197) ENGINE = InnoDB, PARTITION p6 VALUES LESS THAN (734593) ENGINE = InnoDB, PARTITION p7 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
複数のカラムの値を組み合わせ!
create table t3 ( id int unsigned not null auto_increment, myyear smallint not null, mymonth tinyint unsigned not null, primary key(id,myyear,mymonth)) partition by range columns (myyear,mymonth) ( partition p1 values less than (2000, 4), partition p2 values less than (2001, 8), partition p3 values less than (2004, 11), partition p4 values less than (2008, 2), partition p5 values less than (2010, 3), partition p6 values less than (2011, 4), partition p7 values less than (maxvalue, maxvalue));
5.5MySQL Server - GA• InnoDBがデフォルトストレージエンジン• 大幅な性能&スケーラビリティの向上• 準同期型(Semi-synchronous)レプリケーション
• 4バイトUTF-8のサポート
New MySQL Enterprise Edition運用管理に必要な機能とサポートを提供するパッケージ
• 全エディションで24時間365日&長期サポート提供• MySQL Enterprise Backup等の新機能を追加
Copyright© 2010, Oracle. All rights reserved. 34