新聞中心
描述
?SAVEPOINT?語句用來實現(xiàn)事務的部分回滾。

為榮昌等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及榮昌網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都做網(wǎng)站、網(wǎng)站制作、榮昌網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
格式
- 創(chuàng)建?
SAVEPOINT?:
SAVEPOINT spname- 回滾到?
SAVEPOINT?:
ROLLBACK [WORK] to [SAVEPOINT] spname參數(shù)說明
|
參數(shù) |
描述 |
|---|---|
|
spname |
指定 |
示例
假設一個事務執(zhí)行了如下語句:
|
sql_no |
語句 |
分區(qū) |
|---|---|---|
|
1 |
update... |
p1, p4 |
|
savepoint sp1 |
||
|
2 |
update... |
p2, p4 |
|
3 |
update... |
p3, p5 |
|
savepoint sp2 |
||
|
4 |
update... |
p1, p3, p6 |
|
5 |
update... |
p1, p5 |
|
savepoint sp3 |
||
|
6 |
select... |
|
|
7 |
update... |
p5, p6 |
|
savepoint sp4 |
記錄 Savepoint
用戶在提交事務之前可以創(chuàng)建?SAVEPOINT?,需要根據(jù)?SAVEPOINT?創(chuàng)建的順序,將事務的?SAVEPOINT?串成鏈表。以上事務包含了 7 條 SQL 和 4 個?SAVEPOINT?,記錄?SAVEPOINT?的鏈表如下圖所示,其中每個節(jié)點記錄了??的映射關系:
事務參與者列表
事務為了支持回滾某條 SQL 之后的所有修改,需要將每條語句涉及的參與者以及對應的 ?sql_no? 記錄下來,以上事務執(zhí)行了 7 條 SQL,涉及 p1~p6 共 6 個分區(qū):
Savepoint 回滾過程
- 根據(jù)?
SAVEPOINT?鏈表查詢?spname?對應的?sql_no?假設用戶執(zhí)行?ROLLBACK to SAVEPOINT sp2?,根據(jù)savepoint鏈表查詢到 sp2 對應的?sql_no?為 3。 - 根據(jù)事務參與者列表查詢?
sql_no?對應的分區(qū)根據(jù)事務參與者列表查詢到?sql_no?大于 3 的語句操作的分區(qū)涉及 p1、p3、p5、p6。 - 回滾分區(qū)數(shù)據(jù)根據(jù)第 2 步查詢到的分區(qū),調度程序向這些分區(qū)發(fā)起回滾請求,回滾當前事務在這些分區(qū)上 sp2 之后的所有修改。其中 p1、p3、p5 上關于本事務的部分修改被回滾掉,p6 上關于本事務的所有修改都被回滾掉。
- 更新事務參與者列表信息修改事務參與者列表,將?
sql_no?大于 3 的操作信息從事務參與者列表中刪除,由于 p6上的所有修改都被回滾掉,因此 p6 可以從參與者列表中刪除。 - 刪除無效的 Savepoint用戶執(zhí)行?
ROLLBACK to SAVEPOINT sp2?成功后,系統(tǒng)會刪除 sp3 和 sp4 的SAVEPOINT,不允許再回滾到 sp3 和 sp4。
分享題目:創(chuàng)新互聯(lián)OceanBase教程:OceanBaseSAVEPOINT
URL標題:http://m.5511xx.com/article/dpohece.html


咨詢
建站咨詢
