discuz x3.4升级到discuz x3.5数据库如果过GB会存在备份数据库增长几倍几G的情况的根本原因
有很多站长从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比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则相对更加轻量级。