hubble支持将多个SQL语句在单个事务中提交。每个事务都能保证在集群中跨多表的ACID特性。当一个事务成功,则所有都确保其成功。如果事务的任何部分失败,整个事务将中止,数据库将保持不变。hubble保证当一个事务处于挂起状态时,它通过可serializable isolation
事务级别,将其与其他他并发事务中隔离出来
hubble使用最高等级的事务隔离级别,即SERIALIZABLE
。其他ANSI事务隔离级别,如SNAPSHOT,READ UNCOMMITTED,READ COMMITED
,和REPEATABLE READ
将自动升级为SERIALIZABLE
。
SERIALIZABLE
事务隔离级别,能确保执行期间,不受其他任何任务的影响。这意味着hubble提供最强大的隔离级别。
一个事务可以用BEGIN
和COMMIT
语句包裹。用户可以在一个事务中,对若干操作进行事务控制。其使用方式如下:
BEGIN;
<transction statements>
COMMIT;
只要在未提交前,使用ROLLBACK语句即可中止事务。
hubble 事务支持的操作如下:
INSERT
、UPDATE
、DELETE
。QUERY
。hubble的其它操作(如:创建表、创建索引等其它非 CRUD 操作)不在事务功能的考虑范围。
在hubble中,每个事务都有默认优先级,默认为NORMAL,但是对于在高竞争情况下应该给予优先级的事务,客户端可以在BEGIN
语句中设置优先级:
begin priority <low | normal | high>;
客户端可以查看当前事务的优先级
show transaction priority;