随笔分类 - Mysql
摘要:1. Mysql基础架构:sql查询语句的执行过程 1.1 MySQL基本架构 Mysql分为: Server层:包含所有内置函数,所有跨存储引擎的功能都在这一层:存储过程、触发器、视图等 连接器 查询缓存 分析器 优化器 执行器 存储引擎层:负责数据的存储和提取,是插件式的,支持InnoDB、My
阅读全文
摘要:6. 行锁 MySQL的行锁是引擎层各引擎自己实现的,不是所有引擎都支持行锁,MyISAM 就不支持。 行锁针对的数据表中行记录的锁,比如事务a更新某一行,事务b也要更新同一行,那必须等事务a执行完。 6.1 二阶段锁 锁的添加与释放分到两个阶段进行,之间不允许交叉加锁和释放锁。 也就是在事务开始执
阅读全文
摘要:7. 事务隔离的具体实现 不可重复读: 事务开启的时候创建视图 → 之后事务执行期其他事务修改了数据,当前事务查看到的和开始事务时的一样。从此看出,事务读数据的时候是隔离的。 但是当前事务修改数据的时候,如果其他事务先对该行数据进行修改,则触发行锁,需要等其他事务执行完,释放锁后,才能执行。这里感觉
阅读全文
摘要:1.唯一索引和普通索引 1. 1 查询过程中的不同 在索引树查询的过程,通过B+树从树根开始,按层搜索到叶子节点。 比如select id from T where k=5,搜索到的就是下图中右下角的数据页,然后可以认为数据页内部通过二分法来定位记录。 普通索引:查找到满足条件的第一条记录后,接着搜
阅读全文
摘要:3.事务 Mysql中事务支持是在引擎层实现的,mysql支持多引擎,但是不是所有引擎都支持事务,mysql原生的引擎MyISAM引擎就不支持事务,这也是InnobDb使用的更多的原因。 3.1 隔离性 事务要保证ACID(Atomicity、Consistency、Isolation、Durabi
阅读全文
摘要:5. 全局锁和表锁 5.1 全局锁 # 对整个数据库实例加锁,加锁后只能读 flush tables with read lock(FTWRL) # 释放全局锁 unlock tables 5.1.1 使用全局锁的场景: 在某些情况下,我们需要使用到全局锁,比如在做全库逻辑备份。 5.1.2 不
阅读全文
摘要:数据库 笔记内容 SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。 1. 数据查询语言DQL 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块: SELECT FROM WHERE 2 .数据操纵语言D
阅读全文