達人に学ぶDB設計 徹底指南書 読書メモ

Dec 7, 2017 ( Feb 11, 2022 更新 )

第6章 データベースとパフォーマンス

SQL受け取りから検索まで

  • ユーザはSQL文を発行する

  • DBMSはパーサでSQL文の文法が正しいか検証する

  • オプティマイザは、カタログマネージャに統計情報を照会する

  • オプティマイザは統計情報をもとに、SQLから実行計画を作成

  • 実行計画を使って検索

統計情報を収集しておくことで、ボトルネックになっている処理を見つけることができる。 統計情報は、自動で収集するRDBもある。 ただし、大幅にデータを書き換えている場合は手動で統計情報の更新をしたほうがいい場合がある?

いろいろなRDBでの統計情報

Oracleは11g以降は自動収集できるようだ。

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で確認することができる。

漢(オトコ)のコンピュータ道: プロファイリングで快適MySQLチューニング生活

Return to top