高性能MySQL读书笔记 -- 架构与历史

6 篇文章 0 订阅
4 篇文章 0 订阅

一、MySQL的基础架构:

第一层:主要是连接处理,授权,安全等。

第二层:MySQL的核心服务功能都在这里,包括查询解析,分析,优化,缓存,内置函数,存储过程,触发器,视图等。

第三层:存储引擎,负责MySQL的数据存储和提取。

 

 

执行过程:

1、  每个客户端链接服务器产生一个线程,这个查询只会在这个单独的线程中执行。

当客户端(应用或者PHP) 连接到MySQL服务器时,服务器对其进行用户名、密码、主机名等认证。

2、  认证成功后,MySQL解析SQL语句,创建解析书,然后对其进行各种优化,包括缓存查询,选择合适的索引等。

3、  解析,优化完成后 从存储引擎中存取数据。

 

MySQL对应基础架构的顺序执行的。

 

二、并发控制

多个读或写的操作在同一个时刻执行,就是并发执行。

并发执行会产生两个操作同时操作一条数据,比如两个用户在读一条数据,一个用户在修改这个数据,就会发生数据的不确定性,因此要进行并发控制,需要锁的机制。

1、  读写锁:

读锁也叫共享锁,互相不阻塞的,多个客户在同一时刻读同一条数据,是互不干扰的。

写锁也叫排它锁,一个写锁会阻塞其他的写锁和读锁,防止其他用户在同一时刻,读取和改写同一个数据。

2、  锁的颗粒度:

简单来讲是锁的精准度,只对修改的数据行进行精准的锁定,锁定的数据量越小,系统的并发越高。

但是加锁,解锁,检查锁,也会增加系统开销,如果不是进行数据的存储,而是进行锁的操作,系统的性能可能会因此受到影响。

大多数商业数据库,都是在表上加上行级锁,在大并发的情况下,提高系统配置,来提高并发的性能。

3、  锁策略:

一般的锁策略分为表锁和行锁,也有的是叶锁,在这里只讨论最常用的表和行锁。

表锁:

表锁是MySQL中最基本的锁策略,并且是开销最小的,它会锁住整张表,一个用户在对表进行写操作(插入,修改,删除)前,先所得写锁,这会阻塞其他用户的读写操作,因为它是锁住整个表,写锁比读锁有更高的优先级,一个写锁会被插入到读锁队列前面。

行级锁:

行级锁可以大程度的支持并发处理(但是也带来了最大的锁开销),行级锁是锁住某一行数据,比如一个用户在修改一条数据,只是把这一行数据锁定,其他的用户不能读写,但是对其他的数据是可以读写的。

 

表锁:开销小,并发低。MySima引擎是典型的表锁。

行锁:开销大,并发高。 innoDB引擎是典型的行锁。

 

三、事务

         事务是数据库的高级特性,主要是ACID特性,具体相关概念可以百度一下。

         最经典的例子就是银行卡转账,两个操作,一个是在减操作,一个是加操作,

必须保证在一个事务中完成,如果有一个未完成,要取消全部的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值