数据库管理202期 2024-06-13
数据库管理-第202期 优先级事务-02(20240613)
作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database(Oracle与MySQL)
PostgreSQL ACE Partner
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、认证技术专家、年度墨力之星,ITPUB认证专家、专家百人团成员,OCM讲师,PolarDB开源社区技术顾问,HaloDB外聘技术顾问、OceanBase观察团成员,青学会(青年数据库学习互助会)外部顾问
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭
上一期主要讲解了优先级事务的基本概念,本期继续深入。
1 监控
数据库提供了对应的视图来帮助监控事务优先级和等待目标等信息。
V$TRANSACTION中有两列可用于帮助监视事务。TXN_PRIORITY显示事务优先级,PRIORITY_TXNS_WAIT_TARGET显示以秒为单位指定的事务的等待目标。
告警日志中也在事务被终止时记录告警信息,例如:
Transaction (sid: 203, serial: 39661, xid: 7.23.1161, txn_priority: "LOW") terminated by transaction (sid: 204, serial: 9266, xid: 13.15.3, txn_priority: "HIGH") because of the parameter "priority_txns_high_wait_target = 10"
无法在调度作业中设置TXN_PRIORITY。如果在调度作业中设置,则会引发错误ORA-63303并记录在告警日志中。
2 ROLLBACK模式下增加的统计信息
当优先级事务处于ROLLBACK模式时,优先级事务的特定的统计信息会增加。
以下统计信息仅在ROLLBACK模式下增加。由于优先级较高的阻塞事务,每次回滚事务时,这些统计信息都会增加。
SQL> select name
from V$SYSSTAT
where name like '%txns rollback%';
NAME
---------------------------------------------------------------
txns rollback priority_txns_high_wait_target
txns rollback priority_txns_medium_wait_target
例如,如果由于高优先级事务而回滚了中优先级或低优先级事务,则txns rollback priority_txns_high_wait_target将增加。
3 TRACK模式下增加的统计信息
当优先级事务处于TRACK模式时,优先级事务的特定的统计信息会增加。
以下统计信息仅在TRACK模式下增加。每当事务由于优先级更高的阻塞事务而回滚时,这些统计信息都会增加。
SQL> select name
from V$SYSSTAT
where name like '%txns track mode%';
NAME
----------------------------------------------------------------
txns track mode priority_txns_high_wait_target
txns track mode priority_txns_medium_wait_target
例如,如果中或低优先级事务由于高优先级事务而回滚,则txns track mode priority_txns_high_wait_target将增加。
4 优先级事务行为
4.1 分布式事务的优先级事务行为
Participant Priority(参与者优先级)
对于分布式事务,协调器分支的优先级由所有参与者(远程分支)继承。也就是说,如果分布式事务txn1在db1上启动,并且在db2上有一个参与者txn2,那么txn2将继承txn1的TXN_PRIORITY参数值。
确认行为
分布式事务与本地事务相同的方式进行确认自动回滚。但是,分布式事务确认自动回滚行为与本地事务在以下方面有所不同:
- 当分布式事务的远程分支自动回滚时,协调器会话将正常继续,直到从协调器向自动回滚的远程分支发出SQL语句为止。此时,协调器将抛出ORA-63300和ORA-63302,直到接收到回滚确认。
- 当分布式事务的协调器或本地分支自动回滚时,协调器会话中的任何新SQL语句都将立即抛出ORA-63300和ORA-63302。此行为与本地事务相同。
4.2 XA事务的优先级事务行为
一旦XA事务被自动回滚,那么XA客户端将收到任何后续XA语句的XAER_RMFAIL错误,直到收到回滚确认为止。客户端需要处理XAER_RMFAIL,然后执行XA_END和XA_ROLLBACK语句。
如果由于设置了TMSUSPEND标志的XA_END,XA事务已经处于挂起状态,则确认只需要执行XA_ROLLBACK语句。
总结
本期深入讲解了优先级事务的监控、统计信息以及不同事务模式下的行为方式。下一期收个尾,实战演示。
老规矩,知道写了些啥。