地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【MySQL】参照系のクエリだけで大量にdisk writeを発生させるには

というのを考えてみる。

大量にクエリを実行する

これが一番てっとり速い気がするクエリログを出力させておけばいい感じにディスクに書いてくれるのでwriteが発生するだろう。エラーログをわざと発生させまくるのでもwriteは発生しそう(エラーログの場合はbufferingされないで書き出される気がするのでこっちの方が大量書き込みには向いている???)

create tmp tableが発生するクエリを実行する

CREATE TEMPORARY TABLEを実行するのは参照系ではないので今回は外れるがサーバーはクエリーの処理中に内部一時テーブルを作成するケースがある。条件は色々あるが参照系クエリという縛りがあるのでUNIONとかサブクエリを大量に実行すればdisk writeが発生する。

dev.mysql.com

一時ファイルを使うクエリを実行する

ORDER BY や GROUP BYのソートで使用される。sort_buffer_sizeを超えてソートしようとするとこれはファイルに書き出された上で処理を行っていくのでdisk writeが発生してく。join_bufferとかも小さくしておくことで一時ファイルが使われそうである。

dev.mysql.com