Open2
なんでpostgresではUUIDで性能劣化を起こさないのか
MySQLの場合はある程度理解できたように思う。
下記によるとランダムIDではキャッシュに追加するところのindexのページが乗る確率が低くなっていくからとあり、それは納得できた。
ただPostgresではなぜ上記の現象が起こらないのかがわからない
MySQLはクラスタインデックスだから上記の現象が起こると説明されていたが、クラスタインデックスでなくても上記の現象が起こるように思うんだけど...
クラスタインデックスと非クラスタインデックスの違いはリーフページに実際の値が入っているか、ヒープテーブルへのRowIDが入っているかで、
Insertが起こった場合、結局クラスタインデックス、非クラスタインデックスに関わらずランダムIDが入るIndexのリーフページはキャッシュに乗りにくくなってくると思うんだけどなんで?
walとか考えないとして疑問をまとめると、
・クラスタインデックス
INSERTの時にリーフページにデータを入れるため、適切な位置を調べなくてはいけない、そのためキャッシュに乗ってないと、適切な位置を調べる分遅い
・非クラスタインデックス
ヒープページに追記した後(これは速い)、そのあと結局インデックスを更新するためにインデックスの適切な位置を調べなくてはいけないんじゃないか?
インデックス更新部分はクラスタインデックスと同じことをやっているのでは?
ここがよくわからない