出典について
この記事はcode.openark.org内のShlomi Noach 氏によるNew features I'd like to see in MySQL 5.8(2015/10/7)を翻訳したものです。
Morgan Tocker氏のWhat would you like to see in MySQL 5.8?の後を追い、アムステルダムで開催されたPercona Liveのブレインストーミングに参加し、そしてこの記事を公開しています。Morgan氏が提示してくれたメディアに沿うことができませんでしたが(訳注:ブログのコメント欄やBugsDatabaseなどでコメントください、と記載があった)、ここに私がMySQL 5.8に期待する機能について記します。
- log-binとlog-slave-updatesを動的に有効化/無効化できるようにする
- 現在、サーバーのchefやpuppetのroleを変更し、スレーブから中間に位置するマスターなどに変更する場合、MySQLの再起動が必須となっています。これはレプリケーションの自動化を複雑にし、大きな障害となっており、ウォームアップの時間についてはいうまでもありません。
- 「nice」
- niceを指定してクエリを実行できるようにしたい、すなわち低い優先度が指定可能で、全てのリソースを使い切らず、そして他のクエリが完了できるように一時的に停止したり、スロットリングしたりできるようにしたいと思います。Luisが要望を出し、私はこれがステートメント毎をベースにできそう、例えばSQL_NICEといったクエリへのヒントを追加することによって、と言いました。しかし、これが正しい挙動なのか確信がありません。コネクション毎をベースにするのも意味があります(ひょっとするとヒントのniceの部分にコネクション属性を指定するとか?)。
- 現在よりさらにオンラインである(Online-ier)ALTER TABLE。とりわけ上記のnice機能に適用することを望んでいます。あるいは、ユーザー定義メトリクスによるスロットリングです。
- 現在よりさらにオンラインである(Online-ier)レプリケーションにおけるALTER TABLE。スレーブはALTER文を並列に実行できるでしょうか?
- 再グループコミット
- スレーブがマルチスレッドで動作しており、中間に位置するマスターがあるとき、マスターで適用されたグループコミットが、レプリケーションの下流にコピーペーストされそのまま伝播して欲しいです。これは簡単に達成可能であると考えています。結果として、あらゆるレベルでレプリケーションするスレーブが同じ並列度で動作するのです。例え直接マスターから複製されたとしても、2段目、3段目の中間に位置するマスターから複製されたとしてもです。現在は、並列度は下流に行くに従って下がります。
- グローバルなユーザー定義変数。任意の(グローバルな)変数を定義したくて、後からSELECT @@global.<任意の変数>で参照できて欲しいと考えています。これはHTML5の「data-*」属性と似たものでしょう。私はMySQLにpuppetのロール、あるいはサーバーのステータスを設定したり参照したりしたくなることが良くあります(生きているか?オフラインか?特定のプールに属しているか?などです)。「loose-*」の構文と同じように、これは「data-*」あるいは「user-*」という接頭辞の命名体系でいいでしょう。
MySQL 5.8で期待する新しいSQL文については今後もフォローアップするつもりです。
Percona Liveでのブレインストーミングに関して、私は次のことを述べておく必要があると考えています。純粋に楽しかったですし、かっこいいふわふわしたイルカを2つ手に入れたことはさておき、このスケジュールや、アイデアの多様性、そしてOracleの技術者(特にMark)が熱心にいくつかのリクエストされた機能の実行可能性をオープンで議論し、意見を聞いていたという事実を楽しみました。