数据库管理-第224期 23ai:优先级事务-03(20240729)
作者:胖头鱼的鱼缸(尹海文)
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观察团成员,青学会MOP技术社区(青年数据库学习互助会)技术顾问
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭
因为之前的23c内测版没有优先级事务这一功能和23ai Free版本因为版本限制无法修改相关参数,耽搁了一段时间。但是上周末23.5 for Engineered Systems已经放出,可以通过一些方法安装数据库,因此这期开始继续实战优先级事务。
1 准备测试数据
create user test identified by test;
grant connect,resource to test;
alter user test default tablespace users quota unlimited on users;
conn test/test@127.0.0.1:1521/pdbprod1
create table test (id number primary key,name varchar2(20));
insert into test values (1,'yhw');
insert into test values (2,'sky');
insert into test values (3,'23ai');
commit;
2 设置参数
ALTER SYSTEM SET "priority_txns_mode"="ROLLBACK";
ALTER SYSTEM SET priority_txns_high_wait_target = 10;
ALTER SYSTEM SET priority_txns_medium_wait_target = 10;
3 实战测试
案例1
session 1:
ALTER SESSION SET "txn_priority" = "LOW";
update test set name='23c' where id=3;
session 2:
ALTER SESSION SET "txn_priority" = "MEDIUM";
set timing on
update test set name='23c-old' where id=3;
这里可以看到session 2等待约10s后执行成功,session 1仍可提交,但session 2提交后,session 1读取内容虽session 2提交内容变化。
案例2
重置环境:
update test set name='23ai' where id=3;
commit;
session 1:
ALTER SESSION SET "txn_priority" = "LOW";
update test set name='23c' where id=3;
session 2:
ALTER SESSION SET "txn_priority" = "MEDIUM";
set timing on
update test set name='23c-old' where id=3;
session 3:
ALTER SESSION SET "txn_priority" = "HIGH";
set timing on
update test set name='23ai-new' where id=3;
在这里看到拥有HIGH优先级的session 3等待了约10s就提交。session 2一直卡主,只能人工终止执行。session 1尝试commit时抛出与优先级事务相关的报错,再次DML操作时提示需要先rollback。
总结
本期对优先级事务进行了实操测试,演示并验证了相关特性。
老规矩,知道写了些啥。