將接口調(diào)用或者文件操作等這一類非數(shù)據(jù)庫交互操作嵌入在SQL事務代碼之中,那么整個事務很有可能因此掛起(接口不通等待超時或是上傳下載大附件)。
2.事務中包含性能較差的查詢SQL
事務中存在慢查詢,導致同一個事務中的其他DML無法及時釋放占用的行鎖,引起行鎖等待。
3.單個事務中包含大量SQL
通常是由于在事務代碼中加入for循環(huán)導致,雖然單個SQL運行很快,但是SQL數(shù)量一大,事務就會很慢。
4.級聯(lián)更新SQL執(zhí)行時間較久
這類SQL容易讓人產(chǎn)生錯覺,例如:updateAset...where...in(selectB)這類級聯(lián)更新,不僅會占用A表上的行鎖,也會占用B表上的行鎖,當SQL執(zhí)行較久時,很容易引起B(yǎng)表上的行鎖等待。
5.磁盤問題導致的事務掛起
極少出現(xiàn)的情形,比如存儲突然離線,SQL執(zhí)行會卡在內(nèi)核調(diào)用磁盤的步驟上,一直等待,事務無法提交。
綜上可以看出,如果事務長時間未提交,且事務中包含了DML操作,那么就有可能產(chǎn)生行鎖等待,引起報錯。
平時使用oracle時,為什么會鎖表?簡單地說,鎖是為了保證數(shù)據(jù)的一致性,鎖不止存在于oracle,其他數(shù)據(jù)庫一樣有,只不過機制上可能大相徑庭。至于什么樣的操作會鎖表,其實鎖的種類很多,你所說的鎖表大概說的是行級鎖——也就是事務鎖吧。比如一個update語句,被update的行上會有鎖——能阻塞其他事務對這些行進行修改的鎖,雖然這時候這張表上也有表級鎖,但這個表級鎖并不影響其他事務對表中的其他行進行修改,只是會阻礙對這張表的DDL操作。
oracle行級鎖和表級鎖的區(qū)別?oracle速度慢,很難評說,可能是因為以下原因:
對于并發(fā)訪問內(nèi)部管理數(shù)據(jù)結構嚴謹性和對業(yè)務數(shù)據(jù)并發(fā)訪問嚴禁性高,要求ACID,如構建一致性讀塊,保存回滾和日志信息維護各種b-tree,bitmapindex,物化視圖等等處理各種trigger更新各種內(nèi)部性能統(tǒng)計檢查各種配合是否到限制但是,執(zhí)行快慢主要是看以下幾點,單純的執(zhí)行一個簡單的SQL并不能說明在大型復雜業(yè)務系統(tǒng)下的執(zhí)行效率查詢優(yōu)化器的能力,包括數(shù)據(jù)分布統(tǒng)計數(shù)據(jù)的自動采集和利用,對于復雜SQL這個是關鍵并發(fā)訪問的沖突粒度,是表級鎖,塊或頁級鎖,還是行級索,讀寫是否沖突等等,內(nèi)部數(shù)據(jù)結構latch的應用分區(qū)能力存儲過程支持程度,因為使用storedprocedure能顯著減低數(shù)據(jù)處理消耗
文章名稱:oracle怎么刪除字段oracle行級鎖和表級鎖的區(qū)別?-創(chuàng)新互聯(lián)
文章轉載:http://jinyejixie.com/article36/dejjsg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關鍵詞優(yōu)化、建站公司、用戶體驗、微信小程序、手機網(wǎng)站建設、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容