微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

二、MySQL存储引擎

二、存储引擎MyISAM和InnoDB区别

    (1)、InnoDB支持事务,MyISAM不支持

    (2)、MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用。

    (3)、InnoDB支持外键,MyISAM不支持

    (4)、MysqL5.5.5以后,InnoDB是认引擎。

    (5)、MyISAM支持全文类型索引,而InnoDB不支持全文索引。

    (6)、InnoDB中不保存表的总行数,select count(*) from table时,InnoDB需要扫描整个表计算有多少行,但MyISAM只需简单读出保存好的总行数即可。注:当count(*)语句包含where条件时MyISAM也需扫描整个表。

    (7)、对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联合索引。

    (8)、清空整个表时,InnoDB是一行一行的删除,效率非常慢。MyISAM则会重建表。MyISAM使用delete语句删除后并不会立刻清理磁盘空间,需要定时清理,命令:OPTIMIZE table dept;

    (9)、InnoDB支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like ‘%lee%’)和表锁,MyISAM只支持表级锁。

    (10)、MyISAM创建表生成三个文件:.frm 数据表结构 、 .myd 数据文件 、 .myi 索引文件,Innodb只生成一个 .frm文件,数据存放在ibdata1.log现在一般都选用InnoDB,主要是MyISAM的全表锁,读写串行问题,并发效率锁表,效率低,MyISAM对于读写密集型应用一般是不会去选用的。

    应用场景:

        MyISAM不支持事务处理等高级功能,但它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。

        InnoDB用于需要事务处理的应用程序,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能

原文地址:https://www.jb51.cc/wenti/3279081.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐