![](https://img-blog.csdnimg.cn/317230aae4004cf7857eee957b7c9472.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL性能优化+原理+实战
文章平均质量分 97
以实际案例进行讲解,逐步深入SQL 优化各个环节,图文并茂掌握入SQL 优化的原理和方法。
multis
CSDN实力新星,数据库领域优质创作者,CSDN & 阿里云 & 知乎 等平台优质作者,擅长Oracle & MySQL等主流数据库系统的维护和管理等
展开
-
很不错的一篇文章,值得点赞收藏,带你全面了解MySQL性能调优、错误代码总结和全局参数配置(持续更新中ing)
以实际案例进行讲解,逐步深入SQL 优化各个环节,图文并茂掌握入SQL 优化的原理和方法。次文章主要收集mysql常见错误及解决方法、参数文件详解和mysql性能优化详解目录原创 2023-04-20 13:59:24 · 1885 阅读 · 32 评论 -
一文带你了解MySQL之锁
MVCC和加锁是解决并发事务带来的一致性问题的两种方式。共享锁简称为S锁,独占锁简称为X锁。S锁与S锁兼容;X锁与S锁不兼容,与X锁也不兼容。事务利用MVCC进行的读取操作称为一致性读,在读取记录前加锁的读取操作称为锁定读。原创 2023-06-09 08:40:11 · 2189 阅读 · 55 评论 -
一文带你了解MySQL之事务隔离级别和MVCC
并发的事务在运行过程中会出现一些可能引发一致性问题的现象原创 2023-06-05 16:40:08 · 3387 阅读 · 98 评论 -
一文带你了解MySQL之undo日志
有的时候事务执行过程中可能已经修改了很多东西,执行到一半失败,为了保证事务的,我们需要把东西改回原先的样子,这个过程就称之为回滚原创 2023-06-01 17:41:23 · 4766 阅读 · 106 评论 -
一文带你了解MySQL之redo日志
我们知道`InnoDB`存储引擎是以`页`为单位来管理存储空间的,我们进行的增删改查操作其实本质上都是在访问页面(包括读页面、写页面、创建新页面等操作)。我们前边学习`Buffer Pool`的时候说过,在真正访问页面之前,需要把在磁盘上的页缓存到内存中的`Buffer Pool`之后才可以访问。但是在学习`事务`的时候又强调过一个称之为`持久性`的特性,就是说对于一个已经提交的事务,在事务提交后即使系统发生了崩溃,这个事务对数据库中所做的更改也不能丢失原创 2023-05-27 19:05:31 · 1056 阅读 · 25 评论 -
一文带你了解MySQL之事务的简介
事务(`Transaction`)是一组SQL组成的执行单元(Unit),是数据库并发控制和恢复回滚的基本单位。一个事务中可能包含多个SQL,要么都失败,要么都成功原创 2023-05-27 19:03:22 · 755 阅读 · 2 评论 -
一文带你了解MySQL之optimizer trace神器的功效
这对于一部分喜欢刨根问底的小伙伴来说简直是灾难:“我就觉得使用其他的执行方案⽐`EXPLAIN`输出的这种方案强,凭什么优化器做的决定和我想的不一样呢?原创 2023-05-27 18:57:21 · 700 阅读 · 1 评论 -
一文带你了解MySQL之Explain执行计划
一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的`执行计划`,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等原创 2023-05-26 18:28:26 · 1224 阅读 · 63 评论 -
一文带你了解MySQL之InnoDB统计数据是如何收集的
InnoDB以表为单位来收集统计数据,这些统计数据可以是基于磁盘的永久性统计数据,也可以是基于内存的非永久性统计数据。原创 2023-05-22 16:59:28 · 2367 阅读 · 44 评论 -
一文带你了解MySQL之基于成本的优化
MySQL执行一个查询可以有不同的执行方案,它会选择其中成本最低,或者说代价最低的那种方案去真正的执行查询。I/O成本我们的表经常使用的MyISAM、InnoDB存储引擎都是将数据和索引都存储到磁盘上的,当我们想查询表中的记录时,需要先把数据或者索引加载到内存中然后再操作。这个从磁盘到内存这个加载的过程损耗的时间称之为I/O成本。CPU成本读取以及检测记录是否满足对应的搜索条件、对结果集进行排序等这些操作损耗的时间称之为CPU成本。原创 2023-05-22 13:43:42 · 1108 阅读 · 36 评论 -
一文带你了解MySQL之连接原理
连接的本质就是把各个连接表中的记录都取出来依次匹配的组合加⼊结果集并返回给用户原创 2023-05-20 10:49:42 · 3911 阅读 · 61 评论 -
一文带你了解MySQL之单表访问方法
今天学写了MySQL针对单表的访问方式(access method)以及优化特性-索引合并(index merge)的知识点,下面我们来总结一下:const:通过主键或者唯一二级索引列来定位一条记录的访问方法定义为:const,意思是常数级别的,代价是可以忽略不计的。ref:搜索条件为二级索引列与常数等值比较,采用二级索引来执行查询的访问方法称为:ref。ref_or_null:使用二级索引而不是全表扫描的方式执行该查询时,这种类型的查询使用的访问方法就称为:ref_or_null。原创 2023-05-17 20:06:37 · 1528 阅读 · 22 评论 -
一文带你了解MySQL之InnoDB表空间
今天我们学习了关于InnoDB存储引擎表空间的结构,通篇几乎全是概念、图片,这部分知识本就枯燥乏味,但是’春天’马上就到来,最枯燥乏味的内容马上结束了。由于今天的内容都是偏理论的概念,加上篇幅原因,就不做知识点总结了。后面我会读单独开辟一文总结我们这几天学习的记录结构、数据页结构、B+树索引、表空间结构,同时还会浅谈一些有关数据结构的知识,大家拭目以待。今天的文章我第一次读原著时,一脸懵逼,好像知道了表空间结构是怎么一回事儿,但是好像又讲不出来什么,所以建议大家多看几次,我相信一句话:书读百遍,其义自见。原创 2023-05-16 14:29:48 · 856 阅读 · 18 评论 -
一文带你了解MySQL之数据目录
我们前边提到了MySQL的几个系统数据库,这几个数据库包含了MySQL服务器运行过程中所需的一些信息以及一些运行状态信息,我们现在稍微了解一下mysql这个数据库的核心,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息等。这个数据库保存着MySQL服务器维护的所有其他数据库的信息,比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引等。这些信息并不是真实的用户数据,只是一些描述性信息,有时候也称之为元数据。原创 2023-05-16 11:16:22 · 692 阅读 · 6 评论 -
一文带你了解MySQL之B+树索引的使用
上边只是我们在创建和使用B+树索引的过程中需要注意的一些点,后边我们还会陆续介绍更多的优化方法和注意事项,敬请期待。B+树索引在空间和时间上都有代价,所以没事别瞎建索引B+树索引适⽤于下边这些情况:全值匹配匹配左边的列匹配范围值精确匹配某⼀列并范围匹配另外⼀列用于排序用于分组在使用索引时需要注意下边这些事项:只为用于搜索、排序或分组的列创建索引为列的基数⼤的列创建索引索引列的类型尽量小可以只对字符串值的前缀建立索引。原创 2023-05-15 17:03:09 · 1619 阅读 · 23 评论 -
一文带你了解MySQL之B+树索引的原理
索引是创建在表上的,对数据库表中一列或多列的值进行排序的一种结构,可以提高查询的速度。通俗的来说,数据库中存储的数据比作字典的话,索引就相当于是字典中的目录。如果没有索引,查找一个数据就需要从第一页开始全局检索直至找到需要的诗句,有了索引可以先在目录中根据拼音查找到该数据所在的页数,因此通过索引可以大大减少了查询时间原创 2023-05-12 17:11:35 · 3962 阅读 · 8 评论 -
一文带你了解MySQL之InnoDB 数据页结构
学完了记录结构,我们该学数据页的结构,前边我们简单的提了一下页的概念,它是Innodb管理存储空间的基本单位,页的大小默认16KB,InnoDB为了不同的目的而设计了许多种不同类型的页,比如存放表空间头部信息的页,存放Insert Buffer信息的页,存放INODE信息的页,存放undo日志信息的页等等等等。而我们聚焦的是那些存放我们表中记录的那种类型的页,官方称这种存放记录的页为索引(INDEX)页,鉴于我们还没有了解过索引是个什么东系,而这些表中的记录就是我们日常口中所称的数据,所以目前还是叫这种存放原创 2023-05-09 17:25:16 · 1281 阅读 · 18 评论 -
一文带你了解MySQL之InnoDB 记录结构【下篇】
InnoDB定义了4种行格式,每种行格式的记录结构是不同的,同时我们还学习了记录结构中对定长、变长的数据类型的存储方式以及行溢出等相关知识原创 2023-05-08 13:05:54 · 516 阅读 · 17 评论 -
一文带你了解MySQL之InnoDB 记录结构【上篇】
我们平时是以记录为单位来向表中插⼊数据的,这些记录在磁盘上的存放⽅式也被称为⾏格式或者记录格式。设计InnoDB存储引擎到现在为⽌设计了4种不同类型的⾏格式,我会一一讲解原创 2023-05-07 23:14:43 · 668 阅读 · 25 评论 -
一文带你了解MySQL之Server层的内存结构
MySQL Server层的一些内存结构原创 2023-05-05 13:29:53 · 464 阅读 · 1 评论 -
一文带你了解MySQL之Change Buffer
更改缓冲区是一种特殊的数据结构,当二级索引页不在缓冲池中时,它将更改缓存到二级索引页。缓冲的更改可能来自INSERT、UPDATE或DELETE操作(DML),稍后当其他读操作将页面加载到缓冲池中时,这些更改将被合并。原创 2023-05-05 11:29:00 · 1042 阅读 · 1 评论 -
一文带你了解MySQL之Log Buffer
讲解了Redo Log和MySQL InnoDB Log Buffer的工作原理,通过流程图的方式来说明Redo Log三种刷盘策略的工作流程,偏理论的知识,内容比较少也很好理解原创 2023-05-05 10:28:18 · 1495 阅读 · 2 评论 -
一文带你了解MySQL之Doublewrite Buffer
详细介绍MySQL InnoDB Doublewrite Buffer的工作原理,通过流程图的方式来说明Doublewrite Buffer的工作流程,偏理论的知识,内容比较少也很好理解原创 2023-05-04 13:17:54 · 1768 阅读 · 7 评论 -
一文带你了解MySQL之Adaptive Hash Index
MySQL之Adaptive Hash Index详解原创 2023-05-03 16:22:32 · 1499 阅读 · 22 评论 -
一文带你了解MySQL之后台线程
MySQL的服务实现通过后台多个线程、内存池、文件交互来实现对外服务的,不同线程实现不同的资源操作,各个线程相互协助,共同来完成数据库的服务。原创 2023-04-29 22:33:32 · 939 阅读 · 2 评论 -
一文带你了解MySQL之InnoDB_Buffer_Pool
在MySQL5.5之前,广泛使用的和默认的存储引擎是MyISAM。MyISAM使用操作系统缓存来缓存数据。InnoDB需要innodb buffer pool中处理缓存。所以非常需要有足够的InnoDB buffer pool空间原创 2023-04-28 18:55:01 · 1154 阅读 · 1 评论 -
看了这一篇文章,你还不懂MySQL体系结构,你来找我
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。在对MySQL深入的优化中,我们首先要了解MySQL的一个完整的体系结构原创 2023-04-25 19:36:23 · 542 阅读 · 15 评论 -
一文带你了解MySQL之用户和权限原理
可能是史上最详细的MySQL用户和权限原理和实战原创 2023-04-22 13:43:04 · 1987 阅读 · 52 评论 -
Linux安装MySQL 【重新认识MySQL上篇】
详解MySQL是怎样运行的,MySQL的多种安装和卸载方法,适合新手原创 2023-04-12 17:36:35 · 964 阅读 · 28 评论 -
mysql字符集和校验规则(史上最全)
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。原创 2023-04-15 15:50:19 · 930 阅读 · 4 评论 -
mysql的启动关闭原理和实战、及常见的错误排查
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一原创 2023-04-15 13:47:12 · 945 阅读 · 9 评论