返回首页

gbase数据、南大通用产品文档:GBase8s处理外部的死锁

更新日期:2024年09月11日

在不同数据库服务器上的程序之间也可发生死锁。在此情况下,数据库服务器不可立即检
测到死锁。(完善的死锁检测需要在网络中的所有数据库服务器之间大量的通信。)而是
每一数据库服务器对于程序可等待的时间量设置一个上限,来在不同的数据库服务器上获
得对数据的锁。如果到时间了,则数据库服务器假定发生死锁并返回一个与锁相关的错误
代码。

也就是说,当涉及外部的数据库时,每个程序都运行最大锁等待时间。DBA 可为数据库服
务器设置或修改该最大值。

大多数 SQL 语句生成多个逻辑日志记录。当数据库服务器在逻辑日志中记录以下事件时,
解释逻辑日志记录就更为复杂:
l 删除表或索引的事务
l 回滚事务
l 在其中事务任活动的检查点
l 分布式事务
以下各节讨论这些事务的逻辑日志记录。
删除表或索引的事务
一旦数据库服务器从数据库中删除了表或索引,它无法回滚该删除操作。如果事务包含
DROP TABLE 或 DROP INDEX 语句,那么数据库服务器如下处理该事务:
1. 数据库服务器完成事务的所有其他部分,并写下相关的逻辑日志记录。
2. 数据库服务器将 BEGCOM 记录写入逻辑日志和与 DROP TABLE 或 DROP INDEX 相关
联的记录(例如:DINDEX )。
3. 数据库服务器写入 COMMIT 记录。
如果事务在数据库服务器将 BEGCOM 记录写入逻辑日志之后意外终止,那么数据库服务器
在恢复过程中前滚该事务,因为它无法回滚删除操作。
回滚的事务
当发生回滚时,数据库服务器为回滚的逻辑日志中的每个记录生成补偿日志记录(CLR)。
如果在回滚过程中发生系统故障,那么数据库服务器使用 CLR 。CLR 向数据库服务器提供
有关在故障发生前回滚进度的信息。换句话说,数据库服务器使用 CLR 来记录回滚。
如果 CLR 包含短语 includes next record ,那么打印的下一条日志记录作为补偿操作包
含在 CLR 日志记录中。否则,必须假定补偿操作是 CLR 的 link 字段所指向的日志记录
的逻辑撤销。
带有活动事务的检查点
如果任何事务在检查点时是活动的,那么检查点记录包含使用以下各列描述每个活动事务
的子条目:

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 276 -

l 日志开始(十进制格式)
l 事务 ID(十进制格式)
l 唯一日志号(十进制格式)
l 日志位置(十六进制格式)
l 用户名
分布式事务
当分布式事务(跨多个数据库服务器的事务)生成日志记录,它们与非分布式事务稍有不
同。如果事务提交时发生故障,那么可能需要阅读并解释它们,以确定这两个数据库服务
器上事务的状态。
分布式事务中涉及以下日志记录:
l BEGPREP
l ENDTRANS
l HEURTX
l PREPARE
l TABLOCKS
有关这种类型的逻辑日志记录的更多信息,请参阅 GBase
8s 管理员指南 中有关两阶段落
实和逻辑日志记录的资料。
如果正在使用 TP/XA 执行分布式事务,那么数据库服务器使用 XAPREPARE 记录而不是
PREPARE 记录。

当启用 UPDATE STATISTICS 操作的自动模式时,如果分布统计有资格更新,则使用
STATCHANGE 配置参数来指定数据库用来确定更改阈值的全局百分率的一个正整数。
onconfig.std 值
STATCHANGE 10

0 - 100
单位
更改阈值的百分率
生效
编辑 onconfig 文件并重启数据库服务器之后。
当您通过运行 onmode -wf 命令在 onconfig 文件中动态地重置该值时。
当您通过运行 onmode -wm 命令重置内存中的该值时。
用法
当 AUTO_STAT_MODE 配置参数、AUTO_STAT_MODE 会话环境变量或 UPDATE STATISTICS 语
句的 AUTO 关键词启用 UPDATE STATISTICS 操作的自动模式时,数据库服务器使用
STATCHANGE 配置参数的值。
当启用 UPDATE STATISTICS 操作的自动模式时,STATCHANGE 设置为数据库服务器指定一
个更改阈值,用来确定分布统计是否有资格更新。当启用这个模式时,UPDATE
STATISTICS
语句比较该 STATCHANGE 设置与自动计算当前数据分布以来每一表或分片更改行的百分
率,并有选择地仅更新在 UPDATE
STATISTICS 语句范围内每一表或分片丢失的或陈旧的分
布统计。