MySQL两大存储引擎InnoDB与MyISAM
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操作的场景,比如一般日志型的应用。
MySQL两大存储引擎InnoDB与MyISAM的更多相关文章
- MySQL两大存储引擎:MyISAM和InnoDB
Mysql有两大常用的存储引擎MyISAM,InnoDB,默认的形式是前者. 两者基本的差别是对事务处理.外键和行级锁的主持上,InnoDB支持事务处理.外键等高级特性,而MyISAM不支持.MyIS ...
- MySQL两种存储引擎: MyISAM和InnoDB
MySQL两种存储引擎: MyISAM和InnoDB 简单总结 MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Me ...
- 常用Mysql存储引擎--InnoDB和MyISAM简单总结
常用Mysql存储引擎--InnoDB和MyISAM简单总结 2013-04-19 10:21:52| 分类: CCST|举报|字号 订阅 MySQL服务器采用了模块化风格,各部分之间保持相 ...
- MySQL存储引擎InnoDB与Myisam
InnoDB与Myisam的六大区别 InnoDB与Myisam的六大区别 MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名字开始,扩展名 ...
- MySQL存储引擎InnoDB,MyISAM
MySQL存储引擎InnoDB,MyISAM1.区别:(1)InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语 ...
- [转帖]mysql常用存储引擎(InnoDB、MyISAM、MEMORY、MERGE、ARCHIVE)介绍与如何选择
mysql常用存储引擎(InnoDB.MyISAM.MEMORY.MERGE.ARCHIVE)介绍与如何选择原创web洋仔 发布于2018-06-28 15:58:34 阅读数 1063 收藏展开 h ...
- MySQL各大存储引擎
MySQL各大存储引擎: 最好先看下你下的MySQL支持什么数据库引擎 存储引擎主要有: 1. MyIsam , 2. InnoDB, 3. Memory, 4. Blackhole, 5. CSV, ...
- MySQL - 两种存储引擎 (MyISAM PK InnoDB) + MVCC
总结 1.两种存储引擎各有各的有点,MyISAM专注性能,InnoDB专注事务.两者最大的区别就是InnoDB支持事务,和行锁. 2.InnoDB采用MVCC(Multi-Version Concur ...
- MySql常用两大存储引擎简介
MyISAM存储引擎简介 MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件. 首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm文件,另外还有.MYD和.M ...
随机推荐
- docker:(3)docker容器挂载宿主主机目录
有一项重要的参数 -v 目录挂载,就是让容器内部目录和宿主主机目录关联起来,这样就可以直接操作宿主主机目录而不用再操作具体容器了 比如在2中,我们要发布一个war包,是通过 sudo docker c ...
- QuickChm 制作chm文档 chm文档脚本错误,乱码
最近学习bootstrap,到网上找了一些chm格式的文档,发现有些老旧,于是决定自己制作一个 用过以下这些chm制造器,包括easychm,chm精灵,chmeditor,chmfactory等等, ...
- [转载]MySQL UUID() 函数
目录 目录 一 引子 二 MySQL UUID() 函数 三 复制中的 UUID()四 UUID_SHORT() 函数 3.1 实验环境介绍 3.2 搭建复制环境 3.3 基于 STATEMENT 模 ...
- WPF 依赖属性源码 洞察微软如何实现DependencyProperty
依赖属性DependencyProperty是wpf最重要的一个类,理解该类如何实现对学习wpf帮助很大! 终于找到了该类的源码!仔细阅读源码,看看微软如何玩的花招! File: Base\Syste ...
- 使用jemeter手工编写注册、登陆脚本 运用 fiddler (二)
接着上一篇讲 我们需要添加关联来获取我们想要的动态值 如果做过自动化测试的人都知道 不管是注册或者登陆是时候都会有一个 类似于动态码的一个东西 只有这个东西验证成功 我们才能注册 或者 登陆 那 ...
- 七牛php-sdk使用-多媒体处理
在七牛对象存储可以创建公共的bucket和私有的bucket,私有的不可以直接使用域名加资源key的方式进行访问,需要附加下载凭证. 私有bucket 关于下载凭证的生成,php-sdk已经提供了方法 ...
- golang 在 windows 下编译出 linux 二进制可执行文件的软件套装合集 [go 1.7.3环境]
golang 很好用,不过要把工具链弄完整. 要不你会发现怎么不能编译跨平台的呀? 怎么写代码没提示啊? ... 这一整套弄下来并不容易. 所以精心准备了一套工具方便大家使用. 软件列表如图. 安装顺 ...
- Flask笔记
# -*- coding: utf-8 -*- from flask import Flask,render_template,request,redirect,session,url_for imp ...
- BZOJ:4031: [HEOI2015]小Z的房间
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1103 Solved: 536[Submit][Status][Discuss] Descripti ...
- bzoj:1230: [Usaco2008 Nov]lites 开关灯
Description Farmer John尝试通过和奶牛们玩益智玩具来保持他的奶牛们思维敏捷. 其中一个大型玩具是牛栏中的灯. N (2 <= N <= 100,000) 头奶牛中的每 ...