第6章 データベースとパフォーマンス
SQL受け取りから検索まで
-
ユーザはSQL文を発行する
-
DBMSはパーサでSQL文の文法が正しいか検証する
-
オプティマイザは、カタログマネージャに統計情報を照会する
-
オプティマイザは統計情報をもとに、SQLから実行計画を作成
-
実行計画を使って検索
統計情報を収集しておくことで、ボトルネックになっている処理を見つけることができる。 統計情報は、自動で収集するRDBもある。 ただし、大幅にデータを書き換えている場合は手動で統計情報の更新をしたほうがいい場合がある?
いろいろなRDBでの統計情報
Oracleは11g以降は自動収集できるようだ。
- Automatically Collecting Statistics on Tables
- Oracleの統計情報にまつわる頻出FAQ~概要、確認、収集・取得 | Oracle オラクルエンジニア通信 - 技術資料、マニュアル、セミナー Blog
MySQL5.6も自動収集が標準でオンになっている。
チューニングTIPS
漢(オトコ)のコンピュータ道: さらにMySQLを高速化する7つの方法
mysql> show session status;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 975
Current database: isucon2
+-----------------------------------------------+-------------+
| Variable_name | Value |
+-----------------------------------------------+-------------+
| Aborted_clients | 0 |
| Aborted_connects | 1 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Binlog_stmt_cache_disk_use | 0 |
| Binlog_stmt_cache_use | 0 |
| Bytes_received | 323 |
| Bytes_sent | 1428 |
| Com_admin_commands | 0 |
// 省略
クエリごとの処理内容はEXPLAIN
, PROFILE
で確認することができる。