プロジェクト

全般

プロフィール

MariaDB

設定

/etc/my.cnf を直接編集せずに、/etc/my.cnf.d/の下にある設定ファイルを編集するか、ここに新たにファイルを設けて編集します。

デフォルト

  • strage_engine
    デフォルトInnoDB

チューニング

現在のチューニングパラメータは、MariaDBのデータベースへ問い合わせて確認します。

MariaDB [(none)]> show variables;

エンジンにはInnoDBを使う前提で、着目する項目と初期値、変更する値を次に記載します。

  • innodb_buffer_pool_size
    デフォルト128MB、MariaDBに割くメモリの50~80%の値(ここで割り当てた数値の5~10%位多めにメモリを使うとのこと1
  • innodb_log_file_size
    デフォルト5MB、書き込み負荷が高い場合に大きくする。また、innodb_buffer_pool_sizeを大きくしたら、合わせて調整する。MySQL 5.6ではデフォルトが50MBに増やされているとのこと。
  • innodb_log_buffer_size
    デフォルト8MB、十分そうな値
  • sort_buffer_size
    デフォルト2MB、十分そうな値
  • read_buffer_size
    デフォルト128KB、全件スキャンをするときに利用1、ちょっと大きくした方がよさそう
  • read_rnd_buffer_size
    デフォルト256KB、ソート処理でインデックスを利用する場合に利用1、ちょっと大きくした方がよいかも

CentOS 7.1のMariaDBは、そこそこデフォルト値が増やされてるようです(CentOS 6のMySQL 5.1比)

1 MySQLを高速化する10の方法 - 漢のコンピュータ道

チューニング例1 1GB割り当て

innodb_buffer_pool_size = 512M
innodb_log_file_size = 128M
read_buffer_size = 2M

チューニング例2 512MB割り当て

innodb_buffer_pool_size = 256M
innodb_log_file_size = 64M
read_buffer_size = 1M

文字コード、照会順序

現在の設定の確認

サーバー、クライアント、接続、データベースのデフォルト

デフォルトの文字コード(character set)設定を確認します。

MariaDB [(none)]> SHOW VARIABLES LIKE 'char%';
+--------------------------+------------------------------+
| Variable_name            | Value                        |
+--------------------------+------------------------------+
| character_set_client     | utf8mb4                      |
| character_set_connection | utf8mb4                      |
| character_set_database   | utf8mb4                      |
| character_set_filesystem | binary                       |
| character_set_results    | utf8mb4                      |
| character_set_server     | utf8mb4                      |
| character_set_system     | utf8                         |
| character_sets_dir       | /usr/share/mariadb/charsets/ |
+--------------------------+------------------------------+

デフォルトの照会順序(collation)を確認します。

MariaDB [(none)]> SHOW VARIABLES LIKE 'collation%';
+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database   | utf8mb4_general_ci |
| collation_server     | utf8mb4_general_ci |
+----------------------+--------------------+

これは、これから新規にデータベースやテーブルを作成したときにオプション指定しない場合に適用される値です。

既に存在するデータベース、テーブルの文字コード、照会順序を確認

データベースの文字コード確認(その1)

> SHOW CREATE DATABASE redmine\G
*************************** 1. row ***************************
       Database: redmine_www_torutk_com
Create Database: CREATE DATABASE `redmine_www_torutk_com` /*!40100 DEFAULT CHARACTER SET utf8mb4 */

データベースの文字コード確認(その2)

> SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'redmine';
+----------------------------+------------------------+
| DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME |
+----------------------------+------------------------+
| utf8mb4                    | utf8mb4_general_ci     |
+----------------------------+------------------------+

テーブルの文字コード確認(その1)

> SHOW CREATE TABLE issues\G
*************************** 1. row ***************************
       Table: issues
Create Table: CREATE TABLE `issues` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
    :
  `closed_on` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `issues_project_id` (`project_id`),
    :
  KEY `index_issues_on_parent_id` (`parent_id`)
) ENGINE=InnoDB AUTO_INCREMENT=114 DEFAULT CHARSET=utf8

テーブルの文字コード確認(その2)

>SHOW TABLE STATUS;
Name            Engine  Version   ...   Collation        Checksum ...
attachments     InnoDB  10        ...   utf8_general_ci  NULL 


ほぼ4年前に更新