コードロード

エラー討伐

パーティションでDBの検索速度を速める

パーティションとは

DB検索を速くするために、テーブルを内部的に分割する技術のこと。

インデックスでも速くならない場合の検討材料

性能の向上

テーブルの分割により、アプリケーションからのSQLアクセスにおいて、検索性能の向上が見込まれます。性能向上を実現する要因には以下があります。

  • テーブル分割によるI/O削減絞り込み条件をSQLに指定することで、アクセスする範囲を特定のパーティションのみに絞り込むことができます。また、パーティション内でよく使用される部分がメモリー上にキャッシュされやすくなります。これにより、ディスクI/Oが減り、アクセス性能が向上します。
  • テーブル空間を分けることによるI/O分散分割したテーブルを物理ディスクの異なるテーブル空間に配置します。これにより、別々の物理ディスクに対して並行で読み書きが行われることでディスクI/Oが分散し、処理性能が向上します。

https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/article-index/partitioning-overview/

パーティションの種類

  • リスト
    • キーカラムを固定値で分割する方法
    • キー値の取りうる値の種類があらかじめ判明していて、その数が少ない場合に有効
  • レンジ
    • キーカラムの値の範囲で分割する方法
    • 日付や連続するIDなどで分割したいときに有効
  • ハッシュ
    • 均等に分割する方法
    • 不特定多数、一意のキー値をもとに分散させたい場合に有効

MySQLの注意点

  • パーティションキーカラムは、プライマリーキー or ユニークキーにするという制約がある
  • 外部キー制約が使えない

参考

learn.microsoft.com

【DB】パーティションとは?データベースのパフォーマンスを改善するパーティションの仕組み - YouTube

xn--w8j8bac3czf5bl7e.com