mysql数据库逻辑结构_MySQL逻辑结构

MySQL逻辑架构

1.  MySQL逻辑架构

如图,MySQL服务器逻辑架构分为三层:

aee12cc4118e

第一层,这一层不是MySQL独有的解构,很多基于网络的架构都需要这一层,用于做连接处理、授权认证、安全等等。

第二层,MySQL的核心功能的核心层,称作SQL Layer,查询解析、分析、优化缓存以及所有的内置函数都在这一层完成,所有跨存储引擎的功能也都在这一层实现:存储过程、触发器、视图等等。

第三层,MySQL的最底层,包含了存储引擎(注:存储引擎负责MySQL中数据的存储和读取),服务器通过API和存储引擎进行通讯,而接口屏蔽了存储引擎之间的差异,对上层查询透明。

2.并发控制

多个session之间的读写产生的并发问题在生产上是很常见 的,MySQL从多个角度进行并发控制。

2.1读写锁

2.1.1 共享锁(Share Lock)

共享锁又被称为读锁,常被简称为 S 锁。一个事务获取到数据行的共享锁后,其他事务也可以获取到此数据行的共享锁,但是不能获取到该数据行的排他锁,也就是说当某一数据行被一个事务读取的时候,其他事务可以并发的去读取数据,但是不能修改此数据,直到共享锁被事务释放。

在查询语句后面添加   LOCK IN SHARE MODE  ,Mysql会对查询结果的每一行添加共享锁。

2.1.2排它锁(eXclusive Lock)

排它锁又被称为写锁,常被称为X锁。一个事务获取到数据行的排它锁后,其他事务不能获取到该行的任何锁,即,当一个事务对某一数据行进行修改的时候,其他事务不能对该数据行进行增删改查。

在查询语句后面添加FOR UPDATE,  MySQL会对查询结果的每一行添加排他锁。

2.2意向锁

意向锁是表级锁,对于 insert 、delete、update, InnoDB会自动给涉及到的数据添加意向锁,无需用户干预。

意向锁又分为 意向共享锁(IS)和意向排他锁(IX),这里不再展开阐述,有兴趣的读者可自行去百度理解。

2.2锁粒度

我们上面介绍了几种锁,可以很直观的看出,当我们的锁锁定的数量越少,数据库可以接受的并发程度就越高,那我们为什么不直接用行锁来应对所有的并发情况呢,这样的锁定的数据量是最小的。但是为什么不这样做呢?因为锁的获取、检查、释放等操作一样要消耗系统资源。

MySQL提供两种重要的锁策略,行级锁(row lock),行级锁可以面对最大的并发处理,但相应的也面对着最大的锁开销。行级锁只在存储引擎层实现,服务器层没有实现。

表锁(table lock),表锁是开销最小的锁策略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值