Linux · 2014-06-30

查询修改MySQL表的存储引擎

查MySQL某个表的引擎:

方法1)
show table status where name='$Table_Name'

方法2)
xxd -l 4 tablename.frm
0000000: fe01 0909

xxd -l 4 tablename.frm
0000000: fe01 0a0c

前面4位固定为fe01,紧接着4位,0C为InnoDB,09为MyISAM

查看全局引擎支持类型

show engines;

MyISAM限制:
没有外键更新删除
无法回滚
没有事务
行数最多为4284867296
每一行最大的索引为64个

InnoDB限制:
不能全文索引,最新版貌似可以英文

MyISAM使用表级别的锁,而InnoDB使用行级别的锁。
更改全局引擎:

SET storage_engine=$Engine

建表指定为InnoDB,默认为MyISAM

CREATE TABLE table_name (rid INT) ENGINE = INNODB;
CREATE TABLE table_name (rid INT) TYPE = INNODB;

转换一个表的存储引擎为InnoDB:

ALTER TABLE table_name ENGINE = INNODB;