环境

系统平台:UOS(鲲鹏)
版本:4.5.6

症状

某系统运行时,使用数据库临时表的功能存在卡顿的情况,同时数据库日志中记录的慢SQL有大量commit相关日志。

问题原因

1、创建临时表语句语法为:CREATE TEMPORARY | TEMP TABLE table_name (…) ON COMMIT DELETE ROWS。

2、ON COMMIT DELETE ROWS这种创建临时表的语法,在事务提交后删除数据,但保留临时表;随着临时表文件增多,文件系统inode数量变多,操作系统寻找文件时间变长,truncate时间变长,进而导致commit时间变长。

解决方案

创建临时表语句ON COMMIT DELETE ROWS(事务提交后删除数据,但保留临时表)改为ON COMMIT DROP(事务提交后删除临时表),解决临时表堆积。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐