MySQL学习笔记(1)
2010-11-06 23:48
183 查看
第一章 MySQL架构
客户连接及认证,在服务器拥有自己的线程,每个连接所属的查询都会在指定的某个单独线程中完成、
认证方式:基于用户名、原始主机信息和口令。
对查询请求,首先查询缓存,若不存在则对查询进行解析,创建解析树,对其进行优化(优化器)
----------优化器不关心存储引擎的差异,但存储引擎可能对查询优化过程产生影响。
并发机制
1.共享锁/排他锁
2.锁粒度
MySQL锁策略由存储引擎来支持。
表锁:除了存储引擎支持外,MySQL本身能使用各种有效的表锁,例如alter table语句中,使用表锁而无需考虑存储引擎。
行锁:仅由存储引擎来支持,如Innodb
事务:
支持ACID特性
不同级别的隔离性:
READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE
mysql > SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
死锁处理:InnoDB通过回滚拥有最少排他行级锁的事务来处理死锁。
事务日志:预写式日志
1.存储引擎更新数据在内存中的拷贝
2.将数据改变写入事务日志
3.在某个时间统一将表数据更新到磁盘中。
MySQL的事务特性
MySQL AB提供了三个事务型存储引擎:InnoDB、NDB Cluster、Falcon
1.autocommit(自动提交):除非显式的开始一个事务,否则将把每个查询视为单独一个事务自动执行。
mysql > show variables like 'AUTOCOMMIT';
2.在事务中混合使用存储引擎,MySQL服务器层并不管理事务,而是由存储引擎来实现事务的处理。这意味着在混合事务性和非事务性表的
事务中,若需要回滚时,非事务性表上做的修改将无法取消。
3.支持隐式和显式锁定。
多版本控制
InnoDB:在每个数据行中记录版本号,并为每个数据行增加两个隐含值:行的创建时间和删除时间
每开始一个事务,版本号都会递增。
在隔离级别为REPEATBLE READ时,MVCC应用方式为:
select:
——版本早于当前事务版本的数据行
——删除版本的行版本必须大于当前事务版本
Insert:
为每个新增行记录当前版本号
delete:
为每个删除行记录当前办不号,作为行删除标识。
update:
为每个需要更新的行,建立一个新的行拷贝,并为其记录当前版本号,同时也为旧行记录版本号作为旧行的删除版本标识。
客户连接及认证,在服务器拥有自己的线程,每个连接所属的查询都会在指定的某个单独线程中完成、
认证方式:基于用户名、原始主机信息和口令。
对查询请求,首先查询缓存,若不存在则对查询进行解析,创建解析树,对其进行优化(优化器)
----------优化器不关心存储引擎的差异,但存储引擎可能对查询优化过程产生影响。
并发机制
1.共享锁/排他锁
2.锁粒度
MySQL锁策略由存储引擎来支持。
表锁:除了存储引擎支持外,MySQL本身能使用各种有效的表锁,例如alter table语句中,使用表锁而无需考虑存储引擎。
行锁:仅由存储引擎来支持,如Innodb
事务:
支持ACID特性
不同级别的隔离性:
READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE
mysql > SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
死锁处理:InnoDB通过回滚拥有最少排他行级锁的事务来处理死锁。
事务日志:预写式日志
1.存储引擎更新数据在内存中的拷贝
2.将数据改变写入事务日志
3.在某个时间统一将表数据更新到磁盘中。
MySQL的事务特性
MySQL AB提供了三个事务型存储引擎:InnoDB、NDB Cluster、Falcon
1.autocommit(自动提交):除非显式的开始一个事务,否则将把每个查询视为单独一个事务自动执行。
mysql > show variables like 'AUTOCOMMIT';
2.在事务中混合使用存储引擎,MySQL服务器层并不管理事务,而是由存储引擎来实现事务的处理。这意味着在混合事务性和非事务性表的
事务中,若需要回滚时,非事务性表上做的修改将无法取消。
3.支持隐式和显式锁定。
多版本控制
InnoDB:在每个数据行中记录版本号,并为每个数据行增加两个隐含值:行的创建时间和删除时间
每开始一个事务,版本号都会递增。
在隔离级别为REPEATBLE READ时,MVCC应用方式为:
select:
——版本早于当前事务版本的数据行
——删除版本的行版本必须大于当前事务版本
Insert:
为每个新增行记录当前版本号
delete:
为每个删除行记录当前办不号,作为行删除标识。
update:
为每个需要更新的行,建立一个新的行拷贝,并为其记录当前版本号,同时也为旧行记录版本号作为旧行的删除版本标识。
相关文章推荐
- MySQL 学习笔记 一
- 慕课学习之mysql笔记:primary key与unique key
- mysql的event学习笔记---新特性
- mysql源码学习笔记:内存管理模块MEM_ROOT
- MySQL学习笔记(1)
- 14.笔记 MySQL学习——删除更新已有行
- MySQL学习笔记第10课(共10课)
- Mysql学习笔记九,优化篇,SQL优化
- linux下c语言学习笔记——操作mysql
- Mysql学习笔记二十二——常用函数
- mysql学习笔记五----存储过程
- MYSQL学习笔记(十一)联结
- mysql存储过程学习笔记--变量、参数、注释
- MySQL学习笔记二
- PHP与MySQL学习笔记9:创建Web数据库
- mysql学习笔记
- MySQL学习笔记(二):MySQL数据类型汇总及选择参考
- mysql学习笔记[1]
- mysql基础学习笔记
- mysql 学习笔记 定义一个存储方法