Plesk搭載のmariadb(MySQL)は、既定の設定では、HDD使用量が肥大化する一方であることが判明しました。
これは、バグなどではなく、Innodbの仕様によるもので、Innodbの場合、既定の設定では、DBのデータは1つのファイルに集約されます。
効率化を図った結果がそうなのですが、この1ファイルというのはデータが増えるたびにファイル容量が増えていきますが中のデータが減ったとしても、ファイルサイズは小さくならない仕様です。
よって、一時的にDBをコピーしたりマイグレーションなどによりDBが一時的にも肥大化した場合、その肥大化したサイズを確保してしまう性質があります。
なので、トラブルなどが発生しDB周りをいじる際に一旦DBをバックアップ代わりにコピーなどを行うとファイルサイズだけが大きくなってしまいます。
対処方法
対処としては、まず、このInnodbのファイル管理の方法を変更。一時的に使うエリアとしてファイルサイズを指定します。
このファイルのファイルサイズを指定した場合、そのファイルサイズに達してしまうとその後DBにデータを追加できなくなります。
なので、もう一つ追加オプションでファイルサイズが上限に達した場合、各テーブルごとにファイルを作りそちらにデータを格納するようにオプションを追加いたしました。
そうすることで、まずDBのデータが1ファイルに集約されず<<テーブル>>ごとにファイルに格納され細分化されるためファイルアクセスに関する負荷が分散します。それによりWordPressなどのようなDBへの依存度が高いシステムについてはパフォーマンス向上が見込めます。
また、このような設定に変更すると、データの読み書きによりカスが出た場合、ALTER TABLEによってその肥大化したサイズを効率的に再設定ができるようになり、無駄なディスク仕様を低減できるようになります。
クラウドサービスなどの場合、CPUやメモリにリソースを費やす分HDDのサイズが小さい場合などがあります。
その際にはDBのディスク仕様の設定を変更することでよりディスクを効率的に使うことができるようになります。