偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

實(shí)施Oracle事務(wù)相關(guān)管理問(wèn)題的總結(jié)

數(shù)據(jù)庫(kù) Oracle
以下的文章主要是對(duì)Oracle事務(wù)管理的相關(guān)問(wèn)題的經(jīng)驗(yàn)總結(jié),如果你對(duì)其實(shí)際的相關(guān)操作感興趣的話,你就可以點(diǎn)擊以下的文章了。

以下的文章主要介紹的實(shí)施Oracle事務(wù)管理的相關(guān)問(wèn)題的總結(jié),前兩天在相關(guān)網(wǎng)站看見(jiàn)實(shí)施Oracle事務(wù)管理的相關(guān)問(wèn)題的資料,覺(jué)得挺好,就拿出來(lái)供大家分享。實(shí)施Oracle事務(wù)管理的相關(guān)問(wèn)題。

該SQL語(yǔ)句的操作過(guò)程中認(rèn)為此數(shù)據(jù)狀態(tài)是保持不變的。當(dāng)此操作執(zhí)行結(jié)束時(shí)刻,才產(chǎn)生語(yǔ)句級(jí)數(shù)據(jù)狀態(tài)影響。就是說(shuō),可能該語(yǔ)句同時(shí)更新了兩行,但都用了同一個(gè)主鍵,則此時(shí)會(huì)導(dǎo)致違反***性約定而消除整個(gè)語(yǔ)句的影響,如果成功執(zhí)行,但未必就在Oracle事務(wù)級(jí)別上影響數(shù)據(jù)狀態(tài),就是說(shuō)如果所在Oracle事務(wù)回滾,此影響仍然被消除,不過(guò)正如前面所說(shuō),一個(gè)語(yǔ)句成功執(zhí)行后,就可能影響其他語(yǔ)句所面對(duì)的數(shù)據(jù)狀態(tài)。51CTO數(shù)據(jù)庫(kù)頻道向您推薦《Oracle數(shù)據(jù)庫(kù)調(diào)試與性能優(yōu)化》專(zhuān)題。

PL/SQL的執(zhí)行是怎么管理并發(fā)和恢復(fù)控制的?

PL/SQL是在一個(gè)PL/SQL引擎中執(zhí)行的。該引擎可以認(rèn)為是Oracle之外的單位。該引擎會(huì)解析PL/SQL,并不斷發(fā)送SQL語(yǔ)句給Oracle。所以和用Java程序通過(guò)JDBC在一個(gè)會(huì)話連接中發(fā)送多個(gè)SQL語(yǔ)句沒(méi)有本質(zhì)差別。也因此并發(fā)和恢復(fù)管理沒(méi)有不同。

Oracle死鎖是怎么樣產(chǎn)生的?

由于Oracle控制并發(fā)是使用的鎖機(jī)制,也因此即會(huì)產(chǎn)生死鎖問(wèn)題。Oracle在執(zhí)行一個(gè)語(yǔ)句時(shí),會(huì)根據(jù)語(yǔ)句的含義,同時(shí)根據(jù)所處的Oracle事務(wù)隔離級(jí)別,解析出需要加什么樣的鎖,什么時(shí)候釋放。而隔離級(jí)別越高,對(duì)鎖資源占用越大?,F(xiàn)在考慮這樣的情形,Oracle同時(shí)處理兩個(gè)事務(wù)A,B。

A發(fā)過(guò)來(lái)幾條語(yǔ)句,導(dǎo)致Oracle加了幾把鎖沒(méi)有釋放,B發(fā)過(guò)來(lái)幾條語(yǔ)句,導(dǎo)致Oracle加了另外幾把鎖沒(méi)有釋放,現(xiàn)在,A又發(fā)過(guò)來(lái)一個(gè)語(yǔ)句,此語(yǔ)句要求Oracle加的一些鎖中,有幾個(gè)鎖已經(jīng)被B事務(wù)占用,那么A等待,而B(niǎo)又發(fā)過(guò)來(lái)一條語(yǔ)句,此語(yǔ)句要求Oracle加的鎖,在A手中。

于是死鎖出現(xiàn)。而隔離級(jí)別越高,死鎖的可能性越大。可以分析出來(lái),死鎖的根本原因在于,Oracle事務(wù)包含的語(yǔ)句是分條發(fā)給Oracle的,Oracle不能夠在事務(wù)開(kāi)始時(shí)刻就解析出全部執(zhí)行過(guò)程需要什么鎖,什么時(shí)候釋放,無(wú)法統(tǒng)一安排。

死鎖問(wèn)題歸咎由誰(shuí)呢?我這么理解:如果沒(méi)有事務(wù)概念,Oracle在語(yǔ)句級(jí)上控制并發(fā),完全不會(huì)出現(xiàn)死鎖問(wèn)題。因?yàn)樵诮馕稣Z(yǔ)句時(shí),Oracle已經(jīng)知道要加多少把鎖,它會(huì)看目前這些鎖如果能全部獲得就執(zhí)行,否則就等待??墒菍?shí)際應(yīng)用怎么能沒(méi)有Oracle事務(wù)的概念呢?

我同意完全可以出現(xiàn)新的sql語(yǔ)法,可以把原來(lái)的多條sql語(yǔ)句的含義在一個(gè)語(yǔ)句中定義完畢,長(zhǎng)短不是問(wèn)題,犧牲一定的語(yǔ)法簡(jiǎn)潔度也不是問(wèn)題;然而最關(guān)鍵的是往往我們是在一個(gè)業(yè)務(wù)處理邏輯中,多個(gè)數(shù)據(jù)庫(kù)操作之間摻雜了其他非數(shù)據(jù)庫(kù)操作,而又想獲取這些數(shù)據(jù)庫(kù)操作作為一個(gè)整體的ACID。

因此事務(wù)概念必須存在。既然如此,或許我們真得可以把一個(gè)Oracle事務(wù)可能包含的語(yǔ)句在事務(wù)開(kāi)始時(shí)就交給Oracle,盡管這樣一來(lái),有可能就包含了實(shí)際通過(guò)業(yè)務(wù)邏輯判斷不會(huì)執(zhí)行的語(yǔ)句,導(dǎo)致Oracle浪費(fèi)鎖,降低并發(fā)處理能力。

我之前的文章曾經(jīng)介紹過(guò)用Java實(shí)現(xiàn)同步控制,降低Oracle隔離級(jí)別,只利用Oracle的原子性支持。這樣做的原因就在上文中基本提到了。我們?cè)诰帉?xiě)Java業(yè)務(wù)邏輯時(shí),是知道我們需要在一串業(yè)務(wù)邏輯中操作多少次數(shù)據(jù)庫(kù)的,也因此,能夠在業(yè)務(wù)邏輯開(kāi)始時(shí)就控制得到所有的鎖再執(zhí)行。

這樣做確實(shí)能夠降低Oracle壓力,并消除死鎖問(wèn)題,然而這樣做會(huì)導(dǎo)致同步壓力集中到Java應(yīng)用端,而且對(duì)研發(fā)人員要求也會(huì)提高。盡管如此,在Java應(yīng)用端使用同步要靈活很多,而不必限制在表鎖行鎖,你甚至可以建一個(gè)森林結(jié)構(gòu)的信號(hào)量數(shù)據(jù)來(lái)控制同步。

呵呵,反過(guò)來(lái)也可以理解隔離級(jí)別的問(wèn)題,為什么要存在允許幻像讀的隔離級(jí)別呢?隔離級(jí)別的存在是一種權(quán)衡,如果應(yīng)用既不想自己控制并發(fā),又想提高并發(fā)能力,則需要好好權(quán)衡一下吧!

【編輯推薦】

  1. Oracle修改字段類(lèi)型2種方案介紹
  2. Oracle數(shù)據(jù)文件的特性介紹
  3. Oracle臨時(shí)表用法的經(jīng)驗(yàn)心得
  4. Oracle表中數(shù)據(jù)導(dǎo)出成 Txt格式的方案
  5. Oracle通過(guò)其實(shí)際存儲(chǔ)過(guò)程中返回相關(guān)數(shù)據(jù)集

 

責(zé)任編輯:佚名 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-05-05 09:33:46

Oracle事務(wù)

2010-04-21 08:50:08

2010-04-15 08:57:29

Oracle數(shù)據(jù)庫(kù)

2010-05-31 15:12:44

MySQL數(shù)據(jù)庫(kù)

2021-06-10 16:18:39

Oracle賬號(hào)信息

2010-04-23 15:58:20

Oracle用戶

2015-07-06 09:52:40

2010-04-21 09:12:56

Oracle JDBC

2010-03-16 19:29:26

Java多線程操作

2009-11-30 14:40:29

PHP管理Oracle

2010-04-23 09:58:30

Oracle管理

2010-04-16 17:31:22

ORACLE回滾段

2012-07-23 16:41:10

Oracle

2015-10-28 15:35:33

Oracle策略

2009-12-11 17:04:20

VS2008程序

2010-05-04 15:59:05

Oracle字符集

2010-04-14 13:22:10

Oracle系統(tǒng)函數(shù)

2011-05-19 14:29:49

Oraclerownum

2021-04-09 21:07:07

Oracle數(shù)據(jù)庫(kù)謂詞

2011-05-18 11:08:34

oracleupdate
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)