【百天打卡004】开启系统变量tidb_general_log,实时跟踪sql

学而时习之,不亦说乎~

分享一个系统变量,实现类似sqlserver的跟踪语句功能,只要开启,就能实时跟踪数据,再也不需要通过慢查询来跟踪语句了~

tidb_general_log

  • 作用域:GLOBAL
  • 是否持久化到集群:否,仅作用于当前连接的 TiDB 实例
  • 默认值:OFF
  • 这个变量用来设置是否在日志里记录所有的 SQL 语句。该功能默认关闭。如果系统运维人员在定位问题过程中需要追踪所有 SQL 记录,可考虑开启该功能。
  • 在 TiDB 配置项 log.level"info""debug" 时,通过查询 "GENERAL_LOG" 字符串可以定位到该功能在日志中的所有记录。日志会记录以下内容:
    • conn:当前会话对应的 ID
    • user:当前会话用户
    • schemaVersion:当前 schema 版本
    • txnStartTS:当前事务的开始时间戳
    • forUpdateTS:事务模式为悲观事务时,SQL 语句的当前时间戳。悲观事务内发生写冲突时,会重试当前执行语句,该时间戳会被更新。重试次数由 max-retry-count 配置。事务模式为乐观事务时,该条目与 txnStartTS 等价。
    • isReadConsistency:当前事务隔离级别是否是读已提交 (RC)
    • current_db:当前数据库名
    • txn_mode:事务模式。可选值:OPTIMISTIC(乐观事务模式),或 PESSIMISTIC(悲观事务模式)
    • sql:当前查询对应的 SQL 语句
1 个赞

打卡打卡

1 个赞

性能损失大吗

取决于业务量和硬盘读写能力,一般都是短暂开启。

这太赞了

:grin: :grin: :grin:

发的太晚了点~~ 感觉会断签

:rofl: :rofl: :rofl:

应该在10%-15%的样子。其实我感觉还不如断在时间把慢日志设置为0呢,慢日志信息更多一些。tidb_slow_log_threshold=0。
测试慢日志和general_log对系统性能影响差不多,(在mysql中开启general_log性能会急剧下降)。