Mysql逻辑架构视图
主要存储引擎
引擎
Mysql版本
事务
锁粒度
主要引用
忌用
InnoDB |
全部 |
支持 |
支持Mvcc行级锁 |
事务处理 |
|
MyISAM |
全部 |
不支持 |
支持并发插入的表锁 |
Select,insert高负载 |
读写并重的场合 |
MyISAM Merge |
全部 |
不支持 |
支持并发插入的表锁 |
分段归档, |
许多全局查找 |
Memory(HEAP) |
全部 |
不支持 |
表锁 |
中间计算,静态数据查证 |
大型数据集,持久性存储,重启后数据丢失 |
Falcon |
6.0 |
支持 |
支持Mvcc行级锁 |
事务处理 |
|
Archive |
4.1 |
支持 |
支持Mvcc行级锁 |
日志记录,聚合分析,只支持insert,select操作 |
需要随机读取 删除 |
CSV |
4.1 |
不支持 |
表锁 |
日志记录,大规模加载外部数据 |
需要随机读取,索引等 |
NDB Cluster |
5.0 |
支持 |
行级锁 |
高可用集群 |
典型引用 |
Maria |
6.x |
支持 |
支持mvcc行级锁 |
替代MyISAM |
|
可以通过show table status like '表名称'\G 来查看表的信息
锁粒度
1.表锁(Table Lock)
当一个用户对表进行写操作(新增,删除,修改), 会获得一个写锁,写锁会禁止其他用户的读写操作,当无人做写操作时,其他用户才能获得读锁,读锁与读锁之间不会冲突。表锁是最小锁策略,其性能良好,表锁由Mysql本身 和 存储引擎实现。
2.行级锁(Row Lock)
行级锁可以支持最大的并发处理,同时也带来了最大锁开销,行级锁在InnoDB,Falcon存储引擎出以实现。 行级锁由存储引擎实现,而不是Mysql服务器本身。
3.MVCC行级锁
MVCC 是一种多版本并发控制(Multiversion Concurrency Control)的技术,MVCC不是mysql独有的技术,Oracle,PostgreSQL等其他数据库也使用了该技术。
每种存储引擎实现MVCC的方式是不同的,例如乐观并发控制,悲观并发控制,下面以Innodb的实现方式 说说其简要工作原理:
Innodb通过为每个数据行增加两个隐士的字段来实现MVCC,这两个隐士字段记录了行的创建的时间,以及过期时间(删除时间),每一行都存储了事件发生时的系统版本号,用来替代事件发生时的实际时间。每一次开启一个新的事务时,版本号都会递增,每个事务都会保存它在开始时的“系统版本”的记录,而每个查询都会根据事务的版本号,检查每行数据的版本号。
SELECT
Innodb 检查每行数据,确保它们符合两个标准
*Innodb只查找版本号小于或等于当前版本号的数据,这确保了当前事务读取的数据行都是在事务开始前已存在,或者是当前事务创建或修改的行。
*数据行的删除标识必须是未定义,或者是大于事务版本的,这确保了查询出来的数据在事务开始时是未被删除的。
INSERT
Innodb为新增的数据行记录当前版本号
DELETE
修改要删除行的过期时间标识
UPDATE
为每个需要更新的行建立一个新的行的拷贝,并为新的行拷贝记录当前系统版本。也为更新前的数行记录系统版本号,作为旧行的删除版本标识。保存这些额外记录的好处是大多数并发操作都不必申请枷锁,这使读操作变得更快,因为读操作是要选取符合标准的数据行即可,这种方式的缺点是:存储引擎必须为每行数据存储更多的额外数据,浪费空间,做更多的检查工作,以及整理一些额外的数据带来的开销。
加锁策略
并发
系统开销
引擎
表级加锁 |
最低 |
最低 |
MyISAM,Merge,MyISAM Merge |
行级加锁 |
高 |
高 |
NDB Cluster |
支持MVCC的行级加锁 |
最高 |
最高 |
InnoDB,Falcon |
选择合适的引擎
1.事务
如果应用需要事务处理操作,Innodb仍是最稳定的,如果不需要事务,主要操作是处理一些SELECT和INSERT操作或专用日志记录,那么MYISAM是一个不错的选择。
2.并发
3.备份
4.崩溃后恢复
分享到:
相关推荐
mysql-存储引擎
mysql存储引擎和数据库对象
10.2020-开年标杆班-day08-MySQL-存储引擎-微观结构-事务日志介绍 11.2020-开年标杆班-day08-MySQL-存储引擎-学生案例 2.2020-开年标杆班-day08-MySQL上节回顾-2 3.2020-开年标杆班-day08-MySQL-存储引擎介绍...
MySQL逻辑架构-存储引擎-用户权限密码详解 • mysql系统架构 • 常见引擎 • msyql 数据库用户和权限管理 • 修改帐户密码 • 重置root密码
本文详细介绍了mysql innodb引擎的原理、配置、调优、故障排除等
# 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 #mysql_native_password default_authentication_plugin=mysql_native_password [mysql] # 设置...
mysql基础补充3-存储引擎问题
更好的InnoDB存储引擎:内容太多,就等Inside君的《MySQL技术内幕:InnoDB存储引擎》第3版吧; 更为健壮的复制功能:复制带来了数据完全不丢失的方案,传统金融客户也可以选择使用MySQL数据库。此外,GTID在线平滑...
MHA自动化主服务器故障转移,快速将从服务器晋级为主服务器(通常在10-30s),而不影响复制的一致性,不需要花钱买更多的新服务器,不会有性能损耗,容易安装,不必更改现有的部署环境,适用于任何存储引擎。
03-MySQL-高可用数据库存储引擎,Mysql 的核心是存储引擎。
计算机后端-PHP视频教程. php与mysql加强- 08. php加强40-存储引擎的概念.wmv
MHA自动化主服务器故障转移,快速将从服务器晋级为主服务器(通常在10-30s),而不影响复制的一致性,不需要花钱买更多的新服务器,不会有性能损耗,容易安装,不必更改现有的部署环境,适用于任何存储引擎。
MySQL参数调优及数据库锁 MySQL常用工具日志及综合案例 存储引擎和SQL优化 数据库安装及数据库对象 最上层是一些客户端和...存储引擎层, 存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行
可插拔的存储引擎架构 多种存储引擎: InnoDB MyISAM NDB (MySQL Cluster) Memory Merge Archive CSV 等等 MySQL 复制可提高应用性能和可扩展性 MySQL 分区有助于增强大型数据库应用的性能和管理 存储过程可提高开发...
LNH_MySQL 01-MySQL服务存储引擎介绍.mp4
SequoiaSQL-MySQL存储引擎SequoiaSQL-MySQL存储引擎是一个分布式MySQL存储引擎。 目前,它支持将SequoiaDB 3.x作为后端数据库,并将扩展到多个数据库,例如Mong SequoiaSQL-MySQL存储引擎SequoiaSQL-MySQL存储引擎是...
LNH_MySQL 02-MySQL服务存储引擎体系结构.mp4
MySQL体系结构 MySQL存储引擎 InnoDB存储引擎
MySql教程-数据库存储引擎.pdf
MySQL内部存储引擎介绍,两大类引擎InnoDB和MyISM介绍