读性能慢-TiDB Server 读流程详解

2.Parser 模块

Parser 主要是检查关键字的正确语法和拼写,并将文本解析为 AST(抽象语法树)

监控说明:

  • 位置:TiDB – Executor – Parse Duration 面板
    正常情况下,“Parse Duration” 小于 10ms

Parser 相关问题处理:

  • 报错原理解读

    • MySQL client 报错内容:“ERROR 1064 (42000): You hava an error in your SQL syntax;…”
      • 说明:如果有这个报错,可以明确确认是 Parser 报错
        语法报错 log 日志内容:“parser error” and with stack “(Parser).Parse”
  • Parser 报错判断

    • 查看错误消息或日志,是否有报错码 1064 等。
    • 在 MySQL 中是否可以执行: MySQL 5.7 语法 MySQL 8.0 部分语法
    • 判断 TiDB 是否支持,可以看 parser 文件,来确认 TiDB 已经支持的语法
    • 检查 MySQL 的定义
      • 当发现语法是 TiDB 支持,如果有报错,可以判断为非预期,需要修复
      • 当发现语法是 TiDB 不支持,但是 MySQL 支持,可以向我们提需求做兼容
  • Parser 性能优化

    • 使用 prepare 语句遍历解析器阶段
    • 简化SQL语句 (如,太多的’ ifnull() '表达式)
5 个赞