7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MySQL-Innodbのパラメータめも

Last updated at Posted at 2015-07-07

自分用のメモです。ちょっと古い本を見ながら書いているので一部名前が違ったりするかも。

ログ関係

  • log_show_queries,long_query_time
  • スロークエリのログ設定。前者はON/OFFで後者はスローの閾値(秒数)
  • 場所はslow_query_log_fileオプションで指定。デフォルトでは(homebrew install)/usr/local/var/mysql/mysql/slow_log.CSVになっていた
  • log_queries_not_using_indexes
  • インデックスを使用しないSQLのログ

全体設定

  • max_connections
  • クライアントの最大接続数
  • table_cache
  • 同時に開けるテーブル数。よって総テーブル数*max_connectionsにするのが原則だと考えられる。
  • soft_buffer_size
  • group by, order byの際にソートに使用されるバッファ
  • read_rnd_buffer_size
  • ソート後のレコードを読み込む際に使用されるバッファ
  • thread_cache_size
  • キャッシュするスレッド数
  • コネクションプーリングを利用する場合はこの値はあんまり意味はないと思われる。都度接続方式をとる場合に、スレッド生成のオーバヘッドをキャッシュしたスレッドを使用することで減らせる可能性がある。
  • 参考
  • tmp_table_size
  • Explain時にUsing temporaryが出るようなクエリを実行した際に作成される一時tableの最大サイズ。これを超えるサイズの一時テーブルが作られるとディスクアクセスが行われ、非常に処理が低速になる。ディスクアクセスが行われたかどうかはshow statusCreated_tmp_disk_filesによって確認できる
  • sync_binlog
  • バイナリログをNコミットごとにディスクに同期させるかという設定。デフォルトでは0になっている(作成されない)
  • query_cache_size
  • SQLクエリをキャッシュする容量。
  • SQL_CACHE. SQL_NO_CAHCE句でクエリ単位でキャッシュを利用するかどうか指定できる
  • join_buffer_size
  • indexを利用しないjoinの際に利用されるバッファ
  • read_buffer_size
  • テーブルFILLスキャン時に利用されるバッファ
  • bulk_insert_buffer_size
  • バルクインサート(一気にinsert)時に使用するバッファ

InnoDBの設定

  • innodb_buffer_pool_size
  • インデックス、レコードデータ用のバッファ。使用されるメモリ容量の大部分がここにあたる。
  • innodb_flush_log_at_trx_commit
  • logをflushするタイミング粒度。デフォルトは1:「毎commitごと」。2にすると「1秒ごと」らしい。
  • バイナリログとInnoDB_logfileは別物なので注意。これは後者。
  • innodb_log_file_size, innodb_log_files_in_group
  • トランザクションログ(InnoDB_logfile)の大きさと、1グループのログファイル数。
  • グループというのはローテーションのファイル数。たとえば2にならサイズに達したら二つ目のログファイルに移り、それもいっぱいになったらまた一つ目に戻る、的な。
  • innodb_data_file_path
  • これはログじゃなくてデータファイルそのもののパスとサイズ。
  • innodb_file_per_table
  • テーブルごとにデータファイルを作成するという設定。これがあると上のfilepathは無視される。
  • ちなみにMacでRailsアプリケーションの並列テストを実行しようとして書くプロセスごとにテーブルを作成した結果、こういうことになったことがある。この辺りの設定について少しでも認識しておくとこういうエラーなどにも柔軟に対応できるかも。

参考書: MySQLによるタフなサイトの作り方

追記: これを見るにいろいろ足りてなさそう。適宜追加するかもです。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?