闲聊MySQL
文章平均质量分 90
在这里,想和大家闲聊一下MySQL,对MySQL的引擎、索引、查询优化、存储等方面,聊聊MySQL。
wtopps
当你的才华满足不了你的野心时,你应该滚去学习
展开
-
MySQL慢SQL探究
我们在日常开发中,一定遇见过某些SQL执行较慢的情况,我们俗称“慢SQL”,如果你对系统的接口性能要求较高的话,一定不会放过这种SQL,肯定会想办法进行解决,那么,导致慢SQL出现的原因,究竟可能都有哪些呢?这是一道经典的面试题,就此我们来研究一番,下面,我们就来好好看一下,原因可能出在哪里。本篇我们将从如下几个方面进行讨论:1、慢SQL捕获2、执行计划分析3、引擎参数配置分析让我们就此开启本次慢SQL分析之旅,Let’s go!原创 2023-01-05 09:53:22 · 2578 阅读 · 2 评论 -
为什么MySQL 8.0删除了查询缓存
MySQL在其最新的8.0版本中,删除了查询缓存(`Query Cache`)区域,就此,MySQL的`Query Cache`彻底的退出了历史舞台。在5.7版本中,MySQL已经将`Query Cache`的选项(`query_cache_type`)的缺省值设为了关闭,并在5.7.20版本中,将该配置标记为了`Deprecated`。那么MySQL经历这么多个版本的迭代后,为什么会取消该区域?`Query Cache`设计的初衷是什么?原创 2022-11-07 20:42:03 · 4930 阅读 · 1 评论 -
什么是MySQL MVCC的ReadView?
背景MySQL InnoDB RR隔离级别是否能够避免幻读?我们都知道,在MySQL InnoDB中,支持四种事物隔离级别,分别为:1、READ UNCOMMITED(未提交读):使用查询语句不会加锁,允许脏读,也就是可能读取到其他会话中未提交事务修改的数据。2、READ COMMITED(提交读):只能读取到已经提交的数据,只对记录加记录锁,而不会在记录之间加间隙锁,所以允许新的记录插入到被锁定记录的附近,所以再多次使用查询语句时,可能得到不同的结果(Non-Repeatable Read)。3原创 2021-06-27 16:02:24 · 1580 阅读 · 0 评论 -
MySQL InnoDB RR隔离级别是否能够避免幻读?
背景在MySQL的InnoDB引擎中,支持四种事务隔离级别,分别如下:1、READ UNCOMMITED(未提交读):使用查询语句不会加锁,允许脏读,也就是可能读取到其他会话中未提交事务修改的数据。2、READ COMMITED(提交读):只能读取到已经提交的数据,只对记录加记录锁,而不会在记录之间加间隙锁,所以允许新的记录插入到被锁定记录的附近,所以再多次使用查询语句时,可能得到不同的结果(Non-Repeatable Read)。3、REPEATABLE READ(可重复读):多次读取同一范围的原创 2021-04-09 14:27:01 · 766 阅读 · 0 评论 -
什么是MySQL数据空洞?
背景MySQL的数据存储在表空间中,有的时候我们删除了一张表的一半的数据,但是发现表空间文件的大小并没有减少,这是什么原因呢?MySQL数据空洞当对一条数据执行delete操作时,MySQL将数据删除后,并未将数据占用的空间返还给操作系统,而是将当前空间标记为"可复用",当有新的数据插入时,则不会重新申请空间,而是插入到"可复用"空间中,这种"可复用"空间,称之为数据空洞。MySQL官方文档对此的解释如下:After deleting a large part of a MyISAM or AR原创 2021-04-06 17:57:09 · 1923 阅读 · 0 评论 -
MySQL B+树如何实现联合索引
MySQL B+树如何实现联合索引“同学,你来画一下MySQL的B+树如何实现联合索引的?”“额,这个嘛……这个……俺不晓得……”之前大言不惭说对MySQL还算了解的我今天被这个问题糊的一脸懵逼,本着对问题的求知和探索精神,今天就来聊一聊这个问题,MySQL B+树如何实现联合索引。MySQL索引的数据结构B+树我们都知道在MySQL的InnoDB引擎中,数据的存储是基于聚簇索引来进行构建的,聚簇索引的数据结构为B+树,关于这部分的内容在之前的文章中已经讲过,这里我们再来回顾一下。传送门:闲聊原创 2021-03-09 01:10:55 · 3854 阅读 · 6 评论 -
闲聊MySQL(十):浅析主从同步
前言在前面的系列文章中,我们对MySQL内部组成结构、索引结构、查询解析等进行了分析与了解,本篇,作为本系列文章的终篇,我们来聊聊MySQL中比较重要的一个机制,数据同步机制,也就是我们常说的,主从同步。本篇基于MySQL 8.x版本。Replication Between Master and Slave一说到MySQL的主从同步,你的脑海中肯定第一反应会是binlog,没有错,我们日常...原创 2019-12-28 14:52:02 · 339 阅读 · 0 评论 -
闲聊MySQL(九):浅析SQL执行计划
文章目录前言SQL执行计划Explain输出字段idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra前言在上一篇中,我们对MySQL中SQL的执行流程与SQL的优化进行了了解,我个人提倡的观点是多用explain检查SQL的执行效率,那么怎么定义一条SQL的执行效率的优劣呢?本篇,我们就来聊一下e...原创 2019-12-18 14:50:47 · 292 阅读 · 0 评论 -
闲聊MySQL(八):查询优化
前言在上几篇中,我们对MySQL的InnoDB引擎进行深入了解,对其内部架构实现进行了分析,了解了InnoDB内部机制,也同时需要掌握高效SQL的编写技巧,才能发挥出更加出色的性能。本篇,我们就来聊一下SQL的查询优化。查询优化MySQL逻辑架构说起SQL的查询优化,我们就不得不从一条SQL的执行说起,例如一条简单的SQL语句:select * from user,当执行这条SQL语句后,...原创 2019-12-12 22:07:39 · 286 阅读 · 0 评论 -
闲聊MySQL:(七)InnoDB之索引结构
前言在前面的几篇文章中,我们对MySQL InnoDB引擎进行了详尽的介绍,请参见:XXXXXX本篇,我们继续聊InnoDB,深入了解一下InnoDB中非常重要的索引的背后实现。InnoDB索引结构索引的定义MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。就像我们想在新华字典去查找一个字,我们会在目录页寻找这个字的拼音首字母或者偏旁部首,以...原创 2019-12-04 21:53:13 · 3242 阅读 · 0 评论 -
闲聊MySQL:(六)深入分析InnoDB之锁类型
前言在前几篇中,我们对MySQL的内部结构进行了介绍,对InnoDB的内部结构和核心机制进行了了解,本篇,我们继续深入InnoDB引擎,对InnoDB的锁机制进行简要的介绍。InnoDB锁类型在前面的文章中,我们介绍过,为了高性能的支持,InnoDB实现了标准的行级锁。行级锁的意思代表着仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。因此,InnoDB可以支持较高...原创 2019-11-25 21:40:37 · 526 阅读 · 0 评论 -
闲聊MySQL:(五)深入分析InnoDB之硬盘存储架构
前言在上一篇中,我们对MySQL InnoDB的内部架构模型进行了简单的介绍,主要分析了InnoDB的内存结构,我们用下图一起来回顾一下:本篇,我们继续聊聊InnoDB,了解一下上图的右半部分,其硬盘存储架构。...原创 2019-07-18 21:23:24 · 647 阅读 · 0 评论 -
闲聊MySQL:(四)深入分析InnoDB之内存架构
在前两篇中,我们对MySQL的存储引擎InnoDB进行了简要分析,可以点击这里查看:[闲聊MySQL:(三)深入分析InnoDB之多版本控制MVCC](https://blog.csdn.net/wtopps/article/details/91629298)[闲聊MySQL:(二)存储引擎之InnoDB浅析](https://blog.csdn.net/wtopps/article/details/90938560)本篇,我们继续对InnoDB的进行分析,来了解一下InnoDB的内存架构组成。原创 2019-06-21 20:47:13 · 695 阅读 · 0 评论 -
闲聊MySQL:(三)深入分析InnoDB之多版本控制MVCC
前言在上一篇中,我们介绍了MySQL的核心存储引擎InnoDB,对其特性进行了简单的介绍,本篇,我们继续对InnoDB进行分析,了解一下其内部的重要的机制之一,多版本控制MVCC。InnoDB多版本控制(MVCC)什么是多版本控制(MVCC)?多版本控制指的是一种提高并发的技术。最早的数据库系统,只有读读之间可以并发,读写,写读,写写都要阻塞。引入多版本之后,只有写写之间相互阻塞,其他三...原创 2019-06-12 21:35:29 · 564 阅读 · 0 评论 -
闲聊MySQL:(二)存储引擎之InnoDB浅析
前言上一篇中,对MySQL中支持的引擎列表进行了简要介绍,本篇,我们来浅析一下MySQL中最为常用,也是最为重要的引擎——InnoDB。本篇主要基于MySQL官方文档,InnoDB引擎篇,官方文档地址:https://dev.mysql.com/doc/refman/5.5/en/innodb-introduction.htmlMySQL架构在介绍InnoDB引擎之前,我们先来了解一下My...原创 2019-06-05 20:45:09 · 392 阅读 · 0 评论 -
闲聊MySQL:(一)MySQL存储引擎简述
前言数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。在MySQL中,支持多种存储引擎,本篇,我们就来聊一聊MySQL中的存储引擎。本文使用的MySQL版本为5.6.26,操作系统环境为Linux CentOS。MySQL存储引擎在...原创 2019-04-13 14:30:55 · 435 阅读 · 0 评论