資料庫快取

若要最小化當使用者、伺服器或 API 程式開啟和關閉伺服器上的資料庫時所發生的延遲,則每個伺服器都要維護資料庫快取。當資料庫關閉,且沒有使用者或程序正在使用該資料庫時,Domino® 會將資料庫放入快取,如此它就可以快速關閉資料庫。資料庫會一直保留在快取中,直到再次將它開啟或大概過了 15 至 20 分鐘後(不管哪個先發生)。可以快速開啟快取中的資料庫。

資料庫快取可供在機器上啟動的第一個程序或從中產生的任何程序使用。如果您在同一機器上執行 Domino® 管理員及 Domino® 伺服器(未建議的配置),則在啟動Domino® 管理員之前先啟動伺服器。如果先啟動 Domino® 管理員,則它會擁有快取,且會防止 Domino® 伺服器有效地使用快取。

依預設快取可以同時儲存的資料庫數大於以下這些值:

  • NOTES.INI 檔中的 NSF_Buffer_Pool_Size 設定值,除以 300K
  • 25

若要變更此限制,請將 NSF_DbCache_Maxentries 設定新增至 NOTES.INI 檔或增加實體記憶體。增加資料庫快取的大小會提升系統的效能,但需要額外的記憶體。快取中一次所允許的資料庫數最少是 25;最大是 2,000。

快取中所允許資料庫的實際數量,是所允許最大數量的 1.5 倍。此緩衝區增加了使用者從快取中開啟資料庫時,Domino® 可以將資料庫傳回至快取的機會(當使用者關閉它時)。

透過 "ager" 執行緒從快取中除去資料庫,該執行緒會執行必要的寫入、取消分配記憶體,及完成其他作業以關閉資料庫。這個程序在經過 15 至 20 分鐘後發生。理想狀況下,資料庫會從快取中及時地除去,以允許新增新的資料庫,這樣就不會超出快取中所允許的最大資料庫數。但是,如果超出最大值,則會發生下列一種情況:

  • 如果快取中的資料庫數小於所允許的最大值之 1.5 倍,則當關閉資料庫時會將該資料庫新增至快取,且 ager 會加速減少資料庫數以達到允許的最大值。此動作可能會增加伺服器 I/O 子系統的壓力,並加劇快取資源的競爭。
  • 如果快取中資料庫的現行數目大於或等於所容許之上限的 1.5 倍,則當關閉資料庫時,Domino® 不會將該資料庫放入快取中。反而,它會使用更慢、非快取的方式關閉資料庫。因此,當使用者或程序下一次開啟資料庫時,Domino® 會從磁碟而不是從快取讀取該資料庫,這導致資料庫的開啟比它在快取中的開啟更慢。