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 条评论
登录 后参与评论

相关文章

来自专栏沈唁志

什么是网页快照?快照问题汇总!

1804
来自专栏SEO

「改版」网站改版SEO清单:不要丢失流量

2986
来自专栏WeaponZhi

一些帮助你提升效(bi)率(ge)的干货!

关注我的你,真特别! ? 你的收藏夹需要精心维护 我们程序员,往往需要通过浏览器查阅大量的资料,当然,查阅完之后,顺手点个星星收藏一下,以便下次继续观看,或者先...

3267
来自专栏云计算

用于增强数据治理能力与法规遵从性的容器

审计人员是如何评估当前分散存储基础设施的企业数据的使用情况的?简而言之,这其中困难重重!

1928
来自专栏北京马哥教育

Arch Linux的正确使用方法

谈起我的 Linux 学习之路,时间其实并不长。但是我却花了相对很少的时间,已经能达到把 Linux 当作自己的桌面系统的程度了。 Ubuntu 的体验令我有点...

4287
来自专栏玉树芝兰

如何把思维导图秒变成幻灯?

(由于微信公众号外部链接的限制,文中的部分链接可能无法正确打开。如有需要,请点击文末的“阅读原文”按钮,访问可以正常显示外链的版本。)

942
来自专栏IT可乐

Linux系列教程(一)——Linux系统简介

  本系列教程将完整的讲解整个Linux相关的知识,这是楼主学完兄弟连的Linux教程之后重新对Linux知识体系的整理。个人感觉兄弟连的Linux教程可以很好...

2058
来自专栏linux驱动个人学习

MIPI协议-DSI

对于现代的智能手机来说,其内部要塞入太多各种不同接口的设备,给手机的设计 和元器件选择带来很大的难度。下图是一个智能手机的例子,我们可以看到其内部存储、显示、摄...

3656
来自专栏社区的朋友们

Amazon Aurora 深度探索(三)

本文从数据库内核技术实现的角度对 Aurora 做了一定的推测。接着对 Aurora 用技术构建起的强大云数据库服务能力进行探索。

5461
来自专栏芋道源码1024

年轻人为什么要学习MySQL数据库(附 MySQL 脑图)

1353

扫码关注云+社区