解决Cloud SQL中show engine innodb status查询截断问题
解决Google Cloud SQL中InnoDB死锁日志SQL截断的方案
针对你在Google Cloud SQL上使用show engine innodb status排查死锁时,SQL语句被截断至903字符的问题,可通过以下几种方式获取完整查询:
启用查询日志捕获完整SQL
在Cloud SQL的实例参数组中开启慢查询日志(或通用查询日志):- 开启
slow_query_log=ON,若要捕获所有查询,设置long_query_time=0 - 配置完成后,通过Google Cloud Logging查看日志,根据死锁信息中的
query id(如示例中的100492071)匹配对应的完整SQL语句
- 开启
利用Performance Schema查询完整语句
若Cloud SQL支持Performance Schema(需先在参数组中开启performance_schema=ON),可通过线程ID或查询ID获取完整SQL:SELECT SQL_TEXT FROM performance_schema.events_statements_history WHERE THREAD_ID = 1025545 ORDER BY EVENT_ID DESC LIMIT 1;其中
THREAD_ID为死锁日志中给出的MySQL线程ID(如示例中的1025545)调整InnoDB状态输出长度参数
检查Cloud SQL实例的innodb_status_output_length参数,该参数控制InnoDB状态报告的最大输出长度。若当前值较小,可在参数组中调大该值(如设置为8192),重启实例后生效从Hibernate应用层日志获取
在Hibernate配置中开启SQL日志记录:- 设置
hibernate.show_sql=true,或通过日志框架(如SLF4J)配置org.hibernate.SQL为DEBUG级别
这样应用日志会输出Hibernate生成的完整SQL语句,对应死锁中的更新操作
- 设置
内容的提问来源于stack exchange,提问作者Burton
相关产品推荐
相关产品推荐

