SQL Server實(shí)現(xiàn)的鎖主要是由通過鎖表來實(shí)現(xiàn),在內(nèi)存中開辟專門區(qū)域?qū)τ诓煌墑e的對象(行、鍵-塊-對象、索引-庫)相應(yīng)的鎖記錄,事務(wù)層和存儲層完全分離,并且鎖占用開銷較大,當(dāng)鎖占用較多資源的時(shí)候,會進(jìn)行鎖升級降低并發(fā)性。
成都創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。10多年品質(zhì),值得信賴!
MySQL對與鎖的實(shí)現(xiàn)主要是行鍵的實(shí)現(xiàn),采用在頁面頭部記錄位圖的方式,這樣做在檢索行鎖記錄的時(shí)候需要到頁面頭部獲取數(shù)據(jù),頁面頭部因?yàn)橛梦粓D信息記錄行鎖,所以相比SQL Server省去了較多的資源,無需進(jìn)行鎖升級。另外gap lock的實(shí)現(xiàn)可以很好的支持高級別的隔離級別和并發(fā)性的提升,例如RR隔離級別。
Oracle對鎖的實(shí)現(xiàn)是將事務(wù)層和存儲層結(jié)合的方式進(jìn)行處理,鎖的信息在塊頭的ITL事務(wù)槽和行信息中,這樣做極大的節(jié)省了內(nèi)存資源和鎖資源,鎖幾乎不占用任何資源,鎖定信息完全結(jié)合事務(wù)槽和行標(biāo)志進(jìn)行判斷,不像MySQL有單獨(dú)的內(nèi)存鎖表分離來處理,在rac模式下,可以很方便的對于除了數(shù)據(jù)之外的事務(wù)和鎖信息進(jìn)行同步,存儲及事務(wù),使得rac的設(shè)計(jì)單一有效,但缺點(diǎn)也很明顯,就是過于結(jié)合緊密的事務(wù)層和存儲層使得基于事務(wù)的擴(kuò)展變得很困難。
PostgreSQL的鎖設(shè)計(jì)內(nèi)存中不記錄行鎖信息,行鎖信息由行上的transactionid信息得到,節(jié)省內(nèi)存資源, 在索引回表時(shí)采用mvcc技術(shù)避免普通的snapshot now模式或者其他非mvcc需要使用鎖定的劣勢。對于