pengpengflyjhp 2020-05-14
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+树作为索引的数据结构。