MySQL学习笔记(1)
来源:互联网 发布:编程用什么语言好 编辑:程序博客网 时间:2024/05/17 18:17
第一章 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:
为每个需要更新的行,建立一个新的行拷贝,并为其记录当前版本号,同时也为旧行记录版本号作为旧行的删除版本标识。
- MYSQL学习笔记(1)
- MySQL学习笔记(1)
- mysql学习笔记(1)
- MySQL学习笔记(1)
- mysql学习笔记(1)
- mysql学习笔记(1)
- MySQL学习笔记(1)
- MYSQL学习笔记(1)
- MySQL学习笔记(1)
- MySQL学习笔记(1)
- mysql学习笔记(1)
- MySQL学习笔记1(mysql数据类型)
- MySQL学习笔记(1)--mysql 数据类型
- Mysql学习笔记(1)
- MySQL学习笔记1
- MySQL学习笔记1
- MySql学习笔记1
- MySQL学习笔记1
- vsFtpd的配置项说明
- Ubuntu 下安装使用vsFtp的步骤
- 面向程序员的数据库访问性能优化法则
- [转] 双线双IP双网卡配置
- 第十周总结
- MySQL学习笔记(1)
- first time to write a blog
- 微软PDC10Party北京站活动掠影
- 解决ubuntu下打开windows中的txt文件为乱码的方法
- javascript服务器交互型可编辑表格
- 快速创建表的方法(Oracl,Sqlserver,DB2)
- 杨辉三角(1)
- IM这块肥肉
- JPEG 压缩与解压缩