来源:京华网 网址:http://www.mxy4grjo.cn/a/www.zphxcsjx.com/
近年来,凭借森林覆盖率超85%、昼夜温差大、光照充足、海拔高等自然优势,耀州区加快推进资源型城市转型发展,推出发展新兴产业利好政策,农户深度嵌入菌菇生产环节,规模效益不断显现。湛江东大肛肠医院秉承以人为本、全心服务的宗旨,在湛江百姓心中筑起了一道爱心桥梁。为了让家长更好的全面了解学校办学水平、教师的教学实力,实现家校协同育人,学校邀请了高二年级8名学生家长进校体验当老师,担任“跨界班主任”,积极参与学校的日常管理和教学活动中,亲身感受孩子们在校园里的学习和成长。
对于自拍,它将配备16兆像素摄像头。充满年代与现代感的透明墙壁营造出新中国成立前的上海,多样元素展现了多样化多层次的场景变换。
初步选用“吸塑+线束”方案。“用警心传递党心,用警心温暖民心。
5、公司的原材料采购模式?答:在备货式采购模式下,公司会采购丝巾、围巾、家纺、品牌服装等产品的半成品,并根据实际销售情况对采购进行动态调整。“酒味已醇新过熟,蟹螯先实不须霜。
重点推荐:青阳乔木乡: 小芝麻、大能量,特色小镇产业兴 池州地图 农发行零陵支行自成立以来,始终坚持服务三农、助力乡村振兴,致力于支持地方农业和农村经济发展。关键词:
ocp考试资料群:569933648 验证码:ocp OCP 12c 19c考试题库解析与资料群:钉钉群号:35277291
全部博文(477)
分类: Mysql/postgreSQL
2023-06-16 13:45:10
PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。
第19讲:冻结TXIDS
内容1:PostgreSQL TXID介绍
内容2:PostgreSQL TXID使用原理使用
内容3:冻结TXID来解决TXID环绕问题
内容4:如何冻结TIXD
TXID介绍
· 事务id(txid)
当一个事务开始时,PostgreSQL中的事务管理系统会为该事务分配一个唯一标识符,即事务ID(txid).PostgreSQL中的txid被定义为一个32位的无符号整数,也就是说,它能记录大约42亿个事务。通常txid对我们是透明的,但是我们可以利用PostgreSQL内部的函数来获取当前事务的txid。
testdb=# BEGIN;
BEGIN
testdb=# SELECT txid_current();
txid_current
--------------
100
(1 row)
请注意,BEGIN命令没有指定txid。在PostgreSQL中,当{BANNED}中国第一个命令在BEGIN命令执行之后执行时,事务管理器会分配一个tixd,然后它的事务开始。
TXID使用原理
· TXID结构
TxID=2的32次方=42亿
前21亿个TxID是“过去的”
后21亿个TxID是“未来的”
TXID环绕
· TXID环绕
假设元组tuple_1的txid为100,即tuple_1的t_xmin为100。服务器已经运行很长一段时间了,Tuple_1没有被修改。当前的txid是21亿+100,执行SELECT命令。此时,Tuple_1可见,因为txid 100是过去的。接着,又执行相同的SELECT命令,此时当前的txid就变成是21亿+101了,根据行可见性规则判断Tuple_1就不再可见,因为txid 100变成是未来的了。
冻结TXID
· 解决TXID环绕问题的方法—冻结TXID
解决事务环绕问题的方法是冻结,其做法是把21亿以前事务所修改的行做一个标记位(即冻结),根据行可见性规则,凡是被标识位冻结行在判断的时候就不依赖t_xmin了,让行数据变成可见。
若TXID使用过一轮以后,被冻结的行如果被新事务修改,则原来的标记位就会消除(即解冻),此时此行是否可见,就要根据行可见性规则进行判断。
冻结处理
· 冻结处理有两种模式
lazy mode (惰性模式)
eager mode (急切模式)
· Lazy Mode
冻结极限txid定义如下:
freezeLimit_txid=(OldestXmin-vacuum_freeze_min_age)
AutoVacuum操作会进行冻结操作,每分钟都会执行一次,被选中的表都会进行vacuum操作,包含冻结txid内容。
· Eager Mode
当满足以下条件时,执行紧急模式:
pg_database.datfrozenxid<(OldestXmin-vacuum_freeze_table_age)
· pg_database.datfrozenxid 和pg_class.relfrozenxid(s)之间的冻结对比
· 如何显示被冻结的对象信息
testdb=# VACUUM table_1;
VACUUM
testdb=# SELECT n.nspname as "Schema", c.relname as "Name", c.relfrozenxid
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
AND n.nspname <> 'information_schema' AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY c.relfrozenxid::text::bigint DESC;
Schema | Name | relfrozenxid
------------+-------------------------+--------------
public | table_1 | 100002000
public | table_2 | 1846
pg_catalog | pg_database | 1827
pg_catalog | pg_user_mapping | 1821
pg_catalog | pg_largeobject | 1821
· 显示被冻结的数据库信息
testdb=# SELECT datname, datfrozenxid FROM pg_database WHERE datname = 'testdb';
datname | datfrozenxid
---------+--------------
testdb | 1821
(1 row)
· 使用VM提高冻结效率
以上就是Part 19 - 冻结TXIDS 的内容,欢迎一起探讨交流,往期视频,联系cuug