前面提到TiDB支持乐观事务与悲观事务,接下来就实际透过例子来了解在这两种事务下,TiDB分别会做什麽操作。
首先在乐观事务的情境下,如下图所示,开启了两个transaction,而两边的transaction在下完更新语法之後,右边的transaction先执行commit。接着左边要执行commit的时候,会看到错误讯息write conflict。这是因为在乐观事务下,冲突会在执行commit的时候才做检查。
接着在悲观事务的情境下,一样开启了两个transaction,先在右边下了更新的语法,执行成功。接着在左边也下了更新的语法,会发现因为这笔资料被上锁了,所以左边的transaction在等待右边做commit的动作
接下来在右边下commit指令,这时候可以看到左边的transaction也执行成功,执行时间22.38秒的时间就是因为在等待右边的transaction释放锁。
所以在乐观事务下,高并发会产生冲突错误的情况也会越频繁,这时候可以视使用情境决定是否开放自动retry,以及设定retry的次数。
SET global tidb_disable_txn_auto_retry = OFF;
SET global tidb_retry_limit = 10;
Odoo提供建立report的功能,透过wkhtmltopdf来输出pdf,我们来写一个简单的范例,...
前言 这是 Obsidian 使用教学 — 基础篇的第 4 篇文章。 上一篇文章 我详细介绍了「Th...
在命令的执行过程中,我们可能需要需要一些方式,使我们命令的输出更加友好;去除一些没有用的信息,只显示...
当我们在写函式库或框架的时候,通常表示这段逻辑很常用到,希望藉由抽取成函式库或框架来重复使用,减少重...
基本for回圈 基本格式如下: for 变数 in sequences: 要执行的程序码 for回...