Mysql数据库引擎

MySQL默认存储引擎的变迁

在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。

 

MyIASM引擎

  1.写入操作是锁住全表支持数据库事务、也支持外键。  

  2.MyISAM会保存好具体的行数

   3.MyISAM使用的全部都是非聚集索引,可以不定义“主键”

    4.MyISAM中的索引为B-Tree结构

InnoDB引擎

 1.提供了“行锁”、支持数据库事务、提供了外键服务

  注意:“行锁”的使用是有条件的,即where 查询的关键字一定被上了索引,且一定要明确(不能用模糊查询)。

      如果不满足,这两个条件InnoDB还是会锁住全表。

 2.Innodb不会保存行数,使用count(*)时,会搜索全表。

   3.Innodb由聚集索引和辅助索引(非聚集索引)构成,但必须有一个聚集索引,且默认与主键绑定。

    建表的时候可以不显示的指定主键,但是则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,

    如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。

  4.Innodb的聚集(主键)索引为B+Tree,其余为B-Tree

 

MyISAM与InnoDB构成上的区别

(1)每个MyISAM在磁盘上存储成三个文件:

第一个文件的名字以表的名字开始,扩展名指出文件类型,.frm文件存储表定义。 
第二个文件是数据文件,其扩展名为.MYD (MYData)。 
第三个文件是索引文件,其扩展名是.MYI (MYIndex)。

(2)基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的 大小只受限于操作系统文件的大小,一般为 2GB

 

适用场景:

  MyISAM适合: 
  (1)做很多count 的计算; 
  (2)插入不频繁,查询非常频繁,如果执行大量的SELECT,MyISAM是更好的选择; 
  (3)没有事务。

  InnoDB适合: 
  (1)可靠性要求比较高,或者要求事务; 
  (2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况指定数据引擎的创建; 
  (3)如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表; 
  (4)DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的 删除; 
  (5)LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。

 

参考网址:https://blog.csdn.net/xlgen157387/article/details/68978320#commentBox

转载于:https://www.cnblogs.com/oldma/p/9472679.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值