![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL 实战45讲学习笔记
文章平均质量分 76
翊无忧
努力的女孩,运气总不会太差
展开
-
06 全局锁和表锁:给表加字段怎么有这么多的障碍?
数据库锁的设计的初衷是为了解决并发问题,根据加锁的范围,Mysql 中的锁可以分为全局锁,表级锁和行锁三种。6.1、全局锁全局锁就是对整个数据库实例进行加锁,Mysql 提供了一个加全局读锁的命令:Flush tables with read lock (FTWRL 用读锁刷新表),当你需要让整个库处于只读状态时,可以使用这个命令,之后会导致其他线程的以下语句被阻塞:数据更语句(数据的增删改),数据定义语句(包括建表,修改表结构等)和更新类事务的提交语句。全局锁的典型的使用场景是做全库逻辑备份,也就原创 2022-04-12 14:29:57 · 222 阅读 · 0 评论 -
05 深入浅出索引(下)
假设有个表其中主键 ID,表中含有字段 k,k 上添加索引。表中R1~R5的(ID,k)值分别为(100,1)、(200,2)、(300,3)、(500,5)和(600,6),两棵树的示例示意图如下,接下来要使用索引 k 进行查询,其 SQL 语句为:select * from T where k between 3 and 5,要经历几次 B+树 的搜索呢?扫描了多少行呢?5.1、查询流程1.在 k 索引的 B+树 上进行搜索获取到 k=3 所对应的 ID=300 的值。2.在 ID 索引的 B原创 2022-04-12 14:24:57 · 573 阅读 · 0 评论 -
04 深入浅出索引(上)
4.1、使用索引的目的使用索引是为了提高查询的效率,对于数据库表而言,使用索引查找类似于使用书的目录查找文章类似。4.2、索引常见的模型类型哈希表键-值(key-value)存储数据的结构,使用不同的 key 经过哈希算法算出在哈希表中某个桶的位置,之后由于哈希冲突的原因,所查找的位置上可能有不同 key 算出的相同的哈希值,因此使用拉链法将这些发生冲突的 Entry 对象通过单链表的形式相连接,因此如果在查询的时候遇到需要在单链表中在查询的情况,需要一个个的遍历链表上的结点比较 key 值原创 2022-04-12 14:17:51 · 739 阅读 · 0 评论 -
03 事物隔离:为什么你改了我还是看不见?
3.1、隔离性与隔离级别事务具备的特性:原子性,一致性,隔离性,持久性。当 Mysql 数据库中同时有多个事务在执行就有可能会出现脏读,不可重复读,幻读的问题,为了解决这些问题,就有了隔离级别的概念,但是需要注意的是,使用的隔离级别越高,其事务的执行效率就会越低,因此需要找到一个平衡点。(1)隔离级别的种类读未提交(read uncommitted)一个事务还未提交就被别的事务看到了例如:事务 A 启动后在对数据 A=1 执行加一操作后还未提交事务,此时事务 B 启动读取数据 A 返回的原创 2022-04-12 14:14:01 · 158 阅读 · 0 评论 -
02 日志系统:一条 SQL 更新语句是如何执行的?
问题:在 Mysql 中可以将数据库恢复到半个月以内的任意秒的状态,是如何实现的?2.1、SQL 更新语句的执行过程与执行一条 SQL 语句的流程类似:使用连接器将客户端与服务器之间建立起连接,提及过由于当某个表进行更新,那么其该表对应在查询缓存中的记录会被清空,建立连接后进入分析器进行词法语法分析判断得出该 SQL 语句是一条更新语句,操作的表是表 T,还有其筛选的字段及其操作的字段进行分析。之后进入优化器,优化器选择合适的索引,最后进入执行器,执行器调用引擎提供的接口找到表 T 中要进行更新的记录原创 2022-04-12 14:08:58 · 561 阅读 · 0 评论 -
01 基础架构:一条 SQl 查询语句是如何执行的?
1.1、Mysql 基本逻辑架构示意图1.1.1 Mysql 分层大体来说,Mysql 可以分为两层:Server 层,存储引擎层。Server 层组成成分:连接器,查询缓存,分析器,优化器,执行器等功能:蕴含了 Mysql 大多数的核心服务功能,以及所有的内置函数(如日期,时间,数学和加密函数等),所有的跨存储引擎的功能都在这一层实现,比如存储过程,触发器,视图等。存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB,MyISAM,Memory 等多个存储引擎。现在最原创 2022-04-12 14:04:01 · 105 阅读 · 0 评论