人大金仓数据库KingbaseES prepared transactions相关总结

本文详细介绍了KingbaseES中preparedtransactions的概念、使用、视图pg_prepared_xacts以及其在事务管理和异常场景中的作用,特别关注了孤儿preparedtransactions的产生和处理方法。
摘要由CSDN通过智能技术生成

关键字:

KingbaseES、prepared transactions、人大金仓、KingbaseES

一、事务简介

在数据库系统中,事务是一组操作序列,包含了至少一条对数据库的操作。在提交整个块之前,该块中语句的结果对其他事务不可见。为了将事务与其他的数据库语句区分开来,通常事务以BEGIN开始,以COMMIT或ROLLBACK结束。如果事务失败或回滚,则对数据库完全没有影响。

二、prepared transactions

2.1 prepared transactions简介及相关参数

事务依附于会话的,但是prepared transaction是一种独立于会话的事务。prepared transaction为两阶段提交准备了一个事务,当开启prepared transaction之后,该事务不再与当前会话关联,事务的状态存储在磁盘上,这使得数据库服务器即使在从崩溃中重新启动后也可以恢复事务。在对prepared transaction执行回滚或提交操作之前,将一直维护该事务。

在KES的kingbase.conf文件中,默认max_prepared_transaction=0,即默认不启用prepared transaction。如果需要启用prepared transaction,建议将max_prepared_transaction设置成max_connections的值。在同步的流复制standby库上,最好将其设置的比max_connections大一点,以免standby不能接收查询。参数设置完毕后,需要重启数据库才可生效。

2.2 pg_prepared_xacts视图及参数解释

通过查看视图pg_prepared_xacts,可以查看活跃状态的prepared transactions。

select * from pg_prepared_xacts;

注意事项:

 1.transaction:事务id

2.gid:用户为prepared transaction定义的名称

3.prepared:prepared日期,创建事务时带有时区的时间戳

4.owner:创建该prepared transaction的事务

5.database:数据库名

2.3创建prepared transaction

知道什么是prepared transaction之后,现在来看看如何创建一个prepared transaction。创建一个该事务通常需要四个步骤:

1.begin(或start transaction)

2.执行需要的操作

3. prepare transaction ‘transaction_id’

4.commit prepared (或rollback prepared)

prepare transaction、commit prepared、或rollback prepared后面加上一个gid,可以唯一标识prepared transaction。

2.4 commit prepared

2.5 rollback prepared

2.6异常场景

三、孤儿prepared transactions

当含有prepared transactions的KES关闭或者中断时,会为每个prepared transaction创建一个文件,保存在data目录下的sys_twophase中。

比如有个prepared transaction,没有提交事务就停止了server。KES就会在sys_twophase下创建一个文件,名字对应的是被中断的prepared transaction事务id。

在KES被重启后,在启动日志会报如下信息:

如果不希望恢复该prepared transaction,删除sys_twophase目录下的相应文件即可。此时该prepared transaction没有完成,这种没有完成的prepared transaction就被叫做孤儿prepared transaction,继续持有可能包含锁的关键系统资源,或者使事务ID保持活动状态。

当事务A处于prepared状态,并且在提交事务A之前,如果另一个事务B试图更改事务A所占用的表,事务B将无法获取所需的锁并挂起,直到解决了prepared事务A为止,否则事务B会无限期挂起。但是由于事务A使一个孤儿prepared transaction,因此事务B最终必须发出CTRL + C来停止。

该孤儿prepared transaction事务A可能会阻止vacuum清除只对该事务可见、对其它事务不可见的死元组。在极端情况下,会导致数据库关闭,因为孤儿prepared transaction会阻止事务id的wrap around。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以通过以下步骤下载人大金仓数据库KingbaseES)的Windows安装程序: 1. 访问人大金仓官方网站或者相关下载网站。 2. 在网站上找到人大金仓数据库的下载页面。 3. 在下载页面上找到Windows版本的安装程序,并点击下载。 4. 下载完成后,双击安装程序进行安装。 请注意,具体的下载步骤可能因为网站的不同而有所差异。建议您在下载前先确认您所使用的网站的可信度,并确保下载的是官方或可信的安装程序。 引用\[1\]: 人大金仓数据库管理系统KingbaseES 是北京人大金仓信息技术股份有限公司自主研制开发的具有自主知识产权的通用关系型数据库管理系统。金仓数据库主要面向事务处理类应用,兼顾各类数据分析类应用,可用做管理信息系统、业务及生产系统、决策支持系统、多维数据分析、全文检索、地理信息系统、图片搜索等的承载数据库。\[1\] 引用\[2\]: 金仓数据库管理系统\[简称:KingbaseES\]是北京人大金仓信息技术股份有限公司(简称人大金仓)自主研发的、具有自主知识产权的商用关系型数据库管理系统(DBMS)。该产品面向事务处理类应用,兼顾各类数据分析类应用,可用做信息管理系统、业务及生产系统、决策支持系统、全文检索、地理信息系统等的承载数据库。\[2\] 引用\[3\]: 文章目录 1、KingbaseES是什么数据库2、KingbaseES数据库产品优势3、KingbaseES安装包下载地址4、KingbaseES数据库安装1、windows安装KingbaseES1、图形化界面安装2、命令行安装3、静默安装 2、Linux安装KingbaseES1、图形化安装2、命令行安装3、静默安装\[3\] #### 引用[.reference_title] - *1* [人大金仓数据库 Windows安装教程 -kingbase8R6](https://blog.csdn.net/qq_25094817/article/details/122807581)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [猿创征文 | 国产数据库人大金仓数据库详解安装和使用](https://blog.csdn.net/flq18210105507/article/details/127276704)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值