《高性能mysql 第一章》刷书笔记
2016-06-30 18:44
239 查看
《高性能mysql 第一章》刷书笔记
mysql架构与历史
架构逻辑
MySQL服务器逻辑框架图
关键在于第二层,查询,解析,优化等等操作,跨储存过程、触发器、视图等
第三层则包含了储存引擎,负责mysql数据的储存与提取,是通信层
安全性
- 每个客户端连接:对应服务器中的一个线程
- SSL:安全套接字
优化
解析:解析树
优化:请求优化解释
并发控制
读写锁
- 共享锁
- 排他锁
- 读锁
- 写锁
锁粒度
锁定的数据量越少,并发程度越高
表锁,锁定整张表
行级锁,最大程度支持并发
事务
一个事务内的语句,只能全部成功,或者全部失败
ACID测试
atomicity 原子性
一个事务必须为一个最小工作单元
consistency 一致性
isolation 隔离性
- 在完成之前,对其他事务不可见
durability 持久性
隔离级别
未提交读 READ UNCOMMITTED
- 事务即使没有提交,也是可见,破坏了原子性,造成脏读,不要使用
提交读 READ COMMITTED
- 事务开始之前,只能看见已经提交的修改
- 可能导致两次查询,得到不一致的结果
可重复读 REPEATABLE READ
- 幻读 Phantom Read:在读取某个范围记录时,另一个事务又插入新的记录,导致出现幻行
可串行化 SERIALIZABLE
- 在读每一行数据都加锁
死锁
MySQL事务
- 自动提交 AUTOCOMMIT
- 默认选项
-
- 设置隔离级别
-
- 在事务中使用混合储存引擎
- InnoDB 事务型
- 回滚不会出现问题
- MyISAM 非事务型
- 回滚,表更改无法撤销,导致数据不一致
- 显式和隐式锁定
- InnoDB 采用两段锁协议,two-phase locking protocol
- 随时可以执行锁定
- 在commit或者roolback才会释放
多版本并发控制 MVCC
- 行级锁变种,可以大程度避免加锁操作
- 保存数据在某个时间点的[快照]
- 主要思想是,每次增删改查,都要记录,或者比较版本号与当前系统版本号是否相同
mysql架构与历史
架构逻辑
MySQL服务器逻辑框架图
关键在于第二层,查询,解析,优化等等操作,跨储存过程、触发器、视图等
第三层则包含了储存引擎,负责mysql数据的储存与提取,是通信层
安全性
- 每个客户端连接:对应服务器中的一个线程
- SSL:安全套接字
优化
解析:解析树
优化:请求优化解释
并发控制
读写锁
- 共享锁
- 排他锁
- 读锁
- 写锁
锁粒度
锁定的数据量越少,并发程度越高
表锁,锁定整张表
行级锁,最大程度支持并发
事务
一个事务内的语句,只能全部成功,或者全部失败
ACID测试
atomicity 原子性
一个事务必须为一个最小工作单元
consistency 一致性
isolation 隔离性
- 在完成之前,对其他事务不可见
durability 持久性
隔离级别
未提交读 READ UNCOMMITTED
- 事务即使没有提交,也是可见,破坏了原子性,造成脏读,不要使用
提交读 READ COMMITTED
- 事务开始之前,只能看见已经提交的修改
- 可能导致两次查询,得到不一致的结果
可重复读 REPEATABLE READ
- 幻读 Phantom Read:在读取某个范围记录时,另一个事务又插入新的记录,导致出现幻行
可串行化 SERIALIZABLE
- 在读每一行数据都加锁
死锁
MySQL事务
- 自动提交 AUTOCOMMIT
- 默认选项
-
- 设置隔离级别
-
mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITED
- 在事务中使用混合储存引擎
- InnoDB 事务型
- 回滚不会出现问题
- MyISAM 非事务型
- 回滚,表更改无法撤销,导致数据不一致
- 显式和隐式锁定
- InnoDB 采用两段锁协议,two-phase locking protocol
- 随时可以执行锁定
- 在commit或者roolback才会释放
多版本并发控制 MVCC
- 行级锁变种,可以大程度避免加锁操作
- 保存数据在某个时间点的[快照]
- 主要思想是,每次增删改查,都要记录,或者比较版本号与当前系统版本号是否相同
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复