MySQL优化02:数据库引擎

MyISAMInnoDB引擎的比较

MySQL的数据库引擎主要有MyISAMInnoDB,对于现在的项目来说,直接上InnoDB可以满足绝大多数需求,因此InnoDB也是MySQL5.5版本之后的默认引擎(之前是MyISAM),但我们还是要了解一下两个引擎之间的区别.

  1. InnoDB支持事务,而MyISAM不支持(这一条区别足以让我们放弃MyISAM).若不显式开启事务,InnoDB会将每一条SQL语句都封装成一个事务进行提交.

  2. InnoDB支持行级锁,而MyISAM只支持表级锁.因此InnoDB支持并发比MyISAM高,但有可能产生死锁.

  3. InnoDB支持外键,而MyISAM不支持(当然现在的项目不提倡使用外键,所以这个差异可以忽略).

  4. InnoDB是聚集索引,即数据文件和索引是存在同一文件内的,要求必须有主键.而MyISAM是非聚集索引,数据文件和索引分开存储在两个文件中.

    MySQL中数据库的数据文件存储格式:

    1. 对于MyISAM引擎: .frm文件保存表结构,.myd存储数据,.myi存储索引
    2. 对于InnoDB引擎: .frm文件保存表结构,.ibd文件或.ibdata文件保存索引和数据,具体使用哪种文件格式取决于使用独立表空间还是共享表空间,独立表空间使用.ibd后缀,共享表空间使用.ibdata后缀.
  5. InnoDB不支持全文索引,而MyISAM支持全文索引.不过MySQL默认实现的全文索引功能不支持中文,因此是一个鸡肋功能.

  6. InnoDB不保存表的具体行数,而MyISAM维护着一个变量记录整个表的行数.

    InnoDB执行select count(*) from 表名时进行全表扫描,而MyISAM执行select count(*) from 表名语句时直接查出记录行数的变量(但若SQL语句后存在where条件,MyISAM同样要进行全表扫描).

其它MySQL引擎

  1. Memory引擎: Memory引擎将数据存储在内存中,只有存储表结构的.frm文件被存储在磁盘上,一旦关闭MySQL,数据全部消失.
  2. NDBCluster引擎: 主要用于MySQLCluster分布式集群环境.
  3. BLACKHOLE引擎: 只能写入数据,不能读出数据,类似linux系统下的/dev/null目录
  4. CSV引擎: 本质上就是维护了一个CSV文件,方标导出CSV表.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值