![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
Snippers
个人公众号:才浅的每日python。欢迎来交流
展开
-
B树和B+树区别及适用场景
B树和B+树相比,有两个最核心的区别: 1、B树没有内部节点和叶子结点的区分,它的每个节点都是即存了key又存了data。 2、由于没有内部节点和叶子结点的区分,使得B+树没有将叶子结点用链表串联起来的结构。 这两个区别给B树带来了两个检索的特点: 1、进行单个key查询时,B树最快可以在O(1)的时间代价内就查到。而从平均时间代价来看,会比B+树稍快一些。但波动会比较大,因为每个节点既存key又存data会使得树变高,底层的节点的IO次数就会变多。 2、进行范围查询时,由于缺乏叶子结点的连.原创 2021-04-25 11:51:05 · 3455 阅读 · 2 评论 -
MySQL理论汇总大纲——日志和主备相关
一、日志系统 redo log(重做日志): 当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log里面,并更新内存,同时InnoDB 引擎会在适当的时候,将这个操作记录更新到磁盘里面。 WAL(Write-Ahead Logging):关键点即先写日志,再写磁盘。将磁盘的随机写变成了顺序写。 WAL 机制主要得益于两个方面: 1、redo lo...原创 2020-12-17 15:42:04 · 138 阅读 · 0 评论 -
一条SQL更新语句是如何执行的?
MySQL 的逻辑架构图如下(图源丁奇老师专栏《MySQL实战45讲》): SQL更新语句执行流程: 1.首先客户端通过tcp/ip发送一条sql语句到server层的SQL interface。 2.SQL interface接到该请求后,先对该条语句进行解析,验证权限是否匹配。 3.验证通过以后,分析器会对该语句分析,是否语法有错误等。 4.接下来是优化器生成相应的执行计划,选择最优的执行计划。 5.之后执行器根据执行计划执行这条语句。在这一步会去open table,如果该table上有MDL原创 2020-12-16 23:33:09 · 144 阅读 · 0 评论 -
MySQL理论汇总大纲——锁相关
1、根据加锁范围分为:全局锁、表级锁、行锁 全局锁 1、范围:对整个数据库实例加锁。 2、MySQL提供加全局读锁的方法:Flush tables with read lock(FTWRL)。 3、这个命令可以使整个库处于只读状态。使用该命令之后,数据更新语句、数据定义语句和更新类事务的提交语句等操作都会被阻塞。 4、使用场景:全库逻辑备份。 5、风险 ...原创 2020-12-16 16:15:41 · 289 阅读 · 0 评论 -
MySQL理论汇总大纲——事务相关
1、事务特性 原子性 一致性 隔离性 持久性 2、多事务同时执行时会出现的问题 脏读 当前事务读到的数据是别的事务想要修改成为的但是没有修改成功的数据。 不可重复读 当前事务先进行了一次数据读取,然后再次读取到的数据是别的事务修改成功的数据,导致两次读取到的数据不匹配,也就照应了不可重复读的语义。 针对update或delete 幻读 当前事务读第一次取到的数据比后来读取到数据条...原创 2020-12-16 00:15:42 · 120 阅读 · 0 评论 -
MySQL理论汇总大纲——索引相关
索引相关 1、索引的作用: 提高数据查询效率 2、常见索引模型: 哈希表、有序数组、搜索树 哈希表:键 - 值(key - value) 哈希思路:把值放在数组里,用一个哈希函数把key换算成一个确定的位置,然后把value放在数组的这个位置 哈希冲突的处理办法:链表 哈希表适用场景:只有等值查询的场景 有序数组: 按顺序存储。查询用二分...原创 2020-12-15 18:24:42 · 144 阅读 · 0 评论