【 使用环境 】测试环境
【 使用版本 】 OB社区版4.3.5
【问题描述】我在尝试体验 ob_trx_idle_timeout 的功能,按照OBCP的V4版教材第150页的描述,
将该参数修改为10秒后,开启事务,在事务中间等等超过10秒,再尝试执行sql时事务会报错,并提示执行rollback。
我做了如下测试,两次select now(); 之间idle等待了40秒,没有任何报错;中间idle了10分钟,也可以继续执行sql不报错,是为什么?
谢谢!
obclient(root@ob_school)[school_db]> set ob_trx_idle_timeout=10 * 1000 * 1000;
Query OK, 0 rows affected (0.014 sec)
obclient(root@ob_school)[school_db]> set ob_trx_timeout=200 * 1000 * 1000;
Query OK, 0 rows affected (0.001 sec)
obclient(root@ob_school)[school_db]> set ob_query_timeout=60 * 1000 * 1000;
Query OK, 0 rows affected (0.001 sec)
obclient(root@ob_school)[school_db]> show variables like ‘ob_trx_idle_timeout’;
±--------------------±---------+
| Variable_name | Value |
±--------------------±---------+
| ob_trx_idle_timeout | 10000000 |
±--------------------±---------+
1 row in set (0.005 sec)
obclient(root@ob_school)[school_db]> SET autocommit=0;
Query OK, 0 rows affected (0.002 sec)
obclient(root@ob_school)[school_db]> begin;
Query OK, 0 rows affected (0.000 sec)
obclient(root@ob_school)[school_db]> update classes set CS_Name=‘obcpv3’ where CS_ID=2;
Query OK, 1 row affected (0.054 sec)
Rows matched: 1 Changed: 1 Warnings: 0
obclient(root@ob_school)[school_db]> select now();
±--------------------+
| now() |
±--------------------+
| 2025-06-14 20:54:05 |
±--------------------+
1 row in set (0.001 sec)
obclient(root@ob_school)[school_db]> select now();
±--------------------+
| now() |
±--------------------+
| 2025-06-14 20:54:44 |
±--------------------+
1 row in set (0.001 sec)
obclient(root@ob_school)[school_db]> select * from classes;
±------±--------+
| CS_ID | CS_Name |
±------±--------+
| 1 | obca |
| 2 | obcpv3 |
| 3 | obce |
±------±--------+
3 rows in set (0.001 sec)
obclient(root@ob_school)[school_db]> select now();
±--------------------+
| now() |
±--------------------+
| 2025-06-14 21:04:37 |
±--------------------+
1 row in set (0.006 sec)
obclient(root@ob_school)[school_db]>