PHPテクニカルセミナーに参加してきた

PHPテクニカルセミナーは2回目の参加となります。

今回のお題「高負荷WEBサービスへの対策と構成」
主催:アシアル株式会社
講演者:安藤祐介 さん


今回学んだこと

EXPLAIN

以下引用

SQLの実行計画を確認する
肝となるSQLはEXPLAINで実行計画を確認する
・問い合わせるテーブルにインデックスがあるか
・問い合わせにインデックスが利用されるかどうか
 必要であればインデックスを作成する
・照会件数が現実的な数値になっているか


EXPLAINを用いると対象のSQLがどのように実行されるかが表示される


以下SQLの例

mysql> explain select * from posts;
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
|  1 | SIMPLE      | posts | ALL  | NULL          | NULL | NULL    | NULL |    2 |       |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+


特に重視する箇所はpossible_keysとrows。
possible_keysはindexやprimary keyの存在を示している。
rowsは処理対象の行数を示している。
最終的にはrowsが少ないほど高速にSQLは動作するということになる。
(今回の例ではrowsが2と少ないですが。。。)

Smartyの出力キャッシュ

compile_cディレクトリとcacheディレクトリに作られるものは違う

  • compile_c…PHPコードが埋め込まれたテンプレート
  • cache…HTMLコード