使用GUID作為數據庫主鍵的方案


GUID是一種非常簡單有效的生成分布式唯一Id的方式,因此也有很多地方使用它來作為數據庫索引。然而,使用GUID作為數據庫的索引會帶來性能問題,一個是因為GUID較大,造成更大的查詢開銷,另外一個更主要的原因是GUID.NetGuid()函數生成的Guid是隨機的,容易造成聚集索引的索引碎片。

一個方法是生成有序的GUID來解決聚集索引的碎片問題,再EFCore中就引入了一個SequentialGuidValueGenerator類來生成有序的GUID,關於它的原理可以看下如下博文:

然而,微軟的這個庫是為Sqlserver來設計的,因為不同數據庫對於GUID的排序方式是不一樣的。不過已經有人設計出支持多數據庫的有序GUID生成算法(對於不同的數據庫,采用不同的配置參數),GUIDs as fast primary keys under multiple databases ,網上也有中譯版本:使用有序GUID:提升其在各數據庫中作為主鍵時的性能,感興趣的朋友可以看下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM