目次

MariaDB(MySQL)

MariaDB公式

MariaDBはMySQL派生のデータベースシステム

MySQLとは互換性がある
DBを利用する側から見ればMySQLとMariaDBは同じものと考えていい

たとえば、WordPressのインストール要件にMySQLと書かれているような場合は、純正のMySQLだけでなくMariaDBも使える
むしろ、MariaDBの方が性能が良いので、普通はMariaDBを使う

Windows環境でXAMPPなどを使っている人も多いと思うが
XAMPPに同梱されているMySQLは、MariaDBである

MariaDBをインストール・設定する方法

MMariaDBをインストール・設定する方法

MariaDB(MySQL)のインストールと初期設定についてのまとめ

phpMyAdminをインストール・設定する方法

phpMyAdminをインストール・設定する方法

MariaDB(MySQL)の管理ツールphpMyAdminを使えるようにする

MySQLの使い方

MySQLの使い方

MariaDBのインストールと初期設定完了後
運用で使うコマンドなどのまとめ

MYSQLDUMPの使い方

MYSQLDUMPの使い方

ストレージエンジンを確認する方法

ストレージエンジンが

など、どれを使っているのかを確認する方法

MySQLのバージョンにもよるが、デフォルトではInnoDBを使っているはず

SQLコマンドで確認する

使用可能なストレージエンジン一覧を表示

SHOW ENGINES;

実際に使用されているストレージエンジンを確認

use information_schema;
select table_schema, table_name, engine from tables;

table_schemaはデータベース名
table_nameはテーブル名

engineというのが、MyISAMやInnoDBなどの、ストレージエンジン

MySQLのメモリー関係をチューニング

メモリーの割り当て量を確認

SELECT @@GLOBAL.INNODB_BUFFER_POOL_SIZE/1024/1024;

INNODB_BUFFER_POOL_SIZEのメモリー割当量を確認

1024で2回割ることで、単位をMBにしている

メモリーの割り当て量を変更

SET GLOBAL INNODB_BUFFER_POOL_SIZE = 256 * 1024 * 1024;

INNODB_BUFFER_POOL_SIZEのメモリー割当量を256MBに設定

メモリー割り当てチェック項目

SELECT @@GLOBALSET GLOBALのコマンドで、上記のパラメーターを確認・変更できる

よくある設定例

元の値

INNODB_BUFFER_POOL_SIZE = 128MB
INNODB_LOG_FILE_SIZE = 96MB
READ_BUFFER_SIZE = 0.125MB
SORT_BUFFER_SIZE = 2MB
READ_RND_BUFFER_SIZE = 0.25MB

変更後の値

INNODB_BUFFER_POOL_SIZE = 256MB
INNODB_LOG_FILE_SIZE = 96MB
READ_BUFFER_SIZE = 1MB
SORT_BUFFER_SIZE = 2MB
READ_RND_BUFFER_SIZE = 4MB

環境にもよるが、デフォルトでは「元の値」くらいの数値になっているので、「変更後の値」くらいに変更する

INNODB_LOG_FILE_SIZEは読み取り専用

SET GLOBAL INNODB_LOG_FILE_SIZE = 64 * 1024 * 1024;

上記のコマンドはエラーになり、サイズ変更できず

ERROR 1238 (HY000): Variable 'innodb_log_file_size' is a read only variable

クエリキャッシュを設定

デフォルトではクエリキャッシュは無効になっている

有効化すると、SELECT文の実行結果がキャッシュに保存される
同じクエリが発生したときは、DBを参照せずにキャッシュから返すので、レスポンスが速くなる

クエリキャッシュの設定を確認

SHOW VARIABLES LIKE '%query_cache%';

mysqlのコンソールで上記のようなコマンドを打つと、下記のような結果が得られる

実行結果
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| have_query_cache             | YES     |
| query_cache_limit            | 1048576 |
| query_cache_min_res_unit     | 4096    |
| query_cache_size             | 1048576 |
| query_cache_strip_comments   | OFF     |
| query_cache_type             | OFF     |
| query_cache_wlock_invalidate | OFF     |
+------------------------------+---------+
7 rows in set (0.001 sec)

query_cache_typeOFFなので、クエリキャッシュの機能が有効になっていない

クエリキャッシュを有効化、キャッシュサイズを変更する

vi /etc/my.cnf.d/server.cnf
変更前
[mysqld]
変更後
[mysqld]
query_cache_size = 64M

/etc/my.cnf.dというディレクトリにある
server.cnfというファイルを開く

[mysqld]のセクションには、デフォルトでは何も書かれていない
query_cache_size = 64Mと追記することで、クエリキャッシュのサイズを設定できる

query_cache_sizeのサイズを設定すると、連動して
query_cache_typeの値がONになる

mysqlを再起動

systemctl restart mysql

/etc/my.cnf.d/server.cnfへの変更を反映させるには、mysqlの再起動が必要

クエリキャッシュの設定を再確認

SHOW VARIABLES LIKE '%query_cache%';
実行結果
+------------------------------+----------+
| Variable_name                | Value    |
+------------------------------+----------+
| have_query_cache             | YES      |
| query_cache_limit            | 1048576  |
| query_cache_min_res_unit     | 4096     |
| query_cache_size             | 67108864 |
| query_cache_strip_comments   | OFF      |
| query_cache_type             | ON       |
| query_cache_wlock_invalidate | OFF      |
+------------------------------+----------+
7 rows in set (0.002 sec)

query_cache_typeONになっている

また、query_cache_size67108864になっている

67108864 / 1024 / 1024 = 64MB

キャッシュのヒット率を確認

SHOW SESSION STATUS LIKE 'Qcache%';

mysqlのコンソールで上記のコマンドを実行すると、下記のような結果が得られる

実行結果
+-------------------------+----------+
| Variable_name           | Value    |
+-------------------------+----------+
| Qcache_free_blocks      | 1        |
| Qcache_free_memory      | 63017688 |
| Qcache_hits             | 3836     |
| Qcache_inserts          | 1607     |
| Qcache_lowmem_prunes    | 0        |
| Qcache_not_cached       | 108      |
| Qcache_queries_in_cache | 861      |
| Qcache_total_blocks     | 1764     |
+-------------------------+----------+
8 rows in set (0.001 sec)

キャッシュのヒット率 = Qcache_hits / (Qcache_hits + Qcache_inserts + Qcache_not_cached)