私は如何にして私は如何にして
詳解詳解 MySQL 5.7MySQL 5.7 をを
執筆するに至ったか執筆するに至ったか
奥野 幹也
Twitter: @nippondanji
mikiya (dot) okuno (at) gmail (dot) com
@ 詳解 MySQL 5.7  出版記念交流会
免責事項
本プレゼンテーションにおいて示されている見解は、私
自身の見解であって、オラクル・コーポレーションの見
解を必ずしも反映したものではありません。ご了承くだ
さい。
自己紹介
●
MySQL サポートエンジニア
– 日々のしごと
● トラブルシューティング全般
●
Q&A 回答
● パフォーマンスチューニング
など
● ライフワーク
– 自由なソフトウェアの普及
● オープンソースではない
●
GPL 万歳!!
– 最近はまってる趣味はリカンベント(自転車)
●
ブログ
– 漢のコンピュータ道
– http://nippondanji.blogspot.com/
おかげさまで
新書籍発売と
相成りました。
ありがとうございます!
詳解 MySQL 5.7
止まらぬ進化に乗り遅れないためのテクニカルガイド
●
MySQL 5.7 の新機能を網羅的に解説
– 175 の新機能
– WorkLog/Bug Id つき
– コンセプト、仕組み、使い方
●
新機能の理解に必要な前提知識
– 古いバージョンでも適用可能
– アーキテクチャを理解することで
本物の理解を
MySQL 5.7 の
新機能概要
MySQL 5.7 の数多くの新機能
●
実に 150 以上もの新機能が追加された!!
– MySQL 5.7 の新機能完全リスト
https://yakst.com/ja/posts/3037
– yoku0825++
●
レプリケーション関連
●
InnoDB 関連
● オプティマイザー関連
●
セキュリティ関連
●
パフォーマンススキーマ関連
●
GIS 関連
●
JSON 関連
etc etc...
レプリケーションの新機能
● マルチスレッドスレーブの改良
●
マルチソースレプリケーション
● 準同期レプリケーションの改良
– ロスレスレプリケーション
– パフォーマンスの改善
– ACK を返すスレーブ数の指定
●
GTID の改良
– スレーブでの管理が効率化
– 再起動時の GTID 計算方法が効率化
● オンライン操作の拡充
– GTID 有効化
– CHAMGE MASTER の一部
– レプリケーションフィルター
オプティマイザの新機能
●
EXPLAIN for CONNECTION
●
JSON EXPLAIN
●
コストモデル
– JOIN の順序選択
– 統計情報の正確性
– コストの係数のユーザーによる設定
●
GROUP BY
●
FROM 句のサブクエリ
●
IN サブクエリ
●
UNION ALL
● ソート
●
テンポラリテーブル
InnoDB の新機能
● 一般テーブルスペース
●
テンポラリテーブルの InnoDB 化
●
バッファプールのオンラインリサイズ
●
UNDO ログの自動トランケート
●
32/64KB ページのサポート
●
REDO ログフォーマットの改善
● バッファプールをダンプする割合の指定
●
ページ統合におけるページ充填率の指定
●
コピーしない ALTER TABLE 操作の増加
InnoDB の新機能 つづき
● 全文検索用プラガブルパーサーのサポート
– ngram あるいは MeCab による日本語の全文検索
● 全文検索の最適化
● 空間インデックスのサポート
●
透過的テーブル圧縮
●
透過的テーブルスペース暗号化
● ダブルライトが不要なとき自動的に無効化
●
NUMA サポートの追加
●
InnoDB モニターの有効化方法変更
● 情報スキーマの改良
●
デフォルト行フォーマットの指定
InnoDB の新機能
性能改善系
● テンポラリテーブルのための最適化
●
RO トランザクションの性能改善
●
RW トランザクションの性能改善
– index­>lock の競合改善( SX ロック)
●
リードビュー作成の性能改善
●
trx_t のキャッシュ効率改善
●
AHI のミューテックス競合改善
●
ページクリーナーのマルチスレッド化
●
フラッシュアルゴリズムの改善
● クラッシュリカバリの性能改善
●
ログファイル書き込みの性能改善
●
インデックス作成の高速化
etc
セキュリティ関係の新機能
● パスワード期限の設定
●
ユーザーのロック、アンロック
●
SET PASSWORD コマンドの仕様変更
●
CREATE USER … IF NOT EXISTS
●
ログイン不可能なユーザーアカウント
●
SSL のセットアップが容易に
– キーファイルの自動生成
– mysql_ssl_rsa_setup
● 透過的テーブルスペース暗号化
●
デフォルトの状態がセキュアに
– test データベースの廃止
– 匿名ユーザーの廃止
– localhost 以外の root の廃止
その他の新機能
●
JSON データ型のサポート
● 生成カラム
●
X DevAPI
● トリガーが同一種類のものを複数定義できるようになった
●
sys スキーマが標準で同梱されるようになった
●
パーティショニングされたテーブルの改良
● クライアント系コマンドの改良
●
STRICT モードと IGNORE のリファクタリング
●
いくつかのシステムテーブルが InnoDB に変更
etc etc
なんか・・・
多すぎね・・・?
新機能が多いのはいいけれども・・・
● 素晴らしい新機能の面々!!
– MySQL 5.6 からの正常進化
– 有用な機能多数
– まさに宝の山!!
● 多すぎる色々と問題あるよね
– 多すぎて全体像が把握できない
● 宝の持ち腐れでは・・・
– マーケティングトークにはいいけれども・・・
● 製品はマーケティングのためのものではない!!
– みんな使いこなせるのか?
● 製品は使いこなせてナンボ!!
どげんかせんと
いかん・・・・・!!
使いこなせるか
不安なら
解説書を書けば
いいじゃない!!
新機能解説書なんて
売れるのか・・・?
● 企画としての不安はあったけれども、ユーザーにとって必要
なものだと思った。
●
普段から付き合いのある G 社某氏に相談
– あれ・・・
– 目が曇った・・・
– やっぱり、ダメかも。
● 坂井さんに愚痴る
– 翔泳社さんを紹介される。
– 紹介から詳解へ至る。
ページ数、多いですね。
● 最初に書いた数章で多くなり過ぎないよう釘を刺される。
– 余談:鍵本は当初800ページありました・・・w
– 新機能が多いんだから仕方がないでしょ!!
– と思いつつもスリムな書籍に仕上げなければ・・・
●
多くなり過ぎないよう意識した内容に。
– 基本的なコンセプトが理解できる。
● 必要があればアーキテクチャの説明も。
– 新機能の効果が分かる。
– 使い方、使いどころが分かる。
– さらなる詳細は WorkLog で。
新機能が分かるって
どういうこと?
● マーケティングトークは核心に触れていない!!
●
仕組みが分かる
– そもそものアーキテクチャの理解
– どんな課題があったのか
– どこがどう変わったのか
● 使い方が分かる
– 使いどころ
– 具体的な使い方
– セットアップ手順など
本書の構成
●
第 1 章: MySQL の概要
– MySQL の紹介
– 過去のバージョンにおける機能追加の歴史
●
以降の章はカテゴリごとの新機能の紹介
– 第 2 章:レプリケーション
– 第 3 章:オプティマイザ
– 第 4 章: InnoDB
– 第 5 章:パフォーマンススキーマと sys スキーマ
– 第 6 章: JSON データ型
– 第 7 章:パーティショニング
– 第 8 章:セキュリティ
– 第 9 章:クライアント&プロトコル
– 第 10 章:その他
各章の構成
● 冒頭部分で新機能を理解するための前提知識を詳解
– 基本的なコンセプト
– アーキテクチャ
– 使い方の詳解など
●
各章のテーマに沿った新機能を詳解
– 新機能が何の課題を解決したかを具体的に解説
– 新機能にひとつひとつ番号を追加
● ディスカッションするときのリファレンスとして
難しい、あるいは分かりづらい
ポイントもついでに解説
●
第 3 章:オプティマイザ
– MySQL の JOIN のアルゴリズム
– オプティマイザトレース
●
第 4 章: InnoDB
– 教科書的なアーキテクチャ
– 特徴的なアーキテクチャ
●
第 5 章:パフォーマンススキーマと sys スキーマ
– パフォーマンススキーマの基本的な使い方
●
第 8 章:セキュリティ
– 権限システムの概要
– プロキシーユーザー
巻末付録: WorkLog/Bug
● 徹底的に詳細を知りたい貴方へ・・・
Q&Aご静聴ありがとうございました。

私は如何にして詳解 MySQL 5.7を執筆するに至ったか