サイト運用から顧客体験管理までCXM・CMSのHeartCoreシリーズ

MariaDB 10.0 新機能

MariaDB 10.0の新しい機能

MariaDB 10.0は、MariaDB5.5をベースに、MySQL5.6で追加になった機能をバックポートし、さらに、全く新しいMariaDB独自の様々な機能が実装されました。
これまでMariaDBは、MySQLのバージョン番号と呼応する形でリリースされていましたが、今バージョンからは、MySQLとの互換性は維持しながらも新たな独自機能が多く実装されたことから、独立した番号でリリースされるようになりました。以下に、MariaDB10.0で追加された主な機能を紹介します。

MariaDBの独自追加機能

並列レプリケーション

MariaDBのレプリケーションは、3つのステップに大別されます。

  1. 複数のレプリケーションイベントをマスター側からIOスレッドにて読み込み、relayログに待機させる
  2. 各レプリケーションイベントは、SQLスレッドによってrelayログから1つずつフェッチされる
  3. スレーブ側へ各イベントが適用され、マスター側の変更がすべて複製される

上記ステップ3について、これまではSQLスレッドにて同時に処理できるイベントは1つのみでしたが、MariaDB10より、複数のレプリケーションworkerスレッドによって並列に処理できるようになりました。これにより、レプリケーション性能の向上が期待されます。

グローバルトランザクションID (GTID)

イベントグループをマスターからスレーブへ複製する際、各トランザクションへIDが割り当てられます。このIDは、グローバルなユニークIDであるため、複数の異なるサーバー上にある同一binlogイベントを、容易に特定することが可能となります。これにより、接続先のスレーブサーバーを変更したり、複製元のマスターサーバーを変更したり、といった作業が効率化されます。また、スレーブの状態もクラッシュセーフな方法で記録されるようになります。
※MariaDBとMySQLでは、GTIDの実装が異なるため互換性はありません。

マルチソースレプリケーション

1つのスレーブが、複数のマスターを持つことが可能になりました。1スレーブ内で、複数マスターからのデータを同時レプリケーションすることができます。
各マスターは、固有のインスタンスによってスレーブサーバー内で処理されます。それぞれのインスタンスは、異なるI/Oスレッドと、SQLスレッド、および関連設定から構成されます。CHANGE MASTERを使って、インスタンスを指定します。
マルチソースレプリケーションを活用することで、分散したデータの包括的な分析やバックアップに役立ちます。

ストレージエンジンの追加

Cassandra、CONNECT、FederatedX、Spider、TokuDBが、新たに追加されました。

エンジン非依存のテーブル統計情報

これまで、クエリオプティマイザ用の統計情報作成は、ストレージエンジンに依存しており、ストレージエンジンインターフェースから作成するため対象データに制約があったりと、自由度に制限がありましたが、エンジン非依存とすることでより多くのデータを収集することが可能となりました。

サブクエリ最適化

EXISTSサブクエリをINサブクエリへ変換することが可能となりました。明示的な相関EXISTSを、非相関INへ書き換えることで、Materializationを使用することができます。

SHOW EXPLAINコマンド

SHOW EXPLAINコマンドが追加され、指定したスレッドで動いているクエリの実行計画を参照することが可能となりました。

スロークエリログEXPLAIN出力

スロークエリログからのEXPLAIN出力が可能となりました。

スレッド毎のメモリ使用量

スレッド毎のメモリ使用状況を確認できるようになりました。

  • "information_schema.processlist"に、新たに"MEMORY_USAGE"カラムが追加されました。
  • "SHOW STATUS"に、新たに"Memory_used"変数が追加されました。

SHOW PLUGINS SONAMEコマンド

SHOW PUGINS SONAMEを使って、"plugin_dir"ディレクトリ内のすべてのプラグイン(未インストールも含む)に関する情報を参照することが可能になりました。

SHUTDOWNコマンド

SHUTDOWNを使って、サーバーをシャットダウンすることが可能となりました。イベントを作成して、特定の時間にサーバーをシャトダウンするようスケジュールが可能です。

KILL [CONNECTION | QUERY [ID] ]

従来のスレッドIDに加えて、クエリIDでもクエリを終了することが可能になりました。

UNIQUEキー生成高速化

非ユニークキーのソートに加え、ユニークキーでもALTER TABLEを高速化できるようになりました。

非同期コミットチェックポイントの実装

InnoDBおよびXtraDBにおいても、非同期に行えるようになりました。

FusionIOのDirectFSにおけるアトミック書き込み対応

InnoDBおよびXtraDBにて、ダブルバイトバッファを使用しないでアトミックな書き込みができるようになりました。

DELETE ... RETURNING

シングルテーブルに対してDELETEを行う際、リザルトセットを返すことが可能になりました。

IF [NOT] EXISTS

CREATE TABLEと同様に、ALTER TABLEでも"IF [NOT] EXISTS"節が使用できるようになりました。

ダイナミックカラムの強化

ダイナミックカラムとは、NoSQLのように、テーブルの各行に複数の異なるカラムを持てる機能で、MariaDB5.3にて追加されました。格納する項目の属性数が多い場合や、予め分かっていない場合に、BLOB型のダイナミックカラムに保存しておくことで、後から変更が可能です。
MariaDB10.0では、主に以下について強化されました。

  • ネームによるカラム参照
  • COLUMN_CHECKを使ったカラムの完全性チェック
  • COLUMN_JSONによるカラムデータのJSONオブジェクト化
  • Cassandraとの連携(MariaDBデータベース内でのCassandraデータとMariaDBデータ結合)

ROLEの追加

CREATE ROLEやDROP ROLEを使って、役割をコントロールできるようになりました。これにより、より細やかな権限管理を効率的に行うことが可能です。

MySQL5.6からのバックポート

  • InnoDBの改良
  • パフォーマンススキーマ
  • read onlyトランザクションの最適化(InnoDB)
  • "ORDER BY ... LIMIT"を使ったクエリのファイルソート最適化
  • plugin-load-add
  • オンラインでのALTER TABLE
  • 文字コード関連の拡張
  • GET DIAGNOSTICS

MySQL5.6で追加された機能についての詳細は、「MySQL 5.6新機能」ページをご参照ください。

「MySQL 5.6新機能」はこちら

ENGLISH

コンテンツメニュー

03-3493-5160