以下の内容はhttps://uga-box.hatenablog.com/entry/2024/10/04/000000より取得しました。


【システム開発】UUID v4 を主キーにするとなんで遅いかという解説動画

UUID v4 を主キーにするとなんで遅いかを解説している以下の動画を見た

www.youtube.com

非常にわかりやすい動画でとても勉強になった

結論

  • UUID v4 がなんで遅いかはランダムで作られるから
    • なぜランダムが遅いかというと、挿入時インデックスキーが順番通りでないから Page 分割が大変になる
    • すでに並んでいた順の間に入れようとした時にPage生成が発生する
  • また、シーケンスに比べて
    • 文字列なので比較コストが高い
    • インデックスキーのサイズが大きい

何がどれくらい遅いか

動画では冒頭に説明されていた

  • UUID v4を主キーにするとinsertが遅い
  • MySQL3000万レコードを挿入し続けて、400万レコードのinsertから差がで始めて0.5secくらいかかる(約5倍)
  • PostgreSQLは1000万くらいでシーケンスと差がで始める
  • selectだと count(*) が顕著に遅い
    • インデックスサイズが大きいから(36文字に対して、シーケンシャルは1からなので)

致命的ではないが、以下で気にし始める

  • 1テーブルあたり数億レコードある場合
    • 数千万レコードくらいないと差は感じにくい
  • 追加削除更新が秒間、数百トランザクション以上ある場合

他参考

B+ Tree Visualization




以上の内容はhttps://uga-box.hatenablog.com/entry/2024/10/04/000000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14