MyISAM与InnoDB的对比
https://www.biaodianfu.com/mysql-myisam-innodb.html
MyISAM的读取性能要比InnoDB好一些,但这略微的优势远比不上InnoDB的行级锁和事务操作等特性。MySQL从5.6开始,将InnoDB作为默认的数据库引擎,因此除非需要使用MyISAM的特有功能,都应该使用InnoDB数据库引擎。Discuz论坛中的帖子主表(pre_forum_post)使用MyISAM特有的非第一列自增的联合主键,使得我们不能直接将改变转换为InnoDB。
数据表的改造
pre_forum_post表的结构为:
CREATE TABLE pre_forum_post (
pid int(10) unsigned NOT NULL, #帖子id
fid mediumint(8) unsigned NOT NULL DEFAULT '0', #论坛id
tid mediumint(8) unsigned NOT NULL DEFAULT '0', #主题id
...
position int(8) unsigned NOT NULL AUTO_INCREMENT, #楼层编号
PRIMARY KEY (tid,position),
UNIQUE KEY pid (pid),
...
) TYPE=MyISAM;
主键为(tid,position)
,自增列为position
,这种结构在MyISAM中不同的tid对应的position会分别从1开始自增,正好对应不同的帖子的楼层数都是从1开始自增的。
将该表转换为InnoDB,我们需要将(tid,positio