• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
 

[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama

on

  • 1,350 views

 

Statistics

Views

Total Views
1,350
Views on SlideShare
1,349
Embed Views
1

Actions

Likes
1
Downloads
15
Comments
0

1 Embed 1

https://twitter.com 1

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    [D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama [D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama Presentation Transcript

    • 1 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7&MySQL Labs Sales Consulting Manager, JAPAC 梶山 隆輔 / Ryusuke Kajiyama 2 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するもの です。また、情報提供を唯一の目的とするものであり、いかなる契約にも組 み込むことはできません。以下の事項は、マテリアルやコード、機能を提供す ることをコミットメント(確約)するものではないため、購買決定を行う際の判断 材料になさらないで下さい。オラクル製品に関して記載されている機能の開 発、リリースおよび時期については、弊社の裁量により決定されます。 Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の米国及びその他の国における登録商 標または商標です。他社名又は製品名は、それぞれ各社の商標である場合があります。 3 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQLのイノベーション MySQL Cluster 7.3 MySQL Migration Wizard MySQL Workbench 6.0 MySQL 5.6 MySQL 5.5 MySQL Cluster Manager Windows installer & Tools MySQL MySQL Enterprise Monitor 2.3 Applier for Hadoop MySQL Enterprise Backup Security MySQL Utilities MySQL Workbench 5.2 Scalability MySQL Cluster 7.2 MySQL Enterprise HA MySQL Cluster 7.1 O r a c l e C e r t i f i c a t i o n s Audit 4 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL: Everywhere and Growing Platform of Choice for Next Generation Web, Cloud & Embedded Applications World’s Most Popular Open Source Database Database Platform for Next Gen Web Apps Leading Database in the Cloud * Source: Linux Career IT Skills Watch update July 2013 5 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Leading Database for Web Applications Integrated with Hadoop in majority of Big Data platforms #1 Linux Career IT skill: MySQL * Downloads & Sales Growth Awards & Social Media Momentum Best of both Worlds SQL+NoSQL LAMP + Python +Node.js + Go +...
    • DMRs – Development Milestone Releases   リリース候補版の品質になった機能のみを含む   年に2-4回リリース   コミュニティでのテストや使用、フィードバックのため   機能拡張の加速   品質の改善 6 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • The Open Road to MySQL 5.6 Predictable Releases for the MySQL Community, Allowing Feedback DMR1* April 2011 DMR2 DMR3 Oct 2011 Dec 2011 DMR4 April 2012 DMR5 RC Aug 2012 Nov 2012 Optimizer: Optimizer: Optimizer: Optimizer: InnoDB: MRR, ICP, File Sort BKA, New EXPLAIN, Traces Sub-Queries JSON EXPLAIN, Sub-Queries TT, Online DDL, Memcached API Replication: Replication: GTIDs Binary Log Group Commit InnoDB: Split Kernel Mutex, MT Purge Replication: Crash-Safe, Multi-Thread Slave, Checksums InnoDB: Dump/Restore Buffer Pool More P_S Memcached API New P_S Partitioning Improvements 7 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. InnoDB: Full Text Index, Read-Only Optimizations Condition Handling Fractional Seconds TIMESTAMP & DATESTAMP Password Mgmt More P_S *Development Milestone Release More Partitioning New Server Defaults More Partitioning More GTID, TT
    • MySQL 5.7 DMR 新機能 8 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2 DMR MySQL 5.6をベースに各種機能を改良 New!   InnoDB より高いトランザクション処理性能と可用性   レプリケーション より高い拡張性と可用性   Performance Schema より詳細な性能統計情報   オプティマイザ クエリパフォーマンスのEXPLAIN可視化の改良 Available Now! Get it here: dev.mysql.com/downloads/mysql/ 9 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2 Sysbench Benchmarks Sysbench Point Select 500,000 QPS 600000 Queries per Second 500000 400000 MySQL-5.7 300000 MySQL-5.6 200000 MySQL-5.5 100000 0 8 16 32 64 128 256 512 1024 Concurrent User Sessions 95% Faster than MySQL 5.6 172% Faster than MySQL 5.5 10 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Intel(R) Xeon(R) CPU X7560 x86_64 4 sockets x 8 cores-HT (64 CPU threads) 2.27GHz, 256G RAM Oracle Linux 6.2
    • MySQL 5.7.2 Sysbench Benchmarks OLTP Read Only Transactions per Second 25000 20000 15000 MySQL-5.7 10000 MySQL-5.6 MySQL-5.5 5000 0 8 16 32 64 128 256 512 1024 Concurrent User Sessions 17% Faster than MySQL 5.6 134% Faster than MySQL 5.5 11 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Intel(R) Xeon(R) CPU X7560 x86_64 4 sockets x 8 cores-HT (64 CPU threads) 2.27GHz, 256G RAM Oracle Linux 6.2 sb_OLTP_RO_1M_8tab-ps Max-TPS
    • MySQL 5.7.2: Connections / second 新規接続の処理の高速化 Connections per second 40000 35000 MySQL 5.7.2 30000 25000 20000 15000 MySQL 5.6.9 +32% +64% 10000 5000 0 With Selects Without Select •  mysql-bench •  25 concurrent client threads •  Executing connect/select/disconnect •  100000 iterations each Facebookからの要望をベースに開発 THDの初期化処理とネットワークの初期化処理をワーカースレッドに分離 12 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • オプティマイザ 13 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2: オプティマイザ 稼働中のクエリに対するEXPLAIN   課題 - あるセッションのクエリの処理に長い時間がかかる   新しいオプション –  他のセッションに対して EXPLAIN FOR CONNECTION EXPLAIN [FORMAT=(JSON|TRADITIONAL)] [EXTENDED] FOR CONNECTION <id>; –  遅延の根本原因を発見できる –  クエリの最適化につなげられる   コネクションの<id>は SHOW PROCESSLIST で確認 14 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2: オプティマイザ JSON EXPLAINの拡張 Total query cost and Per table Volume (in gb/mb/kb) = (# of rows) * (record width) 15 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • Performance Schema 16 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2 Performance Schema メモリ利用状況   メモリに関する利用統計情報 –  200件以上のメモリ関連Instruments(統計項目)   利用統計情報をグルーピング –  メモリの利用タイプ (キャッシュ、内部バッファなど) –  スレッド/アカウント/ユーザ/ホストの間接的なメモリ利用   Attributes(属性情報)の種類 –  利用量 (バイト単位)、処理回数、最大値/最小値 17 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2 Performance Schema ストアドプログラムの稼働統計   SQL文の稼働統計を拡張 –  5.6を拡張しストアドプログラムをカバー、必要なコマンドとSQLを追加   新しいInstruments –  statement/sp/cclose, cfetch, copen –  statement/scheduler/event   新しいオブジェクトタイプ –  EVENT, FUNCTION, PROCEDURE, TRIGGER 19 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • InnoDB 21 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2: InnoDB Better Performance, Scalability   Sysbench READ ONLY の性能が 50-100% 向上(8テーブル)   Sysbench POINT SELECTにて秒間 約500,000トランザクション   Sysbench OLTP_ROにて秒間 20,000トランザクション超   5.7では明示的に START TRANSACTION READ ONLY を 実行する必要無し 22 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2: InnoDB Temporary Tables 性能の向上 2-4倍 高速化 INSERT/DELETE/ UPDATE   REDOログの書き込み、ロックおよび チェンジバッファの利用を削減 MySQL 5.7 versus 5.6 2 - 11 X Improvement Total Time in Seconds 11倍 高速化 CREATE/DROP   テーブルの作成や削除処理中のIOを 削減 4X 2X 2500 2000 1500 1000 11X 2X 5.7.2 500 0 Total time to complete in seconds * sql-bench, modified to use temp-tables * Seed size of 10K for Create/Drop * Seed size of 5M for Insert/Delete/Update 24 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 5.6.13
    • MySQL 5.7.2: InnoDB オンラインALTER TABLE の拡張   オンラインでのインデックス名の変更 –  ALTER TABLE t RENAME INDEX i1 TO i2 ALTER TABLE t RENAME INDEX i1 to i2;   オンラインでのVARCHAR列の変更 ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(255); 25 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2: InnoDB Innochecksum の改良   5.6の innochecksum –  InnoDBの表領域ページのチェックサムを算出、記録し出力   5.7での改良点: •  •  •  •  •  •  •  26 アルゴリズムを選択可能に (innodb/crc32/none) 現在のチェックサムを新しいアルゴリズムで上書き可能 新しいチェックサムで強制的に上書き可能 (無効の場合) 処理中止前に、何件の不一致まで処理するか指定可能 複数の表領域、および複数の表領域ファイルに対して実行可能 2GB 以上の表領域ファイルに対して実行可能 ページタイプごとのサマリ表を出力可能 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • レプリケーション 27 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • 同一スキーマ内でのマルチスレッド スレーブ スレーブのスループットを向上   スレーブ内の複数のワーカースレッドがトランザクションを並列で処理 –  並列処理されるトランザクションの対象データが同一で無い場合に限る –  同一スキーマ内でもマルチスレッドで処理可能   トランザクションの一貫性を保って処理   スレーブのスループットを向上   現在開発中 –  リファクタリング完了 –  チューニングや最適化は現在作業中 28 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.6の準同期レプリケーション Master Slave App commits ストレージエンジンへのコミットを行って からスレーブにトランザクションを送る   スレーブからの応答がタイムアウトしても、 トランザクションとしては成功となる Written to Binary log Commit to SE & externalized   スレーブにトランザクションが渡されてい Send to slave(s) Write to relay log Ack Commit Apply txn 29   マスターはバイナリログへの書き込みと Copyright © 2013, Oracle and/or its affiliates. All rights reserved. ない状態で、マスタが落ちると、成功した トランザクションを喪失する
    • “Lossless”準同期レプリケーション Master Slave App commits ションを受信するまで以下の処理を待つ –  ストレージエンジンへのコミット Written to Binary log –  他のクライアントから変更へのアクセス –  アプリケーションへのコミットの応答 Send to slave(s) Write to relay log Commit to SE & externalized   スレーブが変更点を反映させるまでは待 たない –  遅延を最小化   スレーブに安全にコピーされるまで他の Ack Commit Apply txn 30   マスターは指定のスレーブがトランザク Copyright © 2013, Oracle and/or its affiliates. All rights reserved. トランザクションが新しいデータを変更で きないように
    • 準同期レプリケーション     MySQL 5.6 Master Slave MySQL 5.7 “Lossless” Master App commits App commits Written to Binary log Written to Binary log Commit to SE & externalized Send to slave(s) Write to relay log Send to slave(s) Write to relay log Ack Commit Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Commit to SE & externalized Ack Commit Apply txn 31 Slave Apply txn
    • マルチソース レプリケーション Master 1 Master 2 … Master N Binlog Binlog … Binlog labs.mysql.com   複数のマスターでの変更点を1台 のスレーブに集約 –  全ての「シャード」のデータを単一 のビューで分析 IO 1 IO 2 … IO N Relay 1 Relay 2 … Relay N Coordinator Coordinator Coordinator Coordinator W1 W2 … WX W1 W2 … WX W1 W2 Slave 32 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. … WX W1 W2 … –  バックアップ用にデータを集約 WX   準同期レプリケーションおよびマ ルチスレッド スレーブに対応   マスターごとにフィルタと制御可能 となる予定   アプリケーションはマスタごとに個 別にアクセス
    • セキュリティ 33 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2: セキュリティ – 監査ログ MySQL Enterprise Audit   MySQL監査プラグインを有効にして監査ログを出力 –  「誰が、いつ、何を、どこで、どのような」   ユーザ、日時、ホスト、ステータス …   接続/切断、クエリ、DML、DDL、サーバ&監査の開始/停止…   MySQL 5.7 での改良点 –  Oracle Audit Vault との統合を改良 –  XMLのサブ要素を使用 –  タイムゾーン 34 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2: セキュリティ – 監査ログ 5.6 と 5.7 の比較 5.6 <AUDIT_RECORD TIMESTAMP="2013-04-15T15:27:27" NAME="Query" CONNECTION_ID="3“ STATUS="0" SQLTEXT="SELECT 1“ /> 35 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 5.7
    • その他の改良点 36 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2: トリガの改良 一つのテーブルに複数のトリガ   これまで –  各トリガの組み合わせはテーブル当たり1つずつ   (INSERT, UPDATE, DELETE) X (BEFORE, AFTER)   5.7 –  複数のトリガを指定可能 –  実行順を指定可能 37 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2: トリガーの改良 一つのテーブルに複数のトリガー   テーブル t1 に3個の AFTER INSERT トリガー –  CREATE TRIGGER TRIG1 AFTER INSERT ON t1 FOR EACH ROW ... ; –  CREATE TRIGGER TRIG2 AFTER INSERT ON t1 FOR EACH ROW ... ; –  CREATE TRIGGER TRIG1A AFTER INSERT ON t1 FOR EACH ROW FOLLOWS TRIG1 ... ;  実行順は: 1) TRIG1 2) TRIG1A 3) TRIG2  関連するInformation_Schema –  SELECT CREATED FROM INFORMATION_SCHEMA.TRIGGERS –  SELECT ACTION_ORDER FROM INFORMATION_SCHEMA.TRIGGERS –  SHOW CREATE TRIGGER 38 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2:トリガの改良 SQL文実行の最後で制約のチェック   テーブル ‘t1’ には –  ‘c1’ 列がNOT NULL となっている; –  BEFORE INSERT トリガが SET NEW.c1 = 1; を実行 (NULLではない)   SQL文 INSERT INTO t1 VALUES(NULL) または UPDATE t1 SET c1 = NULL –  … –  5.6 - 失敗   "ERROR 1048 (23000): Column 'C1' cannot be null" –  5.7 - 成功 39 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2: エラーログ ログレベルの制御   3つのログレベル: 1.  エラー(ERROR)のみ 2.  エラー(ERROR) + 警告(WARNING) 3.  エラー(ERROR) + 警告(WARNING) + 情報(NOTE) ※デフォルト値   設定ファイルまたは起動オプションで指定 --log-error-verbosity=1 –  --log-error-verb   稼働中 SET GLOBAL log_error_verbosity=1; 40 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2: エラーログ 出力形式の改良 •  UTC タイムスタンプ •  --log_timestamps = = SYSTEM UTC (default) --log_timestamps SYSTEM | | UTC (default) •  フォーマットの変更 •  タイムスタンプは ISO 8601 / RFC 3339 形式, マイクロ秒単位 •  ログテーブル, TIMESTAMP(6) •  プロセスIDは起動時のみ出力 •  可能な場合は接続IDを出力、それ以外は “0” 41 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2: エラーハンドリング Stacked Diagnostics   スタックされた例外情報を取得するコマンドを実装 (SQL標準で定義) GET –  . STACKED DIAGNOSTICS –  スタックされた領域から情報を取得 –  GET [CURRENT] DIAGNOSTICS は現在の診断領域から情報を取得   ストアドプログラムの開発者にメリット –  より多くの情報を取得可能 –  エラー情報を調査して修正が可能 42 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2: Error Reporting 例: Stacked Diagnostics CREATE TABLE ids(id INT NOT NULL, UNIQUE(id)); CREATE TABLE errors(id INT NOT NULL, text VARCHAR(2000)); CREATE PROCEDURE insert_id(id INT) BEGIN DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN GET STACKED DIAGNOSTICS CONDITION 1 @msg = MESSAGE_TEXT; INSERT INTO errors VALUES(id, @msg); GET STACKED DIAGNOSTICS CONDITION 1 @errno = MYSQL_ERRNO; IF @errno = 1213 THEN RESIGNAL; Running END IF; > CALL insert_id(0);CALL insert_id(1);CALL insert_id(0); END; > select text from errors; INSERT INTO ids VALUES(id); Duplicate entry '0' for key 'id' END; 43 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL 5.7.2: Error Reporting 例: Clear Diagnostics Area mysql> DROP TABLE no_such_table; ERROR 1051 (42S02): Unknown table 'test.no_such_table' mysql> CREATE EVENT e ON SCHEDULE EVERY 1 SECOND DO DELETE FROM t; Query OK, 0 rows affected (0.35 sec) // 5.6: mysql> SHOW ERRORS; +-------+------+------------------------------------+ | Level | Code | Message | +-------+------+------------------------------------+ | Error | 1051 | Unknown table 'test.no_such_table' | +-------+------+------------------------------------+ 1 row in set (0.00 sec) // 5.7: mysql> SHOW ERRORS; Empty set (0.00 sec) 44 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL Labs Releases 45 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL Labs Releases 新しい機能をいち早く公開する「実験室」   最新機能をいち早くお試しいただき、フィードバックをいただくため   DMRに含めることができる品質にはなっていない   本番環境での利用はお勧めしない   実験的とはいえ、将来的にはメインの開発ツリーに含めることを視野に –  例) MySQL 5.6のInnoDB memcached API http://labs.mysql.com Please, DO NOT USE THESE BINARIES IN PRODUCTION. 46 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • labs.mysql.com 47 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL Labs Releases 2013年11月現在のLabs版  Hadoop Applier for MySQL  MySQL JSON UDFs  MySQL Multi-source Replication  MySQL Utilities - Fabric 48 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • Hadoop Applier for MySQL 49 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL in the Big Data Lifecycle DECIDE ACQUIRE BI Solutions Applier ANALYZE 50 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. ORGANIZE
    • MySQL Applier for Hadoop MySQLからHadoopへのリアルタイムストリーミング   バイナリログの内容をlibhdfs ライブラリ経由でHDFSに書 き込み   リアルタイムでのデータ分析 を実現   Hadoop用各種ツールと MySQLデータの統合 http://labs.mysql.com/ 51 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • Mapping Between MySQL and HDFS Schema 52 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL JSON UDFs 53 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL JSON UDFs JSONデータを扱うユーザ定義関数   CのプログラムをMySQLの関数として利用するUDFを活用 http://dev.mysql.com/doc/refman/5.6/en/adding-functions.html   JSONデータの検証、検索、更新など行う関数群   CREAET FUNCTION コマンドで追加 http://www.slideshare.net/yoyamasaki/my-sql-jsonudf 54 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • セットアップ方法(Linux/UNIX環境の場合) ※詳細はREADMEファイル参照 1. http://labs.mysql.com/ から“MySQL JSON UDFs”を   ダウンロード 2.ダウンロードしたファイルに含まれている“libmy_json_udf.so”を plugin_dir に配置   (plugin_dirの確認方法:mysql> show global variables like 'plugin_dir';) 3.CREATE FUNCTIONコマンドでUDFを作成 ※UDF(User-DefinedFunction:ユーザ定義関数) 55 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • セットアップ方法(Linux/UNIX環境の場合) ※詳細はREADMEファイル参照 ■CREATE FUNCTION mysql> create function json_valid returns integer soname 'libmy_json_udf.so'; mysql> create function json_search returns string soname 'libmy_json_udf.so'; mysql> create function json_extract returns string soname 'libmy_json_udf.so'; mysql> create function json_replace returns string soname 'libmy_json_udf.so'; mysql> create function json_append returns string soname 'libmy_json_udf.so'; mysql> create function json_remove returns string soname 'libmy_json_udf.so'; mysql> create function json_set returns string soname 'libmy_json_udf.so'; mysql> create function json_merge returns string soname 'libmy_json_udf.so'; mysql> create function json_contains_key returns integer soname 'libmy_json_udf.so'; 56 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • 補足:READMEファイルのバグ Linux/UNIX環境に関して、ファンクション作成コマンドが 以下の通り紹介されているが、ライブラリファイルの名前は ‘libmy_json_udf.so’となっている。  ファンクション作成コマンド   create function json_valid returns integer soname 'libmy_json.so'; ※http://bugs.mysql.com/bug.php?id=70392 57 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • サンプルテーブル mysql> select * from json; +----+--------------------------------------------------------------------------------+ | id | col1 | +----+--------------------------------------------------------------------------------+ | 1 | {"id":1,"Name":"Farmer grandmas","price":50000,"Conditions":["farms",15]} | | 2 | {"id":2,"Name":"Worker grandmas","price":300000,"Conditions":["factories",15]} | | 3 | {"id":3,"Name":"Miner grandmas","price":1000000,Conditions:["mines",15]} | | 4 | {"id":4,"Name":"Yoshiaki Yamasaki"} | +----+--------------------------------------------------------------------------------+ 4 rows in set (0.00 sec) ※id=4の列はNameだけ 58 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. ※id=3の列には、フォーマット間違い有り (””が抜けている)
    • json_valid:JSONドキュメントのフォーマットチェック (フォーマットが正しければ1、正しくなければ0) mysql> select id,json_valid(col1) from json; +----+------------------+ | id | json_valid(col1) | +----+------------------+ | 1 | 1 | | 2 | 1 | | 3 | 0 | | 4 | 1 | +----+------------------+ 4 rows in set (0.00 sec) 59 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • json_search:値が含まれるキーを検索 mysql> select id,json_search(col1,'"Farmer grandmas"') from json where id=1; +----+---------------------------------------+ | id | json_search(col1,'"Farmer grandmas"') | +----+---------------------------------------+ | 1 | Name:: | +----+---------------------------------------+ 1 row in set (0.00 sec) mysql> select json_search(col1,'"farms"') from json; +-----------------------------+ | json_search(col1,'"farms"') | +-----------------------------+ | 0:Conditions:: | | NULL | | NULL | | NULL | +-----------------------------+ 4 rows in set (0.00 sec) 60 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • json_replace:値を置換 mysql> select id,json_replace(col1,'Conditions','0','10') from json where id=1; +----+----------------------------------------------------------------------+ | id | json_replace(col1,'Conditions','0','10') | +----+----------------------------------------------------------------------+ | 1 | {"id":1,"Name":"Farmer grandmas","price":50000,"Conditions":[10,15]} | +----+----------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> select id,json_replace(col1,'Conditions','1','10') from json where id=1; +----+---------------------------------------------------------------------------+ | id | json_replace(col1,'Conditions','1','10') | +----+---------------------------------------------------------------------------+ | 1 | {"id":1,"Name":"Farmer grandmas","price":50000,"Conditions":["farms",10]} | +----+---------------------------------------------------------------------------+ 1 row in set (0.00 sec) 61 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • Multi-source Replication 62 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • マルチソース レプリケーション Master 1 Master 2 … Master N Binlog Binlog … Binlog labs.mysql.com   複数のマスターでの変更点を1台 のスレーブに集約 –  全ての「シャード」のデータを単一 のビューで分析 IO 1 IO 2 … IO N Relay 1 Relay 2 … Relay N Coordinator Coordinator Coordinator Coordinator W1 W2 … WX W1 W2 … WX W1 W2 Slave 63 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. … WX W1 W2 … –  バックアップ用にデータを集約 WX   準同期レプリケーションおよびマ ルチスレッド スレーブに対応   マスターごとにフィルタと制御可能 となる予定   アプリケーションはマスタごとに個 別にアクセス
    • MySQL Utilities - Fabric 64 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL Utilities 運用管理に関するPythonスクリプト データベース管理 データベース運用 MySQL Utilities レプリケーション管理 設定管理 66 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL Utilities データおよびデータベース管理 mysqldbcompare 同一サーバ内または2つのサーバ間のデータや定義の比較 mysqldbcopy mysqldbexport データとメタデータをエクスポート mysqldbimport データとメタデータをインスポート mysqldiff 67 別のサーバにデータベースをコピー 2つのサーバ間のテーブルなどオブジェクトの定義を比較 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL Utilities サーバ運用各種 mysqldiskusage デーブルおよびデータファイルのサイズを表示 mysqlindexcheck インデックスの重複をチェック mysqlmetagrep mysqlprocgrep INFORMATION_SCHEMA.PROCESSLISTをgrep mysqluserclone 68 テーブル定義などのメタデータをgrep 別のサーバにユーザアカウントををコピー Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL Utilities レプリケーション関連 mysqlreplicate mysqlrplcheck レプリケーションが正しく設定されているかの確認 mysqlrplshow レプリケーショントポロジ(親子関係)を図示 mysqlfailover レプリケーションの自動フェールオーバー switchover 手動でのレプリケーションの切り替え mysqlrpladmin 69 レプリケーションを設定 レプリケーションの各種管理 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL Utilities 設定関連&その他 mysqlserverclone 既存のMySQLサーバのコピーを作成 mysqlserverinfo mysqluc 70 サーバの稼働状況を表示 MySQL Utilitiesコマンド用ユーザコンソール Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL Utilities - Fabric labs.mysql.com   「シャーディング」による拡張性 Application map s ping   コネクタ Connector SQL MySQL Fabric –  Python –  Java –  PHP   アプリケーションでの分割キー –  Range または Hash –  シャード再構成も可能 –  シャード全体の更新も可能 Read-slaves Master group 71 Read-slaves Master group Copyright © 2013, Oracle and/or its affiliates. All rights reserved.   MySQL Utilities 1.4.0として提供
    • MySQL Utilities - Fabric + MySQL Multi-source Replication + Multi Thread Slave 72 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL開発の優先課題 73 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • MySQL開発の優先課題   Web、クラウドインフラ、組み込みへの最適化   よりシンプルに、プラガブル アーキテクチャ -  メンテナンス性向上、さらなる拡張性 -  さらなるNoSQLオプション(HTTP, JSON, JavaScript, etc.)   リファクタリング -  InnoDBのデータディクショナリ -  オプティマイザ/パーサ/プロトコル   InnoDB   性能、オンラインDDL、バッファプール   高可用性構成、レプリケーション、シャーディング 74 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • The world's most popular open source database 世界で最も普及しているオープンソース データベース 75 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • 76 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
    • 77 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.