簡體   English   中英

插入 UUID 主鍵索引的性能

[英]Inserting performance for UUID primary_key index

我讀到 UUID 作為 primary_key 的插入性能取決於數據庫中存在的記錄數。 記錄數量越多,插入記錄所需的時間就越多

https://kccoder.com/mysql/uuid-vs-int-insert-performance/

上面文章的作者進行了實驗,他認為這是因為 UUID primary_key insert 的讀取次數比其他自增整數要多。

我想問一下數據庫是否自動為選擇的primary_key創建索引如果UUID的primary_key索引有問題,插入問題是否可以通過使用整數作為primary_key索引同時保留UUID字段,然后切換主鍵來解決到 UUID,那么問題是對整數 ID 的外鍵引用是否會在切換時傳播到 UUID 字段?

數據庫是否自動為選定的 primary_key 創建索引

是的。 主鍵總是被索引。 在某些數據庫中,索引是聚集索引(意味着數據頁上的數據實際上是按鍵排序的)。 在其他數據庫中,索引是強制執行唯一性約束的。

UUID 和索引的問題在於新值不一定大於舊值。 這意味着插入通常在兩個現有記錄之間進行。 發生這種情況時,您會產生碎片——也就是說,現有數據頁需要為新記錄騰出空間,有時甚至分成兩頁。

自增整數沒有這個問題。 它被索引(並在 MySQL 中聚集)。 但是,較新的值比任何現有值都大——自動遞增的定義。 所以,新的價值會在最后。 碎片僅在行被刪除或手動設置值時才會出現。

我建議您使用自動遞增的主鍵,除非您有使用 UUID 的特定原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM