14
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MariaDB 10.1 GAまとめ

Last updated at Posted at 2015-10-19

2015/10/17にGAになったMariaDB 10.1.8のまとめです。
参考までに本家のドキュメントへのリンクも貼っています。

足りないところなど補足していただけると助かります。

Security

Data at Rest Encryption

10.1.3及び10.1.4から利用可能な機能です。
簡単にいえばデータ暗号化の機能で、XtraDB/InnoDB及びAriaストレージエンジンに対応しています。
暗号化の範囲は個別のテーブル及びXtraDB/InnoDBのログファイルとなっています。
暗号化の復号にかかるオーバーヘッドは大体3〜5%とのこと。

Password Validation

10.1.2から利用可能な機能です。
ユーザーのパスワードに対して、例えば「大文字の英字を1文字以上含む」と言った規約を設定することが出来ます。

プラグインをインストール(INSTALL PLUGIN)することによりポリシーを設定することが可能です。
現在サポートされているのは以下の2種類です。

  • simple_password_check
  • cracklib_password_check

設定したパスワードのポリシーは、次回以降の設定から適用されます。

HA

Galera support

10.1.1から、Galeraが同梱されるようになりました。
10.1のパッケージは、MariaDB単体か、またはGaleraのノードとして利用することが可能になります。
ソースからビルドする際は、ビルドオプションのWITH_WSREPONにしておく必要があります。

Optimistic mode of in-order parallel replication

10.1.3からparallel replicationにOptimistic modeが追加されました。
このモードがONの状態では、DDL同士が同じ行を変更するなどで起こるコンフリクトを楽観的に解決するようになります。

例えばトランザクションA, Bがコンフリクトした場合、後者のトランザクションがロールバックされ、前者のトランザクションを適用します。変更が適用されたら、その後再度後者を適用します。

これによってトランザクションのロールバックが起こりますが、基本的にはこのロールバックのコストより並列でbinlogを適用する事によるコスト削減のメリットのほうが大きくなるようです。

GTID対応

GTIDに対応することで、GTIDが有効化されているMySQL5.6、またはそれ以上のバージョンのslaveとなることが可能になりました。
MySQLとMariaDBを混在させるパターンや、MySQLからMariaDBにマイグレーションする場合に重要な機能ですね。

Scalability

パフォーマンス改善

MariaDB 10.1 can do 1 million queries per second
状況によるので、この辺りはまた別途ベンチマークを取ってみたいですね。

Defragmentation

innodb-defragment=1を設定することで、OPTIMIZE TABLEで新しいテーブルの作成をせずにデフラグを行うことができるようになりました。

Information Schema

wsrep (write set replication)向けのテーブルが2つ、GIS(地理情報)向けのテーブルが2つ追加されました。

また、以下のテーブルにカラムが追加されました

GIS

10.1.2から、地理情報向けの標準関数が増えました。

Syntax

Consistent IF [NOT] EXISTS/OR REPLACE Support

いくつかのDDLに対して、IF [NOT] EXISTS,OR REPLACEが利用可能になります。

  • CREATE DATABASE
  • CREATE EVENT
  • CREATE FUNCTION UDF
  • CREATE INDEX
  • CREATE ROLE
  • CREATE SERVER
  • CREATE TRIGGER
  • CREATE USER
  • CREATE VIEW
  • DROP EVENT
  • DROP INDEX
  • DROP ROLE
  • DROP TRIGGER
  • DROP USER

SHOW/FLUSH Syntax

information_schemaのテーブルに対してSHOW/FLUSH文が利用可能になりました。
SHOW文を利用すると、複数のカラムが存在しても古き良き80x25のサイズに合わせて省略してくれるそうです。

ANALYZE/EXPLAIN

ANALYZE及びANALYZE FORMAT=JSONがEXPLAINと同等のフォーマットで結果を返すようになりました。
EXPLAIN FORMAT=JSONがMySQL5.6に合わせて再実装されました。

GET_LOCK(str,timeout)

GET_LOCK(str,timeout)の第二引数であるtimeoutにマイクロ秒を指定することが可能になりました。

オプティマイザ

ORDER BY

ORDER BYの挙動が変わったそうです。
ドキュメントへもある通り深く追えなかったので、あまり説明できません。

frm

.frmファイルがtemporary tableに対して作成されなくなります

MAX_STATEMENT_TIME

max_statement_timeを1以上の値にすると、指定秒数を超えたクエリの実行は自動的に中止されるようになります。

UNION ALL

UNION ALLの実行にtemporary tableが利用されなくなりました。
この変更はMySQL5.7にバックポートされるそうです。

malloc()の実行タイミングの変更

malloc()の実行タイミングを変えたことで、簡単なクエリの実行が早くなったそうです。

WebscaleSQLのパッチ適用

幾つかのWebscaleSQLのパッチが適用されたそうです。

XtraDB/InnoDB

ページサイズの上限が64KBに

MySQL5.7と同様に、innodb_page_sizeに対して32k64kが指定できるようになります。

その他

Slow log

Slow Query Log(及びmysql.slow_log)にUPDATE/DELETE文が記載されるとき、変更のあった行数を表示するようになった。

Primary Key

PRIMARY KEYに指定されていて、かつDEFAULT NULLが指定されているカラムは自動的にNOT NULL DEFAULT 0に変換されるようになった。

インストール

パッケージマネージャからインストールすることが出来ます。
公式からインストールのための設定を自動生成できるので、試してみてください。
設定例を記載しておきます。

/etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/rhel6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
$ yum install mariadb mariadb-server

baseurlが10.1になっていることを確認してください。

参考

14
12
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?