暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8s 事务处理逻辑简述

GBASE数据库 2022-08-16
1421

在 GBase 中,所有的用户的活动都发生在一个事务中。GBase 数据库引擎提供的事务处理能力完全满足事务处理要求的 ACID 准则:原子性(atomicity), 一致性(consistency),隔离性(isolation)和持久性(durability)。

1事务的启动模式

 

GBase 数据库与主流数据库相同,在事务的启动上提供两种模式,即自动提交(auto-commit)和非自动提交。每个数据库连接,均可设置自己当前连接的自动提交状态。

当 AUTOCOMMIT=1 时,启动自动提交模式,每个 SQL 语句自己形成一个事务。当AUTOCOMMIT=0 时,关闭自动提交模式,那么就认为用户总是有一个打开的事务。一个 SQL COMMIT 或 ROLLBACK 语句能够结束当前的事务或刚启动的事务。COMMIT 意味着当前事务中的修改是永久的,对其它用户可见。 ROLLBACK 语句,取消了当前事务中的所有修改。

即使连接使用自动提交模式, 用户能仍然能使用显式的 START TRANSACTION 或 BEGIN 语句来执行一个多语句事务并使用 COMMIT 或ROLLBACK 来结束它。

 

2事务的提交或回滚

GBase 用预先设定的自动提交模式开始每个客户端的连接。当启动自动提交模式的时候,如果一条语句的执行未发生错误,GBase 在该 SQL 语句之后做提交工作。

如果用户关闭自动提交模式而且没有调用一个事务的显式提交而关闭一个连接,那么 GBase 回滚用户的事务。

如果一个 SQL 语句返回一个错误, 那提交/回滚行为依赖错误而采取相应


的操作。参考死锁监测和回滚。

下面的 SQL 语句(和它们的同义字)导致 GBase 隐含的提交当前事务:

ALTER TABLE, BEGIN, CREATE INDEX, DROP DATABASE, DROP INDEX, DROP TABLE, LOAD MASTER DATA, LOCK TABLES, RENAME TABLE, SET AUTOCOMMIT=1 , START TRANSACTION, TRUNCATE, UNLOCK TABLES

CREATE TABLE,TRUNCATE TABLE,DROP DATABASE 和CREATE DATABASE 导致隐含提交。

AcidDB 中CREATE TABLE 语句作为一个单事务。这意味着在那个事务中来自用户的 ROLLBACK 不撤销用户执行的 CREATE TABLE 语句。

3事务控制语句

GBase 提供的事务控制语句包括:

事务控制语句,包括:

START TRANSACTION

COMMIT

ROLLBACK

 

设置事务属性语句,包括:

 

SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL

 

SET AUTOCOMMIT


保存点控制语句,包括:SavePoint、Rollback To Savepoi

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论