Help us understand the problem. What is going on with this article?

MySQL 互換のDB、Percona Server を使う理由

More than 1 year has passed since last update.

Percona Server とは

logo.png

Percona 社が開発する、MySQL 互換のデータベースです。

Oracle社の開発する、MySQLをベースにPercona 社が独自の追加機能を加えたものになります。MySQLと互換性があり、特にデータファイルの変換等行うことなく、そのままMySQLと入れ替えて使うことができます。

当然、クライアント・サーバ間のプロトコルも互換性があります。クライアント側はMySQL Clientのままでも問題ありません。

Percona 社って?

Percona Serverの開発のほか、MySQLの商用サポートやコンサルティングを行っている会社です。World wide 120人ぐらい社員がいるようです。
Percona LIVEという大規模なMySQLのカンファレンスでも有名です。

MySQL の運用ツール集である、Percona Toolkit は使っている人も多いと思います(昔、Maatkit と呼ばれていました)。

オススメな点

レスポンスタイムの分布を監視できる

MySQL 8.0でMySQL Community Editionでもperformance_schemaが拡張され、同じことができるようになりました (2018/12月 追記)。

RESPONSE TIME DISTRIBUTION
私が一番気に入ってる機能です。レスポンスタイムの分布を監視することができます。
I_SのQUERY_RESPONSE_TIMEテーブルに、各レスポンスタイム(Time) とその累積クエリ数(Count)、累積時間(Total)が記録されます。

この例では、0.1秒以下で完了したクエリが8066クエリあったことがわかります。

SELECT * from INFORMATION_SCHEMA.QUERY_RESPONSE_TIME

time count total
0.000001 0 0.000000
0.000010 17 0.000094
0.000100 4301 0.236555
0.001000 1499 0.824450
0.010000 14851 81.680502
0.100000 8066 443.635693
1.000000 0 0.000000
10.000000 0 0.000000
100.000000 1 55.937094
1000.000000 0 0.000000
10000.000000 0 0.000000
100000.000000 0 0.000000
1000000.000000 0 0.000000
TOO LONG QUERY 0 0.000000

私はこのデータを定期的に集めて、各レスポンスタイムごとのクエリ数をグラフ化しています。
スロークエリログでは把握しきれない、細かいパフォーマンスの変動を確認することができます。

graph.png
Percona MySQL Monitoring Templates

詳細なスロークエリログ

Percona Serverではスロークエリログが拡張されています。以下のようにより詳細なパフォーマンス統計がログに出力されます。パフォーマンスが劣化したタイミングの情報が詳細に記録されるため「同じクエリでも遅いときと速いときがある」といった場面で活躍してます。

  • InnoDB_IO_r_wait はディスクの読み取りにかかった時間
  • Full_scan はフルスキャン(インデックスが利用されていない読み取り)の有無
  • Tmp_table_on_disk はディスク上でのソートの有無
slow_query.log
# Time: 120114  6:34:33
# User@Host: user[user] @  [10.10.10.10]
# Thread_id: 28313080  Schema: mydb  Last_errno: 0  Killed: 0
# Query_time: 0.588882  Lock_time: 0.000068  Rows_sent: 3  Rows_examined: 183839  Rows_affected: 0  Rows_read: 100
# Bytes_sent: 121  Tmp_tables: 0  Tmp_disk_tables: 0  Tmp_table_sizes: 0

/+ Percona Server 独自のログ +/
# InnoDB_trx_id: 9903E4DB1
# QC_Hit: No  Full_scan: No  Full_join: No  Tmp_table: No  Tmp_table_on_disk: No
# Filesort: No  Filesort_on_disk: No  Merge_passes: 0
#   InnoDB_IO_r_ops: 0  InnoDB_IO_r_bytes: 0  InnoDB_IO_r_wait: 0.000000
#   InnoDB_rec_lock_wait: 0.000000  InnoDB_queue_wait: 0.000000
#   InnoDB_pages_distinct: 11359

MySQL と高い互換性が保たれている

Percona ServerはMySQLのコードをベースに+αするかたちで開発されています。MySQLがバージョンアップすれば、その修正内容は同じバージョンのPerconaにも取り込まれます。

これは重要なことです。基本的にはMySQLと同じと考えられるため、様々な人が発信している、MySQLのバグ情報や検証結果をそのまま利用することができるからです。

デフォルトでPercona の追加機能の多くは無効になっており、安定性が重視されている点も好感が持てます。

MariaDBは5.5までは、MySQLをベースにしていたのですが、10.0からはMySQLとソースがわかれてしまいました。

パフォーマンスにすぐれる(ただし、5.5まで?)

MySQLに先行して、InnoDBの改善が行われており、高いパフォーマンスが出ます。PerconaのサイトにはMySQL 5.5 に比べて、Percona 5.5 の方が 40%ほど高性能というベンチマーク結果が掲載されています。
自分で検証してみても、Percona 5.5の方が非常に高いパフォーマンスが出ることを確認できました。

benchmark
Percona Server Benchmarks より

同様の改善がMySQL 5.6で行われたため、5.6では差は小さくなっています。
※ Percona のサイトには5.6でも差がでると書いてあるのですが、自分で試した限りあまり差はなかったです。

有償版 MySQL の機能が無料で使える

MySQL Enterprise Edition の有償機能相当の機能を一部、Perconaでは無料で使うことが可能です。

MySQL Enterprise Edition には上記以外にも様々な有償機能があります(Enterprise MonitorやEnterprise Firewall とか)。

デメリットは

リリースは本家 MySQLより遅れます。
マイナーバージョンであれば、1ヶ月〜2ヶ月程度のラグがあります。メジャーバージョンではさらに時間がかかるようです。5.6 では、MySQLが2013/02にGAリリースになったのに対し、Percona は2013/06でした。

有償サポートを検討しているのであれば、DBで圧倒的 実績No.1のOracle社の保守・サポートを受けれない点もデメリットでしょう。

Percona Serverのダウンロード

https://www.percona.com/downloads/percona-server

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away