博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL两大存储引擎InnoDB与MyISAM
阅读量:6697 次
发布时间:2019-06-25

本文共 967 字,大约阅读时间需要 3 分钟。

1.InnoDB存储引擎

   MySQL5.5中InnoDB成为默认的存储引擎InnoDB是事务型存储引擎,被设计用来处理大量的短期事务。它的性能和自动崩溃恢复特性,使得它在非事务场景中也很流行。

   所以可以这么说:“除非需要用到某些InnoDB不具备的特性,并且没有其他办法可以替代,否则都应该优先选择它”。

  InnoDB的数据存储在表空间中,它可以将每个表的数据和索引存放在单独文件中。

  InnoDB采用MVCC来支持高并发,并且实现了四个标准的隔离级别。默认级别是REPEATABLE READ(可重复读),并且通过间隙锁策略防止幻读的出现。

  InnoDB表示基于聚簇索引建立的,聚簇索引对主键的查询有很高的性能。

  InnoDB支持真正的热备份,可以通过XtraBackup工具实现。

  InnoDB内部做了很多优化,包括从磁盘读取数据时采用的可预测性预读,能够自动在内存中创建hash索引,能够加速插入操作的插入缓冲区等。

  应用场景

                 需要在线热备份

       数据量大,需要系统崩溃后快速恢复。比如订单处理。

2.MyISAM存储引擎

MySQL5.1之前,MyISAM为默认的存储引擎。MyISAM不支持事务和行级锁且最大缺陷就是崩溃后无法安全恢复。

.MyISAM将表存储在两个文件中:数据文件和索引文件。

 MyISAM对整张表加锁,读取时对需要的所有表加共享锁,写入时加排它锁。但是在表有读取查询时,也可以往表中插入新的记录(并发插入)

 MyISAM可以手工或者自动执行检查修复操作,但是可能导致数据丢失而且修复操作非常慢。

 MyISAM表中BLOB和TEXT等长字段也可以基于前500个字符创建索引。MyISAM也支持全文索引,这是基于分词创建的索引,可以支持复杂的查询。

 MyISAM在创建表时候如果指定DELAY_KEY_WRITE(延迟更新索引键),在每次修改执行完成时会将索引写入内存中的键缓冲区,挡在清理键缓冲区或者关闭表时才会将对应索  引块写入磁盘,这种方式可以极大提升写入性能。但是在数据库或主机崩溃时索引会损坏。

 应用场景

             主要是SELECT和INSERT操作的场景,比如一般日志型的应用。

            

转载于:https://www.cnblogs.com/technologykai/p/7561432.html

你可能感兴趣的文章
【前端面试】字节跳动2019校招面经 - 前端开发岗(二)
查看>>
前端进阶系列(六):盒模型
查看>>
Android开发 - 掌握ConstraintLayout(一)传统布局的问题
查看>>
使用el-checkbox实现全选,点击失效没有反应
查看>>
webpack4.x 模块化浅析-CommonJS
查看>>
深解微服务架构:从过去,到未来
查看>>
聊聊毕业设计系列 --- 系统实现
查看>>
vue弹窗插件实战
查看>>
vue如何实现单页缓存方案分析
查看>>
WEB/H5性能优化总结
查看>>
js转换字符串为base64位
查看>>
弹性布局
查看>>
Laravel5.5之事件监听、任务调度、队列
查看>>
前端性能优化之Lazyload
查看>>
vue-i18n使用及踩坑记录
查看>>
@Java | Thread & synchronized - [ 线程同步锁 基本使用]
查看>>
从拿到班车手册.xls到搜索附近班车地点
查看>>
Python学习之路20-数据模型
查看>>
黄文俊:Serverless小程序后端技术分享
查看>>
《netty实战》阅读笔记(2)——Netty 的数据容器ByteBuf
查看>>