MariaDBはMySQL派生のデータベースシステム
MySQLとは互換性がある
DBを利用する側から見ればMySQLとMariaDBは同じものと考えていい
たとえば、WordPressのインストール要件にMySQLと書かれているような場合は、純正のMySQLだけでなくMariaDBも使える
むしろ、MariaDBの方が性能が良いので、普通はMariaDBを使う
Windows環境でXAMPPなどを使っている人も多いと思うが
XAMPPに同梱されているMySQLは、MariaDBである
MariaDB(MySQL)のインストールと初期設定についてのまとめ
MariaDB(MySQL)の管理ツールphpMyAdminを使えるようにする
MariaDBのインストールと初期設定完了後
運用で使うコマンドなどのまとめ
ストレージエンジンが
など、どれを使っているのかを確認する方法
MySQLのバージョンにもよるが、デフォルトではInnoDBを使っているはず
SQLコマンドで確認する
SHOW ENGINES;
use information_schema; select table_schema, table_name, engine from tables;
table_schemaはデータベース名
table_nameはテーブル名
engineというのが、MyISAMやInnoDBなどの、ストレージエンジン
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 @@GLOBAL
やSET 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
環境にもよるが、デフォルトでは「元の値」くらいの数値になっているので、「変更後の値」くらいに変更する
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_type
がOFF
なので、クエリキャッシュの機能が有効になっていない
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
になる
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_type
がON
になっている
また、query_cache_size
が67108864
になっている
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)