阿里云关于MySQL数据库myisam的支持

最近在做一个阿里云跨账号的数据库迁移,这个库是和论坛相关的,用的是Discuz程序,数据库中有一张myisam表,用于记录帖子和楼层。

这里可以看到tid是帖子号,floorid是楼层,这里用了一个myisam的复合索引第二列作为自增值,到的分组自增值的效果。

见mysql官方文档:3.6.9 Using AUTO_INCREMENT

对于分组自增值,在innodb和myisam的不同行为,可以用下面的测试过程演示:

阿里云RDS关于MySQL数据库的myisam引擎的支持,规律如下:

(1)MySQL 5.6的版本
a)create table engine=myisam 且用到分组自增序列,那么不会进行转换。
b)create table engine=myisam 不用自增分组序列,那么内部进行转换,转成innodb

注,用dts迁移整个数据库,迁移之后,在目标库仍保持原状,innodb的表还是innodb的,利用了分组自增序列的myisam的表还是myisam的,原始表如果创建的时候,手动写myisam但是没有用到分组自增序列,那么在创建的时候,就自动转成innodb,因此dts迁移过去之后,也仍然是innodb。

(2)MySQL 5.7版本以上
已经不支持myisam,create table engine=myisam 报错,已经不能创建。
如果用的是innodb创建的,非分组的自增序列,需要实现分组自增功能,需要改造代码如下:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据