RDSの設定値
http://dbstudy.info/files/20130729/mysql56_parameters_r2.pdf
my.cnf
デフォルトではmax_connections=100に設定される
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 100 |
+-----------------+-------+http://satospo.sakura.ne.jp/blog_archives/tech/linux_server/mysql4_tune.html
LEFT JOIN
漢(オトコ)のコンピュータ道: Using filesort
複数のテーブルをJOINする際にもう一つ気をつけなければならないのはLIMIT句である。JOINでは最終的な行数がどれだけになるかということは、一番目のテーブルから行をフェッチした段階では分からない。例えばtbl1でフェッチした行に対してtbl2またはtbl3に該当する行がない場合に行数が減る場合もある(INNER JOINのみ)し、tbl2またはtbl3で複数の行がマッチした場合には行数が増える場合があるからである。従って、いずれのパターンにおいてもLIMIT句が適用されるのはJOINとソートが完了した後なのである。
LIMIT句が最後に適用されるということで問題になるのは、LIMITする前の結果セットが巨大な場合である。LIMIT 100が指定されているクエリにおいて、JOINした結果が全部で1万行になってしまったとしよう。最終的には先頭の100行しかクライアントへ返されることはないので、残りの9900行は無駄になってしまう。この様な無駄を作らないためには、JOINした結果が大きくならないようなクエリを書くしかない。出来ることなら、複数のテーブルをJOINするときにはLIMITで行数を絞ろうと考えないのがいい。
MySQLTuner
# wget https://raw.github.com/rackerhacker/MySQLTuner-perl/master/mysqltuner.pl
# chmod +x mysqltuner.pl
# ./mysqltuner.plケーワン・エンタープライズのエンジニアメモ(`・ω・´)ゞビシッ!!: MySQLチューニング(MySQLTuner)
# portinstall mysqltuner
OPTIMIZE TABLE
mysqlcheck -o --all-databases
innodb_flush_log_at_trx_commit
http://www.gcnote.jp/log/20140530-tips-mysql-innodb-flush-log-at-trx-commit/