码迷,mamicode.com
首页 > 数据库 > 详细

MYSQL中的InnoDB存储引擎简介

时间:2020-05-14 01:12:12      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:系统   写锁   解锁   索引   维护   持久性   sam   不可   版本号   

1、MYSQL逻辑架构:

(1)最上层是连接层,主要负责授权认证、连接处理、线程管理等。

(2)第二层架构是MYSQL的服务层,主要提供了查询解析、分析、优化、缓存以及所有内置函数,所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。在这一层一条mysql查询会进行解析、优化、生成最优执行计划供下层使用。

(3)第三层是存储引擎层,它直接负责数据的存储和提取。MYSQL只有2种事务型的引擎:InnoDB和NDB Cluster;MYIsAm引擎是非事务的引擎。

2、事务处理系统必须具备4个特征ACID:A(原子性)C(consistensy一致性)I(隔离性)D(durability持久性)。

3、关于数据库锁的分类:

(1)按功能分,分为读锁(共享锁)和写锁(互斥锁),对数据加了读锁,其他用户可以读同时加读锁,但不可以写。加了写锁,其他用户既不可以读也不可以写。

(2)按锁粒度划分,分为表锁和行级锁,表锁锁住整个表的数据,行级锁是以行为单位进行加锁解锁。

4、何为事务的死锁:2个事务在同一资源上相互占用,并请求对方占用的资源,从而导致恶性循环的现象。(A要的锁m在B手中,B要的锁n在A手中,二者就这么干等对方的锁)。

5、事务死锁的解决方案:死锁检测机制和死锁超时机制。

(1)MYSQL现在已经能检测到死锁的循环依赖,并立即返回一个错误。

(2)锁等待超时后,InnoDB将持有最少行级排他锁的事务进行回滚。

6、InnoDB的默认隔离级别是可重复读(通过MVCC实现,MVCC实际上是在数据增删过程中维护数据行隐藏的2个版本号的列来实现多版本控制,从而保证读到的数据是可重复的,但是并不是以加悲观锁的方式实现,所以并发性能更好),且可以通过间隙锁策略(及在自己读到的范围内的间隙加锁)防止幻读的出现。

7、InnoDB使用B+树作为索引的数据结构。

 

MYSQL中的InnoDB存储引擎简介

标签:系统   写锁   解锁   索引   维护   持久性   sam   不可   版本号   

原文地址:https://www.cnblogs.com/HankTown/p/12885908.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!