查询修改MySQL表的存储引擎

查MySQL某个表的引擎:

  1. 方法1)
  2. show table status where name='$Table_Name'
  3.  
  4. 方法2)
  5. xxd -l 4 tablename.frm
  6. 0000000: fe01 0909
  7.  
  8. xxd -l 4 tablename.frm
  9. 0000000: fe01 0a0c
  10.  
  11. 前面4位固定为fe01,紧接着4位,0CInnoDB09MyISAM

查看全局引擎支持类型

  1. show engines;

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

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

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

  1. SET storage_engine=$Engine

建表指定为InnoDB,默认为MyISAM

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

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

  1. ALTER TABLE table_name ENGINE = INNODB;

6 Comments

  1. xxd -l 4 tablename.frm
    这是在命令行吗?

  2. show table status where name=’$Table_Name’
    这样子即使是php中也是不对的吧?
    show table status where name=’Table_Name’没有$符号

    CREATE TABLE table_name (rid INT) TYPE = INNODB;这句报错

  3. 想学mysql。但是不知道怎么学。。

  4. 没看懂