mysql常用搜索引擎

  • mysql常用搜索引擎
    • innoDB简介
    • MyISAM简介
    • 引擎对比
    • innoDB死锁
    • 查询时MyISAM为什么比innoDB快

mysql常用搜索引擎

innoDB简介

innoDB引擎,它是一个事务型的引擎,它设计为了处理大量数据提供高性能的服务。它支持事物处理、实现sql标准的四种隔离级、支持行级锁但行级锁并不是决对的、外键以及利用事物日志进行数据的恢复,不支持FULLTEXT类型的索引,清空表时不会新建表而是一行一行删除。适合需要事物,大量数据读写的项目。

MyISAM简介

MyISAM引擎是mysql的默认引擎,它可以高性能的读取。表级别锁,记录了全表的行数,当使用count时不会进行全表扫描,不支持事物,对表进行insert和update时会对表进行锁定,发生故障无法恢复。适合不需要事物,读取频繁,插入少的项目。

引擎对比

对比 innoDB MyISAM
主外键 O X
事物 O X
行级,操作时指锁定一行,适合高并发 表级,操作时会锁住整张表
缓存 既缓存索引又缓存数据,对内存要求高,内存影响性能 只缓存索引不缓存数据
表空间
关注点 事物 性能

innoDB死锁

innoDB是行级别锁,但mysql行级锁不是锁主整行,而是锁主索引,索引又分为主键索引和非主键索引,当操作了主键,则锁住主键,当操作了非主键索引,则会先锁住这个非主键索引再去锁住主键。这样就造成了会出现死锁的现象。

查询时MyISAM为什么比innoDB快

innoDB既要缓存索引又要缓存数据,而MyISAM只缓存索引。
innoDB寻址是先映射到块再映射到行,而MyISAM直接映射到文件的偏移量。
innoDB要维护多版本并发控制。
总而言之innoDB需要维护的东西比MyISAM多。

你可能感兴趣的:(mysql)