MySQL最常用的二种存储引擎MyISAM和InnoDB的介绍

1.MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不是事务安全的,而且不支持外键,如果执行大量的select操作,那么MyISAM是比较适合的选择。

 

2.InnoDB:支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。如果有大量的update和insert,建议使用InnoDB,特别是针对多个并发和QPS较高的情况。

 

3.MyISAM:myisam只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。也可以通过lock table命令来锁表,这样操作主要是可以模仿事务,但是消耗非常大,一般只在实验演示中使用。

 

  4.InnoDB:Innodb支持事务和行级锁,是innodb的最大特色。行锁就是要锁住一行记录,阻止其他事务操作该行记录。当然,当insert 操作时,是永远不会产生行锁的,因为插入操作不会操作一条存在的记录(这里不考虑重复的数据)

 

5.myIsAM: myisam在磁盘存储上有三个文件,每个文件名以表名开头,分别是以下三种文件。

       (1).frm 用于存储表的定义

       (2).MYD 用于存放数据

       (3).MYI 用于存放表索引

 

6.InnoDB:innodb属于索引组织表,innodb有两种存储方式,共享表空间存储和多表空间存储。两种存储方式的表结构和myisam一样,以表名开头,扩展名是.frm。

 

7.myisam引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一列,他可以根据前面几列进行排序后递增。

 

8.innodb引擎的自动增长咧必须是索引,如果是组合索引也必须是组合索引的第一列。

9.myisam允许没有任何索引和主键的表存在,索引都是保存行的地址。

10.innodb引擎如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见)

11. myisam有保存表的总行数,所以,使用select count(*) from table; 会直接取出出该值

12.innodb没有保存表的总行数,如果使用select count(*) from table;就会遍历整个表,消耗相当大,但是在加了wehre 条件后,myisam和innodb处理的方式都一样。

13.myisam支持 FULLTEXT类型的全文索引

14.innodb不支持FULLTEXT类型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。(sphinx   是一个开源软件,提供多种语言的API接口,可以优化mysql的各种查询)

15.myisam的索引以表名+.MYI文件分别保存。

16.innodb的索引和数据一起保存在表空间里。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值