系统变量tidb_stmt_summary_max_sql_lengt和配置参数stmt-summary.max-sql-length 从官方文档来看,都是与information_Schema.STATEMENTS_SUMMARY 中的sql显示的长度有关,但是这两个参数的真正作用到底是什么呢?
系统变量tidb_stmt_summary_max_sql_length 官方文档说明
配置参数stmt-summary.max-sql-length 官方文档说明
首先可以看到系统变量tidb_stmt_summary_max_sql_length并不是根据配置参数stmt-summary.max-sql-length的值设置的
实验1:
系统变量tidb_stmt_summary_max_sql_length 的值为10
配置参数stmt-summary.max-sql-length的值 为20480
执行下列sql 语句
select sbtest2.k,sbtest3.k,sbtest2.id,sbtest1.k,sbtest1.id,sbtest3.id from sbtest1 join sbtest2 on sbtest1.id=sbtest2.id join sbtest3 on sbtest2.id=sbtest3.id
发现statement summary tables 中 DIGEST_TEXT 的输出和QUERY_SAMPLE_TEXT 的输出都被截断了
实验2:
系统变量tidb_stmt_summary_max_sql_length 的值为20480
配置参数stmt-summary.max-sql-length的值 为10
执行下列sql 语句
select sbtest2.k,sbtest3.k,sbtest2.id,sbtest1.k,sbtest1.id,sbtest3.id from sbtest1 join sbtest2 on sbtest1.id=sbtest2.id join sbtest3 on sbtest2.id=sbtest3.id;
发现statement summary tables 中 DIGEST_TEXT 的输出和QUERY_SAMPLE_TEXT 的输出没有被截断
对这两个参数或者系统变量的作用范围还是有点懵逼
通过上述两个实验,不知道下面的猜想对不对
1 按照官方文档的描述,配置参数stmt-summary.max-sql-length 控制系统表 statement summary tables 中 DIGEST_TEXT 和 QUERY_SAMPLE_TEXT 列的最大显示长度,但从实验1来看,即使配置参数stmt-summary.max-sql-length 将参数设置为20480,但是并没有控制系统表 statement summary tables 中 DIGEST_TEXT 和 QUERY_SAMPLE_TEXT 列的最大显示长度
2 从实验2来看,当配置参数stmt-summary.max-sql-length低于系统变量tidb_stmt_summary_max_sql_length的时候,statement summary tables 中的SQL 字符串能够显示完整长度(包括DIGEST_TEXT 和QUERY_SAMPLE_TEXT )
从这2个实验来看,有个猜想不知道对不对,系统表 statement summary tables 中 DIGEST_TEXT 和 QUERY_SAMPLE_TEXT 列的最大显示长度 实际是由系统变量tidb_stmt_summary_max_sql_length来控制的?