MyISAM和InnoDB是目前使用最频繁的两种存储引擎。
alter table tablename engine=MYISAM; //修改表的存储引擎,tablename = 表的名字
| MyISAM | InnoDB |
文件构成 | frm(表元数据描述文件)、MYD(数据文件)、MYI(索引文件) | frm(表元数据描述文件)、ibd(索引和数据文件) |
是否支持事务 | 不支持 | 支持 |
计算表行数 | select count(*) from table,MyISAM只要简单的读出保存好的行数,注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的 | InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行
|
锁 | 表锁,SELECT快,UPDATE或INSERT慢 | 行锁,UPDATE或INSERT快,SELECT慢 |