Storage Engineが遅い理由
リソースが足りていない
物理メモリとbuffer pool size
ホットデータとbuffer pool size
クエリ並列数とcore数
パラメーターが適切でない
InnoDBの場合、buffer pool sizeが要
キャッシュではなくデータ本体
足りないと全てが遅くなる
InnoDB圧縮 ROW_FORMAT = Compressed
buffer poolに読み込むときに圧縮されたデータを読み込んでから解凍
buffer pool効率とCPU効率を犠牲にして容量を稼ぐ方法
ただでさえ遅いディスクアクセスのタイミングで圧縮/解凍をしている
buffer poolにミスヒットしたときだけやたら重い (20ms => 400msとか)
一度ヒットするとバッファに載るので調査のときは速かったりする
ohbarye.iconMongoDBも同じような感じ?
キャッシュミスヒット
InnoDB圧縮の場合はミスヒットのコストが高い
ロックやmutexの競合(並列度が高すぎる)
バルク操作
考え方
slow queryはたいていexecutorかstorage engineまわり
executorには仕事をさせないようにindexを作成したり設計したりする