您的位置:首页 > 数据库 > MySQL

《高性能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

- 默认选项

-


- 设置隔离级别

-
mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITED


- 在事务中使用混合储存引擎

- InnoDB 事务型

- 回滚不会出现问题

- MyISAM 非事务型

- 回滚,表更改无法撤销,导致数据不一致

- 显式和隐式锁定

- InnoDB 采用两段锁协议,two-phase locking protocol

- 随时可以执行锁定

- 在commit或者roolback才会释放

多版本并发控制 MVCC

- 行级锁变种,可以大程度避免加锁操作

- 保存数据在某个时间点的[快照]

- 主要思想是,每次增删改查,都要记录,或者比较版本号与当前系统版本号是否相同
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql