天天看點

主鍵生成機制

〔轉自:http://wenku.baidu.com/view/033a42166edb6f1aff001f09.html〕

一般而言,利用uuid.hex方式生成Hibernate主鍵将提供最好的性能和資料庫平台适應性。

另外由于常用的資料庫,如Oracle、DB2、 SQLServer、MySql 等,都提供了易用的主鍵生成機制(Auto-Increase 字段或者Sequence)。我們可以在資料庫提供的主鍵生成機制上,采用generator-class=native的主鍵生成方式。不過值得注意的 是,一些資料庫提供的主鍵生成機制在效率上未必最佳,大量并發insert資料時可能會引起表之間的互鎖。資料庫提供的主鍵生成機制,往往是通過在一個内 部表中儲存目前主鍵狀态(如對于自增型主鍵而言,此内部表中就維護着目前的最大值和遞增量),之後每次插入資料會讀取這個最大值,然後加上遞增量作為新記 錄的主鍵,之後再把這個新的最大值更新回内部表中,這樣,一次Insert操作可能導緻資料庫内部多次表讀寫操作,同時伴随的還有資料的加鎖解鎖操作,這對性能産生了較大影響。是以,對于并發Insert要求較高的系統,推薦采用uuid.hex 作為主鍵生成機制。