informix暫存資料表空間
在 Informix 資料庫中,我們經常會建立一些暫存資料表來處理應用中的臨時資訊。系統可以採用如下兩種方式建立暫存資料表:
使用 SELECT INTO TEMP 語句隱含地建立暫存資料表
使用 CREATE TEMP TABLE 語句顯示地建立暫存資料表
如果資料庫採用非記錄模式,DBSPACETEMP 環境變數或配置參數設定後,暫存資料表會自動建立在由 DBSPACETEMP 環境變數或配置參數指定的資料空間上;如果資料庫採用記錄模式,那麼建立 的暫存資料表預設情況下是記日誌的,不會被建立在由 DBSPACETEMP 環境變數或配置參數指定的資料空間上,那麼由 SELECT ... INTO TEMP 語句建立的暫存資料表將被建立在根資料空間(Root dbspace)上,由 CREATE TEMP TABLE 語句建立的暫存資料表將被建立在資料庫所在的資料空間上。如果希望暫存資料表建立在由 DBSPACETEMP 環境變數或配置參數指定的資料空間上,我們需要使用 SELECT INTO TEMP with no log 語句或 CREATE TEMP TABLE with no log 語句來建立暫存資料表。
暫存資料表按照如下優先順序建立在相應的資料空間上:
由 DBSPACETEMP 環境變數指定的資料空間
由 DBSPACETEMP 配置參數指定的資料空間
如果設定了 DBSPACETEMP 環境變數,那麼暫存資料表會建立在由 DBSPACETEMP 環境變數指定的資料空間上,如果沒有設定 DBSPACETEMP 環境變數,那麼暫存資料表會建立在由 DBSPACETEMPP 配 置參數指定的資料空間上。
出於效能考慮,一般我們建議在多個物理磁碟上建立多個暫存資料表空間,這樣,當建立暫存資料表時,它會分區到所有暫存資料表空間上,提高並發處理效率。
在採用記錄模式的資料庫中,對暫存資料表的所有 DML 操作都要記日誌,而且不加 with no log 選項,暫存資料表不會建立在由 DBSPACETEMP 環境變數或配置參數指定的臨時資料空間上,往往 資料會寫到根資料空間(Root dbspace)上,影響系統效能,而且使用者在建立暫存資料表時,往往總是忘記 with no log 選項。為瞭解決上述問題,Informix 11 版本開始提供了關閉對暫存資料表記 日誌的方法,這樣,建暫存資料表時,即使沒加 with no log 選項,暫存資料表也會建立在由 DBSPACETEMP 環境變數或配置參數指定的臨時資料空間上。
我們可以採用下述兩種方法來關閉對暫存資料表記日誌:
修改 onconfig 配置參數 TEMPTAB_NOLOG 1
通過 onmode 命令動態改變
onmode -Wf "TEMPTAB_NOLOG =1"
onmode -Wm "TEMPTAB_NOLOG =1"
其中,-Wm 選項改變參數值後立即生效; -Wf 選項改變參數值後立即生效,同時將新的參數值寫到 onconfig 設定檔中。
使用 TEMPTAB_NOLOG 參數來禁用暫存資料表上的日誌記錄。該參數可以改進應用程式的效能,尤其是在有 HDR 次要伺服器、RS 次要伺服器或 SD 次要伺服器的資料複製環境中,因為其防止 Informix 通過網路傳輸暫存資料表。