AWS‎ > ‎

RDS (frozen)

RDS の固有のことを書く。MySQL 一般については MySQL も。

Parameter Groups について

パラメータグループについては右記: Working with DB Parameter Groups - Amazon Relational Database Service なぜ「グループ」? 複数のインスタンスへ適用されるから「グループ」か、あるいは、複数のパラメータを束ねるから「グループ」か。前者ぽいか。

パラメータグループでの設定が RDS 上の DB 実装のバージョンアップに伴って無効になったらどうなるんだろう? いやいや、それを防ぐためのパラメータグループだ。

既存の「デフォルト」は編集ができない。それをもとにカスタム版のパラメータグループを作成すれば、web コンソール上の「DB Parameter Groups」からでも編集ができるようになる。そして DB Instance  の「Modify」で、パラメータグループを変更することができる。

そして、どっちみちインスタンは要再起動。

ロングクエリのロギング

ロングクエリのログの設定、後で試す→ blog.hori-uchi.com: AmazonRDSでslow queryを出力するようにする方法blog.hori-uchi.com: Amazon RDS で肥大化したslow_logテーブルをクリアする方法


MySQL についても → 2012-07-04 - masayuki14 note


以下のような感じかな。しかし min_examined_row_limit と long_query_time は & 条件なので、これを指定してしまうと「行数はないけれど時間がかかる」クエリはログされない:
  • slow_query_log (boolean) に 1
  • long_query_time (float) に 1.0
  • 必要に応じて log_queries_not_using_indexes (boolean) に 1
  • 必要に応じて min_examined_row_limit (integer) に 1000(より少ない行数だったらスローログにログしない、という param なので
結果は mysql.slow_log に出る。MySQL のデフォルトどおりであれば、内実は CSV 外部表のストレージエンジンだ。log_queries_not_using_indexes もある。

mysql> show global variables like 'slow_query_log';
mysql> show global variables like 'long_query_time';
mysql> show global variables like 'log_queries_not_using_indexes';
mysql> show global variables like 'min_examined_row_limit';

ENGINE を確認:

mysql> show create table mysql.slow_log\G
*************************** 1. row ***************************
       Table: slow_log
Create Table: CREATE TABLE `slow_log` (
  `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `user_host` mediumtext NOT NULL,
  `query_time` time NOT NULL,
  `lock_time` time NOT NULL,
  `rows_sent` int(11) NOT NULL,
  `rows_examined` int(11) NOT NULL,
  `db` varchar(512) NOT NULL,
  `last_insert_id` int(11) NOT NULL,
  `insert_id` int(11) NOT NULL,
  `server_id` int(10) unsigned NOT NULL,
  `sql_text` mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
1 row in set (0.02 sec)

Comments