使用Hibernate,Struts2,Spring框架,當數百萬用戶同時提交他們的信息或訂單時,哪種方式更好地爲數據庫生成主鍵?當大量數據同時進入時如何在數據庫中生成密鑰?
有一些選項:
1:與 「序列」
3生成:用的 「uuid」
2生成您的解決方案......
(考慮數據便攜性和效率)
使用Hibernate,Struts2,Spring框架,當數百萬用戶同時提交他們的信息或訂單時,哪種方式更好地爲數據庫生成主鍵?當大量數據同時進入時如何在數據庫中生成密鑰?
有一些選項:
1:與 「序列」
3生成:用的 「uuid」
2生成您的解決方案......
(考慮數據便攜性和效率)
我會使用數據庫來管理唯一的鍵,例如
INSERT INTO yourTable (yourSequence.nextval(), COLUMN1, COLUMN2, ...)
生成應用自己的密鑰肯定會工作,但如果將應用程序擴展到多個服務器,它可能會導致問題,如果你不爲做準備。
如果你正在使用MySQL,你可以使用AUTO_INCREMENT - http://www.tutorialspoint.com/mysql/mysql-using-sequences.htm
感謝您的回答。但它對數據庫的可移植性差,您知道MySQL沒有序列。 – jackxu
確實如此,但是您可以在MySQL中使用AUTO_INCREMENT來複制功能 – acutesoftware
是的,我明白了,謝謝。 – jackxu
看休眠發生器實現 - http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/mapping.html#mapping-declaration-id有多種類型。
我更喜歡HiLo算法,請參考What's the Hi/Lo algorithm?,因爲它爲海量數據提供了巨大的吞吐量。
Be aware of Guid因爲它不是很好的主鍵,因爲隨着聚集的主索引。
有什麼選擇? –
您的意見是? –
您是否確定實際上存在合理的性能差異? –