tiDB的sqlParse适不适用于大量并发请求中解析语句生成语法树

sql字符串到AST一般有两个过程。
词法解析(将sql语句中每一个元素解析成不同类别的token,可能是关键字,用户变量,操作符),
语法解析(匹配sql句式,将前一阶段解析出的token方法对应句式中的各个位置)

这两个过程英文叫法 lex & yacc。

tidb 的 parser 由go语言编写。语法解析用的goYacc,词法没有成熟的go实现。所以自己实现,主要代码在parser项目的lexer.go文件中。

对于并发的支持,我在parser源码中没看到关于协程的操作。并发是由TiDB控制的,parser只是单纯的做sql解析罢。

单独使用作为其他项目的sql解析器没试过,可以试试。

2 个赞