Discuz! 论坛使用云数据库可能遭遇随机的“The table XXX is full”异常

一个Discuz! 论坛在腾讯云已经良好工作了很久,不久前突然随机出现以下错误:

从字面意思上看,就是数据表“common_visit”满了写不进去,最可能的就是磁盘满了。不过这个论坛使用的是云数据库CDB,所以也可能是云数据库的容量用完了。登陆上去查一下使用情况:

10G的空间还只用了2.6G,远远没有满呢,那是出了什么问题呢?

其实 Discuz! 论坛多年前设计的时候,把一些临时性的需要频繁读写的数据表设计为了内存表,这样避免在读写这些表的时候会产生磁盘 io 操作,从而提高了系统的性能。这在那个软硬件性能相比今天非常弱的时代无疑是一个巨大的优化。

但是这样需要确保数据库有足够多的内存来创建内存表。其实在现在的云数据库 CDB 中, io 性能瓶颈已经被极大的打开了,内存表起到的优化作用很有限,相反很容易带来内存不足导致的 table is full 问题。

比较容易的解决方案是把满掉的内存表清空,但是这样会带来一些非核心数据的损失,而且治标不治本,智能临时性的缓解问题:

truncate table common_visit;

更好的选择是把内存表变成innoDB表:

alter table common_visit engine=innoDB;

变更后问题迎刃而解。这样只要放弃一点点看不到影响的性能,就可以比较长久的化解这个问题。

如果有时间可以顺手把其他内存表也都变为innoDB,避免在其他表上再次发生类似的悲剧。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏斑斓

选择缓解风险的技术

三. 选择缓解风险的技术 一旦识别出迁移过程中可能存在的风险,我们就可以有的放矢地选择相关技术,制订降低风险的解决方案。 寻找丢失的知识 只有体验过去,才能谋...

3409
来自专栏资深Tester

软件测试人员如何编写测试计划

1946
来自专栏企鹅号快讯

代码学习与实践:开篇-测试深入了解代码的好处及实践

1 缘起 最近在负责测试的项目,相对来说比较复杂。从业务上来看,涉及商品添加、审核、交易、支付、退款、换号、管理等多个流程,从代码逻辑上来看,划分了9个模块,还...

1808
来自专栏腾讯移动品质中心TMQ的专栏

腾讯TMQ在线沙龙|Code Review也有潜规则

Code Review也有潜规则 活动时间:2017年3月30日 QQ群视频交流 活动介绍:TMQ在线沙龙第十八期分享 本次分享的主题是:Code Review...

2237
来自专栏一个会写诗的程序员的博客

测试思考拾叶集测试万能公式自动化测试自动化测试分层自动化测试框架工具平台数据准备服务Bug

须理清“SUT的功能”,“SUT的所有输入”,“每一个输入的取值范围”,“SUT的所有输出”,“根据功能推出每一个输出的预期值”。

734

有效的云安全警报

警报系统是任何安全程序的首要组成部分。当一些问题出现的时候,警报通常都是最快和最有效的提醒方式,让你能够及时地采取补救措施。但是警报有的时候过于“吵闹”:有时它...

1808
来自专栏CSDN技术头条

【问底】徐汉彬:大规模网站架构的缓存机制和几何分形学

【导读】徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设。 在过去的工...

18910
来自专栏腾讯移动品质中心TMQ的专栏

腾讯TMQ在线沙龙回顾|性能测试

性能测试 活动时间:2017年8月29日 QQ群视频交流 活动介绍:TMQ在线沙龙第二十八期分享 本次分享的主题是:性能测试 共有152位测试小伙伴参加活动,在...

2118
来自专栏牛客网

运维工程师养成实录:从确立目标到收获offer

作为一名渣硕,找工作陆陆续续从今年的三月份开始断断续续的刷一些题,看基础到八月份的猛攻阶段,到此,算是得到了一个不错的收获,也拿到了几个offer,算是对自己的...

49412
来自专栏软件测试经验与教训

张老师聊面试

1、现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?

563

扫码关注云+社区