写冲突警告的的tidblog日志INFO和WARN输出的有什么区别

下面这两个告警都是写冲突,那到底是WARN的写冲突是有问题还是INFO输出的写冲突有问题。
这两个有什么区别,我能只看WRAN的输出警告信息来判断写冲突吗
[2024/01/14 10:41:30.101 +08:00] [WARN] [session.go:478] [sql] [conn=43194839] [label=general] [error=“[kv:9007]Write conflict, txnStartTS=447007972396367920, conflictStartTS=447007972396367928, conflictCommitTS=447007972409475102, key={tableID=579, handle=15951961} primary={tableID=579, handle=15951961} [try again later]”] [txn=“Txn{state=invalid}”]

[2024/01/14 11:51:01.957 +08:00] [INFO] [adapter.go:621] [“pessimistic write conflict, retry statement”] [conn=43196921] [txn=447009066034921567] [forUpdateTS=447009066034921567] [err=“[kv:9007]Write conflict, txnStartTS=447009066034921567, conflictStartTS=447009066034921535, conflictCommitTS=447009066034921574, key={tableID=533, handle=17334464} primary={tableID=533, handle=17334464} [try again later]”]

不同代码位置抛出来的,你看看是不是每次都俩都有啊

INFO级别日志就直接忽略吧

这里面有优先级的,参考下
log-level 日志级别:debug、info、warn、error、fatal。默认为 info。

如果是 info 和 warn 都出现了,说明两个出现了冲突,都要关注

warn 的更严重…

1 个赞

你说的info和warn都出现同一个表比如id110的写冲突,,你意思是说 info的输出和warn的输出的值这两个互相冲突了还是说这两个info、warn都输出了table_id=110的信息。是这正冲突了。要去关注?

而且冲突都是主键冲突,这个表全部都是insert的操作,这个表全部都是isnert和select没有update和delete的。

一个是session.go报的,一个是adapter.go报的,应该是写入过程不同进度的时候报的。

1 个赞

两个提示的table_id都不是同一个。

tidb 是基于zap封装的日志,日志级别可以自己配置,warn 比info 更严重一点,两者都显示写冲突问题,此处info 表示首次执行发生冲突,warn表示重试多次后仍然冲突。

1 个赞

恩info和warn报的不是同一个表。info的可以暂时不处理

我看了代码,两个告警确实除了位置以外,没有太多区别。
而且到了5.0版本。在adapter.go这个文件中的报错级别就被调到debug了。
你的版本还是太老了。4.0.16我看了还是info。应该不会在4.0.X版本内调整了。
不想看到还是需要升级。

https://github.com/pingcap/tidb/blob/v5.0.6/session/session.go#L539

https://github.com/pingcap/tidb/blob/v5.0.6/executor/adapter.go#L653

2 个赞

对,版本太老了,2.0版本升级到4.0.2的。公司研发部全部都是1年内的新团队。领导也不想大动干戈,最起码要稳定个一两年以上才能考虑升级的问题。怕出问题

正常的,换我也怕。 :joy:
反正这个问题不大,还能用。

我看你这个info应该是写冲突后还没开始重试,warn应该是重试之后还是冲突,不过写冲突也不避免不了,不影响业务就行。

不同的位置抛出来的,日志级别不一样

估计是每个程序员的风格不一致造成的。。

用老版本不如不用,求稳换回MySQL最稳,就说是社区资深用户说的。

现在包括老板没人敢去升级呀。数据库都是15年16年那个时候被人搞得。只能说等1年多了在考虑升级