我們正在運行一個ASP.NET數據庫應用程序,它使用HiLo爲實體生成ids。在此應用程序的頂部,我們有幾個使用相同數據庫的網站。我們所看到的是,我們用盡了id,ID列變成了負數。用完NHibernate HiLo-ids導致負數
我們懷疑這與發生器有關。由於多個網站運行在相同的代碼庫和數據庫之上,並且HiLo算法很可能會快速開始生成大於範圍之外的id(當然很快會相對)。
是否有可能配置生成器的方式使得它也使用Id序列中的間隙(其中有很多),而不是在感覺必要時直截了當地增加值?
這是一個解決方案嗎?或者我們應該幹什麼別的?
我們已經決定先切換到Int64,然後再切換到GUID.comb,因爲我們期望我們的當前設置與HiLo的工作方式不兼容,即使使用Int64,我們也會用盡ID。不是因爲我們的數據量很大,而是因爲我們有時需要重新啓動應用程序,而且我們有多個應用程序池,這會導致ID快速增加。 – Pieter 2011-02-02 07:42:29