高性能Mysql(上 基础篇)

一、架构

1、连接/线程处理,客户端连接时会在服务器进程中拥有一个线程去执行操作,并且该线程会被缓存(类似于java的线程池机制)。

2、查询解析、分析、优化、缓存已经所有内置函数,存储引起功能在这一层实现。

3、存储引擎,负责数据的存储和提取,服务器通过api与存储引擎进行通信

逻辑架构图

 

二、并发控制

尽量只锁定需要修改的部分数据,而不是所有资源

1、表锁:如:进行alter table之类的操作

2、行锁,只在存储引擎层实现,mysql服务层没有实现。

三、事务 

ACID

原子性:事务被视为不可分割的单元

一致性:数据库总是从一个一致性状态转换到另一个一致性状态

隔离性:事务所做的修改在提交前,对其他事务时不可见的

持久性:事务一旦提交,所做的修改会永久保存到数据库中

事务隔离级别

mysql的事务隔离级别是repeatable read(可重复读),保证在同一个事务中多次读取同样的记录结果是一致的。会有幻读风险,mvcc进行解决这个问题。

死锁

当多个事务以不同顺序锁定资源时(事务1where b=1 where b=2;和事务2 where b=2 where b=1),就可能产生死锁。

数据库有死锁检验超时机制,Innodb检测到死锁循环依赖时会立刻返回一个错误。持有最少行的排它锁事务进行回滚。

四、多版本并发控制(MVCC)

1、InnoDB的mvcc,是通过在每行激烈后面保存两个隐藏的列来实现的。一列时创建时间版本号,一列是删除时间版本号。

2、每开启一个事务,系统版本号会自动递增

五、存储引擎

简介

MySQL将每个数据库保存为数据目录下的一个子目录,创建表时会在这个目录下建立tablename.jrm文件

window系统大小写敏感,unix系统大小写不敏感。

InnoDB

1、被设计处理大量短期事务,性能好和自动崩溃恢复特性

2、采用MVCC支持高并发,事务隔离级别是repeatable read(可重复读),通过间隙锁防止幻读,使得其不仅仅锁定查询涉及的行,还会对索引中的间隙进行锁定,防止幻读行的插入。

3、基于聚簇索引建立的,Mysql其它索引不支持热备份。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值