第一层并不是mysql独有的,大多数基于网络的客户端/服务器的工具或服务都有类似的架构
不如链接处理,授权认证,安全等等
第二层是mysql核心功能位置,包括查询解析,分析,优化,缓存以及所有的内置函数所有的跨存储引擎的功能都在这一层实现:存储过程,触发器,视图等
第三层包含了存储引擎。存储引擎负责myslq中数据的存储和提取。服务器通过api与存储引擎进行通信,这些api屏蔽了不同存储引擎之间的差异
并发控制
读写锁:
在处理并发读或写时,可以通过实习那一个有两种类型的锁组成的锁系统来解决问题,这两种类型通常被称为共享锁和排他锁,也叫读锁和写锁
读锁是共享的额,写锁是排他的额,一个写锁会阻塞其他写锁和读锁
锁粒度
mysql中不同存储引擎支持不同的锁机制:myisam与memory存储引擎采用表及锁;BDB存储引擎采用的是页级锁,也支持表锁; innoDB存储引擎即支持行级锁,也持支表级锁,默认采用行级锁
表级锁:mysql中开销最小的策咯,加锁速度快,锁定整张表,粒度大,不会出现死锁,发生竞争的概率高,并发度最低,性能最差
行级锁:开销大,加锁速度慢锁定一行数据,粒度小,会出现死锁,发生锁竞争的概率最低,并发最高,性能高
页级锁:开销和加锁速度介于表锁和行锁之间,锁定一页数据。会出现死锁,锁竞争概率,并发性,性能均位于表锁和行锁之间 4k一页
事物:
事物就是一组原子性的sql查询,或者说一个独立的工作单元。如果数据库引擎能够成功的对数据库应用该组查询的全部语句,那么执行该组查询。如果其中任何一条语句应为崩溃或其他原因无法执行,那么所有的语句都不会执行。也就是说,事物内的语句,要么全部执行成功,要么全部执行失败。良好的事物必须满足四大特性
事物的四大特性:
原子性(Atomicity)
一个事物中的sql,要么全部执行,要么全部不执行
一致性(Consistency)
一个事物执行前后,数据库中的所有约束依然满足
隔离性(lsolation)
一个事物执行过程中,数据不受另一个事物的影响
持久性(Durability)
一个事物执行完成后,事物对数据的修改必须持久化到数据库中
隔离级别:
隔离性其实比想象的复杂,在sql标准中定义了四中隔离级别,每一种级别都规定了一个事物中所做的修改,那些事物内和那些事物间是可见的,那些是不可见的。较低级别的隔离通常是可以执行更高级的并发,系统的开销也更低
*READ UNCOMMITED(未提交读):事物中修改的,即使没有提交对其他事物也都是可见的
*REDA COMMITTED(已提交读/不可重复读):事物重开始到提交之前所做的事情对其他事物都是不可见的
*REPEATABLE READ(可重复读):同一事物多次读取同样的记录结果是一直的,MySql默认
*SERIALIZABLE(序列化):事物串行执行
网友评论