MariaDB

  • 投稿者:
  • 投稿カテゴリー:MariaDB

概要

2008年、SUNマイクロシステムズはMySQL AB社を買収
2010年、OracleがSUNマイクロシステムズを買収
MySQLからMariaDBが分岐し、MySQL関係者(オプティマイザ開発者はほとんど移動)らがSkySQLを立ち上げる
“Save the People, Save the Product” – Michael Monty Widenius氏
Sunを退社してMonty Program ABを設立

MariaDBライセンス:GPL v2 のみ(MySQLは商用版とコミュニティ版)

Maria DB 10.0とは、MariaDB5.5をベースとして開発されており
MySQL 5.6の機能と、さらにMariaDBの独自機能を追加する方向で開発されている
※それまではMySQLをベースに作成されていたが、MySQL5.6で大規模リファクタリングされたため
 独自機能を活かすためMariaDB5.5をベースとしている

WikipediaはMariaDB
googleも一部MariaDB
RHELやCentOSなどはデフォルトRDBがMariaDB
マルチマスター 4-5倍

MySQLと比較してSQL文はほぼ互換性があるが
アプリケーションによってはバージョンを確認し、起動しなくなるものがあるため注意

スレッドプール

mysqlについて、マルチスレッド型であり、クライアントとスレッドが1対1で対応する
そのためアクセスが増えれば増えるほどスレッドが増加し、コンテキストスイッチが大量に発生し
CPUキャッシュの位置、ホットロックの競合のため、パフォーマンスが下がる
スレッド数をクライアント数より小さくすることで改善されるが、CPUを使い切るためにもCPU数と同じ数のスレッドが理想的
mariadb5.1では静的スレッドプールを持っていたが、DBのように、スレッド同士が処理完了、IOやその他ロックにより依存するため動的が適している
mariadb5.5からは動的スレッドプールをサポートしている

スレッドによってリソースを制限可能(thread_pool_max_threads)

スレッドプールについて、クエリが比較的短く、CPUバウンドな負荷のときに効果的である
それ以外にも、スレッドを制限してメモリバッファを抑えたいときにも効果的
ただし、常に高負荷な環境や、とても長いクエリ、短いクエリがすぐに終了する場合は効率的とはいえない

thread_pool_size:スレッドグループ数、基本的にCPU数を指定し、パフォーマンスに一番大きく影響する数値となる
CPU数と同じということは実行できるタスク数を表す、そしてグループに1つのアクティブなスレッドを持つことが理想的な形となる

Mariadb 10.0.2からは、ネットワークI/Oの待ちも検出可能


スレッド作成と破棄の負荷を抑えるための機能
処理待ちのリクエストをプール内のスレッドに割当
sysbenchによるOLTPトランザクション比較すると約1.5倍の性能アップ!

機能

10.0.xで人気が高い機能として、マルチソースレプリケーションがあります。複数のマスターからデータベースの複製を行う機能

feedback_pluginはデフォルトで無効→有効にしてほしい。

マスタースレーブ環境でMySQLと比べてMariaDB環境の方が高速

innodb利用可能

ariaDBのサーバ群を管理するためのMariaDB ManagerとMariaDB Clusterから成ります
後者はMariaDBのサーバ、MHA(Master High AvailabilityManager and tools for MySQL)、Galera、これらに新しくMaxScale(MySQLプロキシに近いものとイメージ)が加わり構成

スロークエリログの出力詳細化

全件検索、全件結合、ディスクソートの有無を確認可能

統計力アップ

クライアント、ユーザ、テーブル、インデックスに関する詳細な統計が表示可能
※CPU時間や送受信倍とすうなど。

ストレージエンジン

XtraDB

InnoDB互換エンジン
トランザクション対応。マルチコア等、最新のハードウェア向けに処理を最適化
Percona社にて開発(GPL v2)
I/Oパスの強化、バッファプールの拡張性を強化
対象データがオンキャッシュでない場合は、XtraDBの方がTPSがはるかに高い(Transaction per sec)
MariaDB5.5までデフォルトエンジン(10.0からはInnoDBがデフォルト)

Aria

MyISAM互換エンジン
トランザクション/非トランザクション問わず、MySQLとMariaDBのデフォルトとなることを目指している
Monty Program AB社にて開発(GPL)
MyISAMのコードをベースにしているが、クラッシュセーフ

FederatedX

Federatedエンジンの不具合を修正し、新機能を追加(トランザクションをサポート)
Monty Program AB社にて開発(GPL v2)

参考URL

http://www.atmarkit.co.jp/ait/articles/1310/24/news028_2.html
https://mariadb.com/resources/guides-whitepapers
http://research.sakura.ad.jp/2013/02/14/mariadb-galera-cluster-1/
https://mariadb.com/kb/en/about/
http://www.ustream.tv/recorded/21156974