oracle的一致讀和當前讀,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
創(chuàng)新互聯(lián)長期為成百上千客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為光山企業(yè)提供專業(yè)的成都網(wǎng)站設計、成都做網(wǎng)站,光山網(wǎng)站改版等技術服務。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
一致讀(Consistent read): “發(fā)現(xiàn)”要修改的行時,所完成的獲取就是一致讀。
當前讀(Current read): 得到塊來實際更新所要修改的行時,所完成的獲取就是當前讀。
dml語句實際上都包含一個where字句,在做dml時,首先會根據(jù)where字句的條件做一致讀,即去查找符合where條件的行,在進行一致讀的時候,如果發(fā)現(xiàn)被查找行處于鎖定狀態(tài)時,oracle會去讀取undo段,進而構造出一個事務開始時對應的一致塊,最終得出要修改的行。
然后oracle再做當前讀,即查看要修改行的當前值,并比較當前值是否和一致讀取的值相等,如果不相等的話,oracle就會重啟動更新。
在重啟動更新時,oracle會先使用select for update來鎖定這行記錄,然后再進行dml操作,這樣可以防止再次重啟動。
select for update可以防止重啟動的關鍵原因在于: select for update只會進行當前讀,而沒有一致讀。這樣就不存在由于當前讀和一致讀中間的時間差導致的兩次讀取值不一樣問題。
看完上述內(nèi)容,你們掌握oracle的一致讀和當前讀的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
名稱欄目:oracle的一致讀和當前讀
當前地址:http://jinyejixie.com/article2/ijohic.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航、服務器托管、網(wǎng)站設計、電子商務、網(wǎng)站排名、自適應網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)