MySQLチ ューニング tuning

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で行数を絞ろうと考えないのがいい。

OPTIMIZE TABLE

mysqlcheck -o --all-databases

sql - MySQL OPTIMIZE all tables? - Stack Overflow