首页
MySQL
生活
友链
关于
  • MySQL subquery、dependent subquery、uncacheable subquery 是怎么执行的?

    2022-02-24 · 预计阅读 6 分钟 · MySQL 子查询

    前几天在看官方文档的时候,看到关于 dependent subquery 和 uncacheable subquery 的一句说明,被搞的神魂颠倒的,各种百度、谷歌也没有找到能够解释清楚这句话是什么意思的,去折腾了几天 5.7.35 版本的源码,对于 subquery、dependent subquery、uncacheable subquery 的执行过程,多了一些了解。


    阅读更多
  • 放下急躁,接受自己慢慢变好

    2022-02-24 · 预计阅读 1 分钟 · 随笔

    回顾过去,从有记忆开始,总是看到别人有什么,自己也想马上得到,看到别人很厉害,自己也想马上变得厉害。这种情况持续了那么多年,就像是与生俱来的,从来也没觉得这是个问题。


    阅读更多
  • 搞清楚 MySQL 派生表、物化表、临时表

    2022-02-23 · 预计阅读 3 分钟 · MySQL

    以前只知道 MySQL 里有临时表,后来随着花在 MySQL 上的时间越来越多,奇怪的知识增加了不少,比如:物化、半连接、首次匹配……


    阅读更多
  • 要做到,先从知道能够做到开始

    2022-02-23 · 预计阅读 1 分钟 · 随笔

    心里学上有个词叫习得性无助,是美国心里学家塞利格曼 1967 年在研究动物时提出的,他用狗做了一项实验,起初把狗关在笼子里,只要蜂音器一响,就给狗以电击,狗关在笼子里逃避不了电击,多次实验后,蜂音器一响,在电击狗之前,先把笼门打开,此时狗不但不逃,而是不等电击出现就先倒在地上开始呻吟和颤抖,本来可以主动逃避却绝望地等待痛苦的来临,这就是习得性无助。


    阅读更多
  • 化整为零,锻炼从今天开始

    2022-02-22 · 预计阅读 1 分钟 · 随笔

    大概从 2010 年开始,为了减肥开始健身,到现在陆陆续续的,已经有过几次持续一段时间的经历,长的有两年,短的有半年,基本上都因为各种原因中断了很长时间,等到觉得浑身上下哪都不舒服的时候,又下定决定开始健身。


    阅读更多
  • 新开始,新生活

    2022-02-21 · 预计阅读 1 分钟 · 随笔

    疫情已经持续两年多了,给生活的各方面带来了不便,对经济产生了冲击,很多人失业,也有很多人挣的比以前少了,从整体上来看是件坏事。放到个人层面来看,对于一部分人来说,可能并不一定是坏事,反而在某种程度上是件好事。


    阅读更多
  • MySQL 写入记录到连接缓冲区代码分析

    2022-02-17 · 预计阅读 6 分钟 · 5.7.35 源码 Join

    JOIN_CACHE::write_record_data() 是往连接缓冲区中写入记录的方法,BNL、BKA、BKA_UNIQUE 都是调用这个方法往连接缓冲区写入数据,本文基于 MySQL 5.7.35 版本的源码对该方法进行详细的分析


    阅读更多
  • MySQL Inner Join 执行流程分析

    2022-02-16 · 预计阅读 12 分钟 · 5.7.35 源码 Join

    本文基于 MySQL 5.7.35 在代码层面对内连接的 SQL 语句进行框架性分析,主要是介绍在连接执行过程中,涉及到哪些比较关键的环节,在这些环节干了什么事情,不会涉及到很细节的代码逻辑层面,不然整篇文章就会非常长了


    阅读更多
  • MySQL 数据在连接缓冲区是怎么存储的?

    2022-02-15 · 预计阅读 3 分钟 · Join

    MySQL 连接缓冲区(Join Buffer)是用于提升多表连接查询的速度的,连接查询的执行简化逻辑如下:

    • 从存储引擎中读取驱动表的中的记录,把满足条件的记录存入连接缓冲区
    • 当连接缓冲区满时,循环从存储引擎读取被驱动表的记录
    • 每读取一条被驱动表的记录,遍历临时存放到连接缓冲区中的驱动表的记录
    • 判断被驱动表和驱动表的记录是否匹配,如果匹配,且被驱动表是连接操作的最后一个表,则把匹配的记录发送给客户端(只发送客户端需要的字段)

    阅读更多
  • BNL 缓冲区初始化代码分析

    2022-02-11 · 预计阅读 5 分钟 · 源码 5.7.35 Join

    BNL 是 Block Nested Loop 的缩写,表示 基于块的嵌套循环连接,是 MySQL 优化连接查询的一种方式

    BNL 缓冲区的初始化,是执行连接过程中使用连接缓冲区的基础,本文会详细分析 JOIN_CACHE_BNL::init() 方法及其调用的其它用于初始化的相关方法


    阅读更多
    • ««
    • «
    • 1
    • 2
    • 3
    • 4
    • 5
    • »
    • »»

Csch


MySQL 源码研究公众号:一树一溪

最新文章

  • 修改 lower_case_table_names 导致 frm 文件删除失败
  • MySQL 相关子查询
  • MySQL 全表扫描成本计算
  • MySQL 不相关子查询怎么执行?
  • where field in(...) 是怎么执行的?
  • MySQL 连接怎么保活?
  • MySQL 数据字典表
  • MySQL 崩溃恢复

分类

MYSQL 44 生活 4

标签

源码 32 MYSQL 29 5.7.35 22 8.0.29 12 INNODB 5 JOIN 5 随笔 4 子查询 2 工具 2 查询优化 2 FRM 1 UNDO日志 1 索引 1 表结构 1

Copyright  . All Rights Reserved