SQL事務(wù)的相關(guān)內(nèi)容,是在SQL標(biāo)準(zhǔn)的SQL/基" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 信息時(shí)代 > SQL事務(wù)(數(shù)據(jù)庫)

SQL事務(wù)(數(shù)據(jù)庫)

時(shí)間:2022-11-08 10:30:01 | 來源:信息時(shí)代

時(shí)間:2022-11-08 10:30:01 來源:信息時(shí)代

    SQL事務(wù) : 一條或多條SQL語句的執(zhí)行序列,該序列作為一個(gè)整體,在恢復(fù)時(shí)具有原子性,即事務(wù)中的所有語句或者全部成功執(zhí)行,或者一條語句也不執(zhí)行。
SQL事務(wù)的相關(guān)內(nèi)容,是在SQL標(biāo)準(zhǔn)的SQL/基礎(chǔ)部分中定義的。SQL標(biāo)準(zhǔn)中關(guān)于SQL事務(wù)的內(nèi)容主要包括:
1. 事務(wù)管理
執(zhí)行BEGIN TRANSACTION語句或調(diào)用引起事務(wù)初始化的SQL語句將初始化一個(gè)SQL事務(wù),執(zhí)行COMMIT語句或ROLLBACK語句將終止一個(gè)SQL事務(wù)。如果SQL事務(wù)是通過成功執(zhí)行COMMIT語句而終止,則該SQL事務(wù)對SQL數(shù)據(jù)或模式所作的變更是持久的。如果SQL事務(wù)是通過ROLLBACK語句終止的,則該SQL事務(wù)對SQL數(shù)據(jù)或模式的所有變更均被撤銷。
SQL標(biāo)準(zhǔn)中具體的事務(wù)管理語句如下:
(1) 開始事務(wù)語句:START TRANSACTION [隔離級(jí)|READ ONLY| READ WRITE]。READ ONLY表示該事務(wù)的訪問方式為只讀,READ WRITE表示該事務(wù)的訪問方式為讀寫。
(2)提交語句:COMMIT[WORK]。提交語句有COMMIT和COMMIT WORK兩種等價(jià)形式。
(3)回滾語句: ROLLBACK[WORK][保存點(diǎn)]。同樣,回滾語句也有ROLLBACK和ROLLBACK WORK兩種等價(jià)形式。保存點(diǎn)則用來實(shí)現(xiàn)SQL事務(wù)的部分回滾,具體將在下面介紹。
2. SQL事務(wù)的隔離級(jí)
SQL標(biāo)準(zhǔn)中把訪問相同SQL數(shù)據(jù)或模式并且在時(shí)間上相互重疊的多個(gè)SQL事務(wù)稱為并發(fā)SQL事務(wù)。SQL事務(wù)的隔離級(jí)是該SQL事務(wù)受并發(fā)SQL事務(wù)的影響及可能影響并發(fā)SQL事務(wù)的程度。SQL事務(wù)有四種不同的隔離級(jí): READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。隔離級(jí)和并發(fā)SQL事務(wù)執(zhí)行過程中可能發(fā)生的幾種現(xiàn)象相關(guān),這幾種現(xiàn)象分別是:
(1) P1(“臟讀”):SQL事務(wù)T1修改某一行,SQL事務(wù)T2在T1執(zhí)行COMMIT之前讀取該行。如果此時(shí)T1執(zhí)行ROLLBACK,T2就會(huì)讀取從未提交而被認(rèn)為是從未存在的一行。
(2) P2(“不可重復(fù)讀”): SQL事務(wù)T1讀取某一行,SQL事務(wù)T2修改或刪除該行,并執(zhí)行COMMIT。如果T1此時(shí)試圖重讀該行,則它可能讀到被修改后的值,或發(fā)現(xiàn)該行已被刪除。
(3) P3(“幻象”): SQL事務(wù)T1讀取滿足某個(gè)搜索條件的行集,SQL事務(wù)T2執(zhí)行滿足T1所用搜索條件的SQL語句來產(chǎn)生一行或多行,如果SQL事務(wù)T1此時(shí)使用相同的搜索條件重復(fù)初始讀操作,則會(huì)得到不同的行集。
四種隔離級(jí)可確保每個(gè)SQL事務(wù)要么執(zhí)行完,要么根本不執(zhí)行,且不丟失任何更新。相對于現(xiàn)象P1、P2和P3所采用的隔離級(jí)是不同的。表1指定對于給定的隔離級(jí),某一現(xiàn)象是否可能發(fā)生。

表1 SQL事務(wù)隔離級(jí)與三種現(xiàn)象


級(jí)P1P2P3
READ UNCOMMITTED可能可能可能
READ COMMITTED不可能可能可能
REPEATABLE READ不可能不可能可能
SERIALIZABLE不可能不可能不可能


READ UNCOMMITTED是最低的SQL隔離級(jí)。在這個(gè)隔離級(jí)上,SQL事務(wù)對SQL數(shù)據(jù)和模式的改變可被相同SQL會(huì)話中該SQL事務(wù)和其他SQL事務(wù),或其他SQL會(huì)話中的相同SQL事務(wù)所感知。
READ COMMITTED是次低的SQL隔離級(jí)。在這個(gè)隔離級(jí)上,SQL事務(wù)不允許看見其他事務(wù)未提交的更新,但可看見其他事務(wù)提交的更新。
REPEATABLE READ是次高的SQL隔離級(jí)。在這個(gè)隔離級(jí)上,SQL事務(wù)不允許看見其他事務(wù)提交或未提交的更新,但可看到其他并發(fā)事務(wù)插入到數(shù)據(jù)庫中的記錄。
SERIALIZABLE是最高的SQL隔離級(jí),能夠保證事務(wù)并發(fā)執(zhí)行的結(jié)果與一個(gè)串行化執(zhí)行的結(jié)果相同,完全避免上述三種現(xiàn)象。
3. 保存點(diǎn)
使用保存點(diǎn)可以實(shí)現(xiàn)SQL事務(wù)的部分回滾。在SQL事務(wù)中,執(zhí)行保存點(diǎn)聲明語句時(shí)就建立了保存點(diǎn)。如果ROLLBACK語句引用保存點(diǎn),則該保存點(diǎn)建立后所進(jìn)行的所有變更均被撤銷,而該SQL事務(wù)還原為它在執(zhí)行保存點(diǎn)聲明語句后的那一時(shí)刻的狀態(tài)。SQL標(biāo)準(zhǔn)中具體的保存點(diǎn)管理語句如下:
(1)保存點(diǎn)聲明語句:
SAVEPOINT保存點(diǎn)名
(2)釋放保存點(diǎn)語句:
RELEASE SAVEPOINT保存點(diǎn)名
(3) 回滾到保存點(diǎn)語句:
ROLLBACK TO SAVEPOINT保存點(diǎn)名

74
73
25
news

版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉