Quantcast
Channel: Planet MySQL
Viewing all articles
Browse latest Browse all 1081

MySQL 5.8で期待している機能

$
0
0
出典について

この記事は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やpupppetの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)が熱心にいくつかのリクエストされた機能の実行可能性をオープンで議論し、意見を聞いていたという事実を楽しみました。


PlanetMySQL Voting: Vote UP / Vote DOWN

Viewing all articles
Browse latest Browse all 1081

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>