mysql的myisam 和 innodb 的区别?优化mysql数据库的方法?,myisaminnodbmyisam 和 innodb 的基本区别
1.innodb不支持fulltext类型的索引。
2.innodb 中不保存表的具体行数,也就是说,执行select count(*) from table时,innodb要扫描一遍整个表来计算有多少行,但是myisam只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
3.对于auto_increment类型的字段,innodb中必须包含只有该字段的索引,但是在myisam表中,可以和其他字段一起建立联合索引。
4.delete from table时,innodb不会重新建立表,而是一行一行的删除。myisam 是表所 innodb是行锁
5.load table from master(从主负载表)操作对innodb是不起作用的,解决方法是首先把innodb表改成myisam表,导入数据后再改成innodb表,但是对于使用的额外的innodb特性(例如外键)的表不适用。
另外,innodb表的行锁也不是绝对的,如果在执行一个sql语句时mysql不能确定要扫描的范围,innodb表同样会锁全表,例如update table set num=1 where name like “2%”
6.innodb 支持事物
选择存储引擎 根据实际情况选择。
一般情况下如果查询多建议使用myisam 。
如果你需要事务处理或是外键,那么innodb 可能是比较好的方式。
优化mysql数据库的方法:
1,选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置not null,例如'省份,性别',最好设置为enum
2,使用join代替子查询
3,使用联合(union)来代替手动创建的临时表
4,事务处理(保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败)
5,适当建立索引(如何建立索引?索引的利与弊?)
6,优化sql语句
7,explain可以看到mysql执行计划
8,分表(垂直分表,水平分表?)
相关阅读
http://www.phpernote.com/mysql/500.html
http://www.nowamagic.net/librarys/veda/detail/1899
http://www.bkjia.com/phpjc/1033982.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/1033982.htmltecharticlemysql的myisam 和 innodb 的区别?优化mysql数据库的方法?,myisaminnodb myisam 和 innodb 的基本区别 1.innodb不支持fulltext类型的索引。 2.innodb 中不保...