返回首页

gbase数据、南大通用产品文档:GBase8s在修改时锁定

更新日期:2024年09月11日

当数据库服务器通过更新游标访存行时,它在访存的行上放置可提升锁。如果此操作成功,
则数据库服务器知道没有其他程序可改变那一行。由于可提升锁不是排他的,其他程序可
继续读取该行。
由于访存该行的程序可在它发出 UPDATE 或 DELETE 语句之前花费一些
时间,或它仅可访存下一行,因此,可提升锁可提升性能。当到了修改行时,数据库服务
器获取该行上的排他锁。如果已有可提升锁,则它将那个锁更改为排他的状态。
排他的行锁的持续时间依赖于是否在使用事务。如果未使用事务,则将修改了的行一写到
磁盘就释放该锁。当在使用事务时,保留所有这些锁,直到事务结束为止。此操作防止其
他程序使用那些可能回滚到它们的原始状态的行。
当在使用事务时,每当删除行时,就使用键锁。使用键锁防止发生下列错误:

程序 A 删除一行。

程序 B 插入有相同的键的一行。

程序 A 回滚它的事务,强制数据库服务器恢复它的删除了的行。
如何处理由程序 B 插入的行?
通过锁定索引,数据库服务器防止第二个程序插入行,直到第一个程序提交它的事务为止。

当前的隔离级别控制在数据库服务器读取不同的行时放置的锁,
如下一部分中讨论的那样。

取值:[0|1|2|3]
默认值:1
说明:union 算子hash 划分
one pass hash union 的开关,0: no use, 1(default): use, 2: parallel, 3: serial.默认为1。
修改方式:
可使用set 语句修改值也可在配置文件中修改值。
适用于session、
global
范围均可。

 摘要:
释放由gbase_store_result()、gbase_use_result()、gbase_list_dbs()
等为结果集分配的内存。
完成对结果集的操作后,
必须调用gbase_free_result()
释放结果集使用的内存。
释放完成后,不要尝试访问结果集。
 语法:
void
gbase_free_result(GBASE_RES *result);
 参数:
 返回值: