從5.1final版開始,do的緩存轉換到datastruct的緩存中.只有那些原始的datastructs加入到新的datastruct緩存中而不是所有的do,do只有一個數據(datastruct對象).所有的轉換是在這個對象上完成的, datastruct對象包含了每個表的列的值,現在,do保存了兩個datastruct引用.
(1) orginaldata
(2) data
orginaldata保存了原始的數據(從數據庫中讀取),這個數據將不會被修改直到提交,而且如果緩存存在,則該datastruct對象被加到datastruce緩存中去.
data僅僅當數據被修改才會產生(拷貝orginaldata),如果第二個datastruct存在,那么do的屬性”isdirty”將被設置為true,即使經過一些修改之后,新的datastruct保存了根orginaldata一樣的值.該do仍然是臟的,所有沒有辦法讓屬性isdirty由true到false,除非在提交事務的過程中,如果事務被提交,新的datastruct將會轉移到orginaldata.新的
datastruct將會再次置為空,所有屬性isdirty變為false.
一個新生成的do(內存中,而不是數據庫中)將只有一個datastruct對象數據, orginaldata中的orginaldata數據值在提交之前為空..
oid和version屬性從do轉移到datastruct對象.
datastruct中新添加的屬性有:
isempty和databasename
datastruct中新添加的方法有:
getoid()
setdatabase(string dbname)
……..
dods為每張表擁有緩存的可能.可能的緩存類型有:none,lru.和full.
dods有兩種層次的緩存.
數據緩存級.只有一個lru緩存,
查詢緩存級,可以有兩個查詢緩存(簡單和復雜類型),這些查詢緩存也是lru緩存.
緩存的配置:
同上面的類似,也分為三個層次的.
中國最大的web開發資源網站及技術社區,