程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2 9.5的數據庫內存保護

DB2 9.5的數據庫內存保護

編輯:DB2教程

在DB2 9.5中,數據庫引擎由基於過程模式轉變為線程模式,這意味著整個數據庫引擎都在一個地址空間下(任何代碼段都可以訪問任何全局變量)。這自然是有利也有弊。其中一個有利的方面是線程比過程更“輕”,這表示DB2的性能更好。有人做過測試顯示DB2 9.5的性能在負荷運行情況下比相同狀態下的DB2 9.1提升了2%到5%。

而不利的方面是,在任何與緩沖池無關的任何db2代碼路徑中的任何db2錯誤都有可能會破壞數據頁。此外,和db2共享相同地址空間的非保護模式下的用戶自定義函數(unfenced UDF)也有可能會破壞內存頁。而後,這些不正確數據頁就會在毫不察覺的情況下被寫入磁盤裡,而你很可能永遠都不會知道這些數據已經出現了不一致。線程模式還會產生與非保護模式下的用戶自定義函數相關的安全問題,因為線程模式在潛在情況下會允許惡意用戶代碼在沒有得到授權的情況下讀寫數據頁。如果在保護(fensed)模式下運行用戶自定義函數,這些問題就都不成問題,用戶代碼會通過一個子過程執行並且會通過IPC與DB2進行交流,唯一的問題就是這樣做比在非保護模式下運行要慢很多。

在IBM的Power6 CPU上市的時候,也帶來了一項用於內存保護的新技術就是用戶級別存儲鍵技術。這裡不是說的內核級別存儲鍵,這個已經存在了一段時間,而用戶級別的存儲鍵則是個新東西。存儲鍵能夠使應用程序鎖定內存頁,防止對其進行任何形式的讀寫組合操作。

必須支持CPU上的存儲鍵是因為內存訪問的速度非常之快(達到納秒級),在軟件水平是無法做到的。存儲鍵使在用戶空間執行的DB2引擎能夠防止代碼段對緩沖池數據頁進行無授權的讀寫操作。當然,如果你是在AIX上運行Power6處理器,那這只是其中一個可選的保護措施。啟動該功能需要5%到6%的性能開銷。用下面的語句啟動該功能:

以下是引用片段:
  db2setDB2_MEMORY_PROTECT=yes
  RESTARTYOURINSTANCE

你需要運行AIX 5.3 ML6(或更高版本)或AIX 6.1版操作系統。

如果你還在AIX上開發c或c++代碼,而且不適用Java的話,那最好建議您的程序開發人員使用ukey_protect( address, size, UKEY_PRIVATE)函數來協助保護數據內存結構。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved