MySQL基本概述

MySQL是非常灵活的一款数据库,虽然它不是绝对完美,但它的灵活足够适应很多高要求的环境。为了发挥MySQL的性能并很好的使用它,我们就得先了解其设计。MySQL的灵活主要体现在我们可以通过不同的配置使他在不同的硬件上都能运行的很好。但是MySQL最重要,与种不同的特性是它的存储引擎架构,这种架构将查询处理及其他系统任务和数据的存储/提取相分离。

1.MySQL的逻辑架构

这里写图片描述
如上图,我们可以简单的将其逻辑架构分为3层

(1)网络接口层:主要负责接受连接,并读写连接对应的内容,这点和我们平时所写的网络服务器的I/O接口层基本相似
(2)请求处理层:如上图所示,该层主要是对请求SQL语句进行解析,解析之后或是进一步对请求的SQL语句进行优化,或是直接在缓存中找到请求的内容
(3)存储引擎层:该层主要负责数据的提取和存储

(1)连接管理

MySQL的每个客户端连接都会在服务器拥有一个线程,该线程的查询只会在这个单独的线程中去执行。服务器会负责缓存该线程,因此不需要为每个新连接创建或销毁线程(线程池)

(2)优化与执行

MySQL会解析查询,并创建内部数据结构(解析树),然后对其进行各种优化,包括重写查询,决定表的读写顺序,以及选择合适的索引等。用户可以通过explain来查看查询优化过程,从而可知服务器是如何进行查询优化决策的。需要注意的是优化器并不需要知道存储引擎是什么,但不同的存储引擎对优化是有影响的

2.并发控制

(1)读写锁

当我们的多个用户同时对数据库中的一张表进行读操作,这并不会产生什么问题。但是如果此时有一个进程在修改表中的某条数据,这就会产生不可预料的事情了。为了防止类似的事情发生,MySQL采用了俩中锁:共享锁和排他锁。这俩中锁从概念上就很好理解,共享意思持有这些锁的线程互相不阻塞,对应此处就是一张表几个线程可以同时读。排他则意味着只要有一个线程获得该锁,则其他的所有线程无论读写都会被阻塞

(2)锁粒度

能够提高并发性的一种方式就是让锁的对象更具有选择性。尽量只锁定真正需要修改的数据,而不是有关的无关的都锁。锁定的资源(临界区)越少,则并发度也就越高,只要相互之间不发生竞争即可。刚才的说法其实只是一种理想,真实环境下,我们创建锁,加锁,解锁,销毁锁也都会也一定的代价ÿ

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值