以下文字資料是由(歷史新知網)小編為大家搜集整理后發布的內容,讓我們趕快一起來看一下吧!
問題一:什么是臟數據 臟數據在臨時更新(臟讀)中產生。事務A更新了某鼎數據項X,但是由于某種原因,事務A出現了問題,于是要把A回滾。但是在回滾之前,另一個事務B讀取了數據項X的值(A更新后),A回滾了事務,數據項恢復了原值。事務B讀取的就是數據項X的就是一個“臨時”的值,就是臟數據。
問題二:求助大神 什么叫數據庫的臟數據? 5分LRU(Least Used)算法―最近最少使用原則。采用LRU保持內存中的數據塊是最近使用的,使盡可能減少I/O,提高數據庫的性能;
LRU 列表(LRU List)―是數據緩沖區的管理列表區。登記了數據緩沖區空閑塊和保持塊的地址和狀態標識(Free自由、保持、Drity臟);
臟列表(DIRTY List弧―數據緩存區中被修改過的數據塊地址列表區。當數據緩沖區中的塊被修改,則被標志為“臟”塊。DBWR的主要任務是把“臟”數據緩沖塊寫入磁盤,使緩沖區保持“干凈”。
問題三:簡述臟數據的產生原因及解決辦法 數據庫鎖的產生原因及解決辦法
數據庫和操作系統一樣,是一個多用戶使用的共享資源。當多個用戶并發地存取數據 時,在數據庫中就會產生多個事務同時存取同一數據的情況。若對并發操作不加控制就可能會讀取和存儲不正確的數據,破壞數據庫的一致性。加鎖是實現數據庫并 發控制的一個非常重要的技術。在實際應用中經常會遇到的與鎖相關的異常情況,當兩個事務需要一組有沖突的鎖,而不能將事務繼續下去的話,就會出現死鎖,嚴 重影響應用的正常執行。
在數據庫中有兩種基本的鎖類型:排它鎖( Locks,即X鎖)和共享鎖(Share Locks,即S鎖)。當數據對象被加上排它鎖時,其他的事務不能對它讀取和修改。加了共享鎖的數據對象可以被其他事務讀取,但不能修改。數據庫利用這兩 種基本的鎖類型來對數據庫的事務進行并發控制。
死鎖的第一種情況
一個用戶A 訪問表A(鎖住了表A),然后又訪問表B;另一個用戶B 訪問表B(鎖住了表B),然后企圖訪問表A;這時用戶A由于用戶B已經鎖住表B,它必須等待用戶B釋放表B才能繼續,同樣用戶B要等用戶A釋放表A才能繼續,這就死鎖就產生了。
解決方法:
這種死鎖比較常見,是由于程序的BUG產生的,除了調整的程序的邏輯沒有其它的辦法。仔細分析程序的邏輯,對于數據庫的多表操作時,盡量按照相同的順序進 行處理,盡量避免同時鎖定兩個資源,如操作A和B兩張表時,總是按先A后B的順序處理, 必須同時鎖定兩個資源時,要保證在任何時刻都應該按照相同的順序來鎖定資源。
死鎖的第二種情況
用戶A查詢一條紀錄,然后修改該條紀錄;這時用戶B修改該條紀錄,這時用戶A的事務里鎖的性質由查詢的共享鎖企圖上升到獨占鎖,而用戶B里的獨占鎖由于A 有共享鎖存在所以必須等A釋放掉共享鎖,而A由于B的獨占鎖而無法上升的獨占鎖也就不可能釋放共享鎖,于是出現了死鎖。這種死鎖比較隱蔽,但在稍大點的項 目中經常發生。如在某項目中,頁面上的按鈕點擊后,沒有使按鈕立刻失效,使得用戶會多次快速點擊同一按鈕,這樣同一段代碼對數據庫同一條記錄進行多次操 作,很容易就出現這種死鎖的情況。
解決方法:
1、對于按鈕等控件,點擊后使其立刻失效,不讓用戶重復點擊,避免對同時對同一條記錄操作。
2、使用樂觀鎖進行控制。樂觀鎖大多是基于數據版本()記錄機制實現。即為數據增加一個版本標識,在基于數據庫表的版本解決方案中,一般是 通過為數據庫表增加一個“”字段來實現。讀取出數據時,將此版本號一同讀出,之后更新時,對此版本號加一。此時,將提交數據的版本數據與數 據庫表對應記錄的當前版本信息進行比對,如果提交的數據版本號大于數據庫表當前版本號,則予以更新,否則認為是過期數據。樂觀鎖機制避免了長事務中的數據 庫加鎖開銷(用戶A和用戶B操作過程中,都沒有對數據庫數據加鎖),大大提升了大并發量下的系統整體性能表現。 在其數據訪問引擎中內置了樂觀鎖實現。需要注意的是,由于樂觀鎖機制是在我們的系統中實現,來自外部系統的用戶更新操作不受我們系統的控制,因此可能會造 成臟數據被更新到數據庫中。
3、使用悲觀鎖進行控制。悲觀鎖大多數情況下依靠數據庫的鎖機制實現,如的 … for 語句,以保證操作最大程度的獨占性。但隨之而來的就是數據庫性能的大量開銷數據庫讀臟數據怎么理解,特別是對長事務而言,這樣的開銷往往無法承受。如一個金融系統數據庫讀臟數據怎么理解, 當某個操作員讀取用戶的數據,并在讀出的用戶數據的基礎上進行修改時(如更改用戶賬戶余額),如果采用悲觀鎖機制,也就意味著......余下全文>>
問題四:SQL中臟數據是啥意思 臟數據是指源系統中的數據不在給定的范圍內或對于實際業務毫無意義,或是數據格式非法,以及在源系統中存在不規范的編碼和含糊的業務邏輯。
在數據庫技術中,臟數據在臨時更新(臟讀)中產生。事務A更新了某個數據項X,但是由于某種原因,事務A出現了問題,于是要把A回滾。但是在回滾之前,另一個事務B讀取了數據項X的值(A更新后),A回滾了事務,數據項恢復了原值。事務B讀取的就是數據項X的就是一個“臨時”的值,就是臟數據。
(源自百度百科)
參考資料:baike.baidu/view/
問題五:請問java中的臟數據是指什么? 你操作數據庫修改某一字段內容,在你修改了但還沒mit時,另一線程在讀取這數據,他讀取的就是你修改前的數據,但事實上你已經修改了,這就是臟數據俯,臟,贓物的意思,你能懂得
問題六:中臟數據以及臟塊是怎么來的,有啥區別 一,臟數據:
1,臟數據就是讀到 cache做了修改但還沒有寫到里面的數據,只要沒有寫入數據文件,不管是否提交,都可以稱為臟數據。
2,另外一個表的外鍵,由于某些原因,這個外鍵關聯失效了,但是這個外鍵列沒有刪除,那么這一列數據也可以稱為臟數據,就是沒有意思的或者冗余的數據都可以叫做臟數據。
二,臟塊
存放臟數據的數據塊(data block)就可以稱為臟塊。
問題七:數據庫臟數據 A 批處理作業中回滾事務失敗
問題八:數據庫臟數據 15分B和C。
A、D都可能產生臟數據。
問題九:“臟數據”問題怎么解決 臟讀只是在查詢時,有人在更改數據,這樣數據就不統一,一般不影響功能
問題十:請問java中的臟數據是指什么? “臟數據 ”在很多地方都有出現比如:數據庫,MFC的文檔設置中。通常臟數據是表示一個數據已經被修改,但是還沒有保存或進一步的處理。比如在MFC的文檔中當你把一個文檔設置成由臟數據時假如你退出程序,就會提示你是否保存修改當數據。
臟數據 一般就是一個標志,數據被修改了。