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

26
私は如何にして 私は如何にして 詳解 詳解 MySQL 5.7 MySQL 5.7 執筆するに至ったか 執筆するに至ったか 奥野 幹也 Twitter: @nippondanji mikiya (dot) okuno (at) gmail (dot) com @ 詳解 MySQL 5.7 出版記念交流会

Upload: mikiya-okuno

Post on 08-Jan-2017

2.547 views

Category:

Software


0 download

TRANSCRIPT

私は如何にして私は如何にして

詳解 詳解 MySQL 5.7MySQL 5.7 をを執筆するに至ったか執筆するに至ったか

奥野 幹也Twitter: @nippondanjimikiya (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ご静聴ありがとうございました。