·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

discuz x3.4升级到discuz x3.5数据库如果过GB会存在备份数据库增长几倍几G的情况的根本原因

282 2
发表于 2023-7-12 16:17:29 | 查看全部 阅读模式 | Chrome| Windows 10

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
有很多站长从discuz x3.4升级到discuz x3.5后发现,原先仅是1.几G的网站备份数据,升级之后增长了将近3倍大小,造成了备份成本、空间成本、容量成本增长不少,这主要是x3.5的数据库引擎更改为了innodb造成。

一般innodb比MyISAM大30%左右,如果你是GBK升级的,那么就是 原大小 x 130% x 130%

当前云数据库已经非常普遍,大多数云数据库都不支持MyISAM引擎,所以InnoDB是面对未来的必选,这也是X3.5的升级特性之一。

升级到X3.5数据库差异性对比:

事务差异
InnoDB是MySQL的事务型存储引擎,支持ACID特性(原子性、一致性、隔离性和持久性),可以保证数据的完整性和一致性。而MyISAM不支持事务,这意味着在高并发的环境下,使用InnoDB更加可靠。

外键差异
InnoDB是唯一支持外键的存储引擎,可以通过外键约束来保持数据的一致性。而MyISAM不支持外键约束,因此在需要使用外键的情况下,选择InnoDB是更好的选择。

索引差异
InnoDB和MyISAM对索引的处理方式也有所不同。InnoDB使用聚簇索引(clustered index),它的叶子节点存储了实际的数据行,这样可以加快根据索引进行数据检索的速度。而MyISAM使用非聚簇索引(non-clustered index),叶子节点存储的是指向实际数据行的指针。因此,在需要频繁进行数据检索的场景中,InnoDB的性能更好。

行锁差异
在并发访问的情况下,InnoDB使用行级锁(row-level locking),可以提供更好的并发性能。而MyISAM只支持表级锁(table-level locking),这就意味着当一个线程对表进行写操作时,其他线程无法对该表进行任何读写操作。

表锁差异
MyISAM的表级锁对于整个表进行锁定,因此在高并发的情况下可能导致较多的锁冲突,降低了并发性能。而InnoDB的行级锁可以最大程度地减少锁冲突,提高了并发性能。

存储文件差异
InnoDB的数据和索引是存储在一个共享的表空间文件中的,而MyISAM则将数据和索引分别存储在不同的文件中。这也是为什么InnoDB在存储空间利用率上相对较低的原因之一。

具体行数差异
在大多数情况下,InnoDB的表通常需要占用更多的存储空间,因为它包含了额外的数据结构来支持事务和行级锁等功能。而MyISAM则相对更加轻量级。

我要说一句 收起回复

评论2

AI智能体Lv.7 发表于 2023-7-12 16:19:46 | 查看全部
升级到Discuz X3.5后,数据库备份大小增长的原因是因为X3.5的数据库引擎改为了InnoDB。一般来说,InnoDB比MyISAM大约大30%左右。如果您是从GBK升级的,则备份大小会变为原大小乘以130%再乘以130%。

在当前云数据库环境中,大多数云数据库都不支持MyISAM引擎,因此InnoDB是未来的必选引擎,这也是X3.5升级的一个特性。

升级到X3.5数据库后,以下是一些差异性对比:

1. 事务差异:InnoDB是MySQL的事务型存储引擎,支持ACID特性(原子性、一致性、隔离性和持久性),可以保证数据的完整性和一致性。而MyISAM不支持事务,这意味着在高并发环境下,使用InnoDB更加可靠。

2. 外键差异:InnoDB是唯一支持外键的存储引擎,可以通过外键约束来保持数据的一致性。而MyISAM不支持外键约束,因此在需要使用外键的情况下,选择InnoDB是更好的选择。

3. 索引差异:InnoDB和MyISAM对索引的处理方式也有所不同。InnoDB使用聚簇索引(clustered index),它的叶子节点存储了实际的数据行,这样可以加快根据索引进行数据检索的速度。而MyISAM使用非聚簇索引(non-clustered index),叶子节点存储的是指向实际数据行的指针。因此,在需要频繁进行数据检索的场景中,InnoDB的性能更好。

4. 行锁差异:在并发访问的情况下,InnoDB使用行级锁(row-level locking),可以提供更好的并发性能。而MyISAM只支持表级锁(table-level locking),这就意味着当一个线程对表进行写操作时,其他线程无法对该表进行任何读写操作。

5. 表锁差异:MyISAM的表级锁对于整个表进行锁定,因此在高并发的情况下可能导致较多的锁冲突,降低了并发性能。而InnoDB的行级锁可以最大程度地减少锁冲突,提高了并发性能。

6. 存储文件差异:InnoDB的数据和索引存储在一个共享的表空间文件中,而MyISAM则将数据和索引分别存储在不同的文件中。这也是为什么InnoDB在存储空间利用率上相对较低的原因之一。

7. 具体行数差异:在大多数情况下,InnoDB的表通常需要占用更多的存储空间,因为它包含了额外的数据结构来支持事务和行级锁等功能。而MyISAM则相对更加轻量级。
-- 来源:OpenAI ****GPT
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-19 07:17:12 | 查看全部
从Discuz X3.4升级到Discuz X3.5后,数据库备份文件大小显著增加的原因确实与数据库引擎从MyISAM切换到InnoDB有关。以下是对这一现象的详细解释:

1. **存储引擎差异**:
   - **MyISAM**:MyISAM是Discuz X3.4及之前版本的默认存储引擎。它以其简单性和高效性著称,尤其是在读密集型应用中。MyISAM将数据和索引分别存储在不同的文件中,且不支持事务、外键和行级锁。
   - **InnoDB**:InnoDB是Discuz X3.5的默认存储引擎。它支持事务、外键和行级锁,提供了更高的数据完整性和并发性能。InnoDB将数据和索引存储在同一个表空间中,且为了支持事务和行级锁,InnoDB需要额外的存储空间来维护这些功能。

2. **存储空间利用率**:
   - **MyISAM**:由于MyISAM不存储事务日志和其他元数据,它的存储空间利用率较高,数据文件相对较小。
   - **InnoDB**:InnoDB为了支持事务和行级锁,需要存储额外的元数据和事务日志,这会导致存储空间利用率相对较低。通常情况下,InnoDB的表会比MyISAM的表大30%左右。

3. **字符集转换**:
   - 如果您的数据库在升级过程中从GBK字符集转换为UTF-8字符集,这也会导致数据文件大小的增加。UTF-8字符集通常需要更多的存储空间,尤其是对于中文字符。

4. **备份文件大小增加的原因**:
   - **InnoDB的存储结构**:InnoDB的存储结构比MyISAM复杂,备份时需要包含更多的元数据和事务日志信息,这会导致备份文件的大小显著增加。
   - **字符集转换**:如果升级过程中进行了字符集转换,备份文件的大小也会因为字符集的变化而增加。

5. **解决方案**:
   - **优化数据库**:在升级后,可以通过优化数据库表来减少存储空间的占用。例如,使用`OPTIMIZE TABLE`命令来整理表空间。
   - **压缩备份**:在备份数据库时,可以使用压缩工具(如gzip)来减少备份文件的大小。
   - **定期清理数据**:定期清理不再需要的数据,可以减少数据库的大小,从而减少备份文件的大小。

总结来说,Discuz X3.5升级后数据库备份文件大小增加的主要原因是存储引擎从MyISAM切换到InnoDB,以及可能的字符集转换。虽然这会导致备份文件大小增加,但InnoDB提供了更高的数据完整性和并发性能,是面向未来的选择。通过优化数据库和压缩备份,可以有效减少备份文件的大小。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.144.147.211,GMT+8, 2025-4-25 04:43 , Processed in 0.205886 second(s), 79 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表