MariaDB(MySQL)

MariaDB公式

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

MySQLとは互換性がある。
内部の実装はともかく、DBを利用する側から見ればMySQLとMariaDBは99%同じものと考えていい。

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

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

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

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

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

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

MySQLの使い方

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

ストレージエンジンが

  • MyISAM
  • InnoDB

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

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に設定。

  • INNODB_BUFFER_POOL_SIZE
  • INNODB_LOG_FILE_SIZE
  • READ_BUFFER_SIZE
  • SORT_BUFFER_SIZE
  • READ_RND_BUFFER_SIZE

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

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

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になる。

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)

  • 最終更新: 2021/11/05 18:57