以下のトランザクション例を参照してください:
create table test (id1 int);
set @@ob_query_timeout=200 * 1000 * 1000;
set @@ob_trx_timeout = 200 * 1000 * 1000;
begin;
insert into test values(1);
//中間で150秒の待機
insert into test values(2); //このSQLはLost connectionというエラーが表示されます
select * from test; //このクエリの結果は空です。これは上記のトランザクションがロールバックされたことを示しています。
rollback;
上記の実行シーケンスでは、2番目のinsertステートメントを実行する際にクライアント側でLost connectionのエラーが発生します。その理由は、トランザクション内の2つのSQL間隔が一定のしきい値を超えると、OceanBaseデータベースが強制的にセッションをキルし、クライアント側との接続を切断すると同時にトランザクションをロールバックするためです。
この仕組みは、長時間トランザクションやハングトランザクションの問題を解決するためのものです。アイドルのしきい値はテナントのシステム変数ob_trx_idle_timeoutで制御され、デフォルト値は86400000000マイクロ秒、すなわち24時間です。