背景 アカツキで提供しているサービスでは、ほぼ全てにおいてAWSのRDS(MySQL5.6, InnoDB)を使用しております。 ソーシャルゲームでは多くのWriteがかかりますが、そのコストが気になったので調べてみました。 調べてみたこと 一言にINSERTといっても、COMMIT時に即テーブルスペースに反映されるような単純な処理ではありません。 例えばINSERTしたテーブルにセカンダリインデックスがある場合、そこに加えられた変更を反映しなければなりません。 ところが、INSERT時バッファプール内に該当するインデックスのページが無い時はこれをディスクから読みだす必要があり、非常にコストが掛かります。 InnoDBにはこれを抑えるための"Change buffering"という機能があり、今回はその解説をしたいと思います。 Change bufferingとは 変更を加えたページがバッ
![MySQLのINSERTを高速化するChange bufferingをソースコードから理解する - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)](https://cdn-ak-scissors.b.st-hatena.com/image/square/3d177f985388e5ae36a2cde99abe65ccb92eeab4/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fa%2Faktsk_hackers_lab%2F20161020%2F20161020095812.jpg)