db / 未分类 · 2014年2月28日

myslq 转ENGINE

mysql 5.1
ALTER TABLE 数据表 TYPE=InnoDB;
mysql 5.5
ALTER TABLE 数据表 engine=InnoDB;
## 查看某个table 的 ENGINE=
show create table tablename;
上次试了一下 一个
mysql> select count(*) from bto_message;
+———-+
| count(*) |
+———-+
| 2091162 |
+———-+
1 row in set (0.00 sec)
2百多w数据 用了 26 min 26.77 sec
http://hi.baidu.com/linux_life/blog/item/83d32aea865222dbd439c968.html
http://www.admpub.com/blog/post-128.html
你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):
mysql> show create table 表名;
问题
#原因 主索引太长 直接用字符串的
mysql> ALTER TABLE filternames TYPE=InnoDB;
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
MySQL快速从MyISAM迁移到InnoDB
mysql -u [USER_NAME] -p -e "select TABLE_NAME from information_schema.tables where table_schema='DATABASE_NAME' and engine='MyISAM';" | tail -n +2 | xargs -I '{}' echo "ALTER TABLE {} ENGINE=INNODB;" > alter_table.sql
perl -p -i -e 's/(search_[a-z_]+ ENGINE=)INNODB/\1MYISAM/g' alter_table.sql
mysql -u [USER_NAME] -p [DATABASE_NAME] < alter_table.sql

从管理员角度分析:MySQL表引擎中MyISAM和InnoDB的对
mysql从MyISAM迁移到InnoDB引擎过程及优化
[MySQL FAQ]系列 — 从MyISAM转到InnoDB需要注意什么
mysql myisam转innodb的2种方法