All Articles

mysql8

きっかけ

facebook が MySQL8 に移行した Migrating Facebook to MySQL 8.0 を読んで、いくつか知らない単語があったため。
彼らが目をつけていた機能がどんなものなのか調べてみたログ。記事の中でいうと、facebook が MySQL のストレージを差し替えて MyRocks として運用していたのを初めて知った。
目をつけていた機能など

データディクショナリー

ファイルで管理していたメタデータを mysql 内のテーブルとして管理するようになった。そのため、これらのデータに一貫性がもたらされることになる。すなわち、COMMIT or ROLLBACK でのみデータが変更される。(不完全な状態でDDLが終わらないようになった)
.frmファイルのようなテーブル定義ファイルが移った。

マルチスレッドスレーブ

レプリカへの同期を並列化などによって高速化させる

5.6時点 データベース単位での並列化

5.7時点
LOGICAL_CLOCK方式が追加(optionで設定する必要あり)
同一のデータベースにおいてもグループコミットされたトランザクションは並列化して実行する
グループコミットは近い時間に行われた複数のコミットを一つにまとめてファイルに書き出す方法。これによって近いコミット同士の待ち合わせ、逐次の同期処理が減りパフォーマンスが向上する。

5.7.22以降、8系

WRITESET方式による並列化。
トランザクションログの依存関係を見て関連のない行を並列化して更新する。

ドキュメントストア

MySQL を Mongo like に使えるようにする機能。クエリ方法もほぼ Mongo だった。Enterprise Edition でしか使えないぽいので縁はなさそう。

その他

mysql の

  • 参照専⽤スキーマ

    • データ移行時など書き込みを禁止してしまいたいときに便利

参考