8.0.24下internal_tmp_mem_storage_engine设置temptable导致的coredump问题

近日某客户现场中台业务发生主备切换,主机coredump,收集相关日志coredump分析后,初步确认为临时表引擎设置为temptable,在多表连表查询时触发的内存指针BUG,宕机时堆栈信息如下:

gdb分析得到宕机时对应的SQL信息

gdb
(gdb)f 10
(gdb)printf "%s\n", thd->m_query_string.str

得到具体SQL,确认为该SQL导致的问题

具体结论:在进行聚合查询时产生临时表时,使用的internal_tmp_mem_storage_engine 是temptable时,当达到临时表内存分配上限,会将临时表移至磁盘,此时内存中的数据指针已经失效。但类似blob、varchar的大记录,仍然有可能使用到老的失效指针去进行访问,导致异常CRASH。 

解决方案:

调整internal_tmp_mem_storage_engine参数值为memory,后未再出现!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值