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

相关文章

来自专栏北京马哥教育

有福了!六步使用Python写一个小小的自动化项目监控

本文由马哥教育Python自动化实战班5期学员推荐,转载自互联网,作者为 Defshine,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与付出...

1.1K10
来自专栏微信公众号:Java团长

Java高级工程师面试总结

原因:面试的第一个问题,一般都是让你简单介绍下你自己,或者介绍一下你最近的项目,而一个面试者,如果连自己的简历都无法熟知,对里面提到的项目、技术都无法描述清楚的...

721
来自专栏H2Cloud

领域驱动设计-软件中的对象

软件中的对象 About DOMAIN-DRIVEN DESIGN 领域驱动设计是一种思维方式,目的在于处理具有复杂问题的软件项目。在传统的瀑布软件开发模型中,...

3375
来自专栏携程技术中心

[技术分享]携程App的网络性能优化实践

在4月23日~25日举行的QCon全球软件开发大会(北京站)上,携程技术中心无线开发总监陈浩然分享了《移动开发网络性能优化实践》,总结了携程在App网络性能优化...

23810
来自专栏Java架构师进阶

Java高级工程师面试总结

原因:面试的第一个问题,一般都是让你简单介绍下你自己,或者介绍一下你最近的项目,而一个面试者,如果连自己的简历都无法熟知,对里面提到的项目、技术都无法描述清楚的...

532
来自专栏WeTest质量开放平台团队的专栏

你的游戏代码“病”了吗?

代码作为游戏的“身体”,一旦生病,在“奔跑”过程中便极可能”跌倒”。如果你的游戏出现过运行错误、宕机偶现问题,或者某些功能与预期不符。那么一起来看看是不是你的游...

802
来自专栏Linyb极客之路

浅谈代码结构的设计

之前无论是作为开发还是测试,习惯性的觉得,别人提供了什么功能,就用什么样的功能,这样做天经地义。然而,在自己的架构设计过程中,如果有了这样额思维,很容易让自己的...

412
来自专栏Java架构

Java高级工程师——面试总结

1845
来自专栏嵌入式程序猿

探索ARM Cortex-M7核心:为明日物联网做准备

Cortex-M处理器系列的最新成员是Cortex-M7。这款新的核心具备可用于支持新型嵌入式技术需求的功能,它设计用于需要较高处理性能、实时响应能力和能效的应...

3716
来自专栏安全领域

DNS审查,了解一下

任何拥有在线资产的组织机构都需要意识到发生单点故障并不是什么好事。物联网病毒"Mirai"十月份针对某个DNS提供商的僵尸网络攻击,使我们了解到,一旦像DNS这...

1392

扫码关注云+社区