システム変数
- thread_cache_size
スレッドをキャッシュしておく数。デフォルトは128。もし0にしているとクライアントのアクセスのたびにスレッドが生成されるため効率が悪い。
- thread_handling = pool-of-threads
- thread_pool_size = 8
MariaDBは標準でスレッドプールをサポートしている。これを設定することでクライアントごとにスレッド(キャッシュ含む)を割り当てるのではなく、スレッドプール単位になるためスレッド生成やスイッチ切り替えのオーバーヘッドを減らせる。
通信系
- max_connections
- max_user_connections
サーバに同時に接続できるクライアントの最大数を指定。max_connectionsのデフォルトは150。
- max_allowed_packet
1パケットの最大サイズ。少なくともBLOB型を使っているのであればサイズに注意。デフォルトでは16MB。
- skip_name_resolve
ホスト名のIPアドレス解決をするか否か。デフォルトは「解決する」になっているため、/etc/hostsに記載がないホスト名であれば、DNS検索が走るので遅くなる。ホスト名ではなくIPアドレス記載にして、この設定は「解決しない」にしておくといい。
クエリ系
- query_cache_limit
- query_cache_size
クエリ結果のキャッシュする上限とそのために確保するメモリサイズ。
InnoDB系
- innodb_buffer_pool_size
データベースサーバの性能に直結する。可能な限り大きな領域を指定する。デフォルトは128MB
- innodb_sync_array_size
スレッドの制御するための内部構造を分割する。
高負荷で多くのスレッドが待ちになる場合この値を増やす。デフォルトは1。
-
innodb_file_per_table
テーブルごとにデータファイルを保持するかどうか。デフォルトで有効。 -
innodb_file_format
ファイルフォーマット。デフォルトだとAntelope,圧縮に対応した大容量向きなのは、Barracuda。意外に重要なので、テーブル定義段階で確認しておくこと。
内容 | 説明 | デフォ |
---|---|---|
max_connections | MYSQLが受け入れ可能な最大接続数 | 151 |
max_allowed_packet | クライアントとの送受信のパケット最大サイズ。 | 4M |
character_set_server | サーバが利用するデフォの文字コード | latin |
lower_case_table_names | テーブル名をケースセンシティブ(大文字小文字区別)するか | 無効 |
innodb_buffer_pool_size | 通常はメモリの7割程度 | 128M |
innodb_log_file_size | 増やすことでページのフラッシュを遅らせるので更新処理が早くなる | 50M |
innodb_io_capacity | バックグラウンドスレッドが実行可能なIOPSの上限。ストレージと合わせておく | 200 |
innodb_print_all_deadlocks | デッドロック時に詳細のログを出す | 無効 |
終わり。