![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 93
贪玩的木木
这个作者很懒,什么都没留下…
展开
-
MySQL原理(十):主从架构
上一篇介绍了 MySQL 的表分区和分库分表,这一篇将介绍主从架构相关的内容。本文介绍了 MySQL 的主从架构。至此我的 MySQL 学习笔记就全部更新完毕了。学习和使用 MySQL 陆陆续续也有两三年了,从最开始只关注如何使用,到现在为了应付面试而更多的关注原理和实现,但是很多地方都只是停留在表面,并没有自己深入源码去分析和做实验来验证,只能说希望以后有机会再次学习吧。原创 2023-05-10 17:58:15 · 803 阅读 · 1 评论 -
MySQL原理(九):表分区和分库分表
上一篇介绍了 MySQL 的存储过程和触发器,这一篇将介绍表分区和分库分表相关的内容。本文介绍了 MySQL 的表分区和分库分表。下一节将介绍 MySQL 的主从架构。原创 2023-05-10 17:55:20 · 2044 阅读 · 0 评论 -
MySQL原理(八):触发器和存储过程
上一篇介绍了 MySQL 的内存管理和磁盘管理,这一篇将介绍存储过程和触发器相关的内容。DELIMITER $ -- 创建的语法:指定名称、入参、出参 CREATE PROCEDURE 存储过程名称(返回类型 参数名 1 参数类型 1 , . . . .) [ . . . 约束条件 . . . ] -- 表示开始编写存储过程体 BEGIN -- 具体组成存储过程的SQL语句.... -- 表示到这里为止,存储过程结束 END $ DELIMITER;表示指定结束标识。在 MySQL 中默认是以分号;原创 2023-05-10 17:54:15 · 1326 阅读 · 0 评论 -
MySQL原理(七):内存管理和磁盘管理
上一篇介绍了 MySQL 的日志,这一篇将介绍内存管理和磁盘管理相关的内容。本文介绍了 MySQL 内存管理和磁盘管理。(十二)MySQL之内存篇:深入探寻数据库内存与Buffer Pool的奥妙!下一节将介绍 MySQL 存储过程和触发器。原创 2023-05-10 17:53:02 · 1335 阅读 · 0 评论 -
MySQL原理(六):日志
上一篇介绍了 MySQL 的锁,这一篇将介绍日志相关的内容。undo log(回滚日志):是 Innodb 存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和 MVCC。redo log(重做日志):是 Innodb 存储引擎层生成的日志,实现了事务中的持久性,主要用于故障恢复;binlog (归档日志):是 Server 层生成的日志,主要用于数据备份和主从复制;原创 2023-05-10 17:51:25 · 546 阅读 · 0 评论 -
MySQL原理(五):锁
上一篇介绍了 MySQL 的事务,这一篇将介绍锁相关的内容。只要存在并发场景,就需要解决并发带来的问题,比如常见的脏写、脏读等等。锁是解决并发问题最常用的手段之一。MySQL 的锁机制是由存储引擎实现的,不同的存储引擎支持的锁页不同,默认的 InnoDB 存储引擎中实现的锁,按照粒度可以划分为全局锁、表级锁、行级锁。本文介绍了 MySQL 锁相关的内容,下一节将介绍 MySQL 的日志。原创 2023-05-10 17:42:34 · 834 阅读 · 0 评论 -
MySQL原理(四):事务
上一篇介绍了 MySQL 的索引,这一篇将介绍事务相关的内容。在 MySQL 的使用场景中,经常会有一个操作包含多个 SQL 语句,比如转账这个操作,至少包含从甲的账户中扣除金额和给乙的账户中增加金额这两个更新语句。那假如 MySQL 在执行途中发生了崩溃,就可能导致第一个操作成功而第二个操作失败,从而就会导致系统出错。为了解决这一类问题,MySQL 实现了事务,事务通常是由一组 SQL 组成的,这些 SQL 语句要么全部执行成功,要么全部执行失败,不会发生部分成功的情况。原子性(Atomicity)原创 2023-05-10 17:40:46 · 797 阅读 · 0 评论 -
MySQL原理(三):索引
上一篇介绍了 MySQL 的逻辑架构和执行过程,这一篇将介绍索引相关的内容。索引是用额外的数据结构,来实现快速检索目标数据的。就像字典当中的目录一样,用额外的空间来存储部分内容,从而加快检索速度。MySQL 的逻辑架构分为 Server 层和存储引擎层,其中索引和数据就位于存储引擎中,而不同的存储引擎可能有不同的实现索引的方式,比如常见的 InnoDB 和 MyISAM 使用的都是 B+Tree,但是实现方式不同。按「数据结构」分类:B+ 树索引、B 树索引、Hash 索引等。原创 2023-05-10 17:37:28 · 886 阅读 · 0 评论 -
MySQL原理(二):逻辑架构和执行流程
上一篇介绍了 MySQL 默认的 InnoDB 存储引擎是如何存储和组织数据的,这一篇将介绍 MySQL 的逻辑架构,以及分析一条 SQL 语句的具体执行过程。本文介绍了 MySQL 的逻辑架构和执行流程。逻辑架构分为 Server 层和存储引擎层。执行流程主要是在 Server 层完成的,主要由连接器、分析器、优化器、执行器完成。下一节将介绍 MySQL 的索引。原创 2023-05-10 17:31:52 · 835 阅读 · 0 评论 -
MySQL原理(一):逻辑存储结构
从本文开始,我将分享一下近期学习 MySQL 的笔记,其中大部分来源于极客时间的《MySQL实战45讲》、小林coding、以及部分其他博客和书籍。这次系列文章着重讲 MySQL 的原理部分,主要是用于面试,也就是我们常说的八股,至于基础的内容就不再介绍了。我将在后续文章中陆续介绍以下内容:存储结构、逻辑架构和执行流程、索引、事务、锁、日志、内存管理、磁盘空间管理、集群相关等。另外,如果没有额外说明,介绍的主要内容都是关于默认的 InnoDB 引擎。接下来开始正式讲解逻辑存储架构相关内容。原创 2023-05-10 17:28:59 · 2072 阅读 · 0 评论 -
MySQL学习笔记(六):小结一下(废话一下)
这次的学习笔记其实还是比较少的,才短短的五篇,简单地涉及了一下MySQL基础、数据类型、索引和三大范式,离完完整整的MySQL还差得远呢。虽然感觉很可惜,学了一通MySQL,但是留下的记录并不多,但是最近事情还是不少的,能拿出来学习并且细细地记下笔记还是很不容易的,只能是且学且珍惜了。经过这几天的学习,越发觉得MySQL真的是一门学问,以前刚刚接触后台的时候,以为数据库就是很简单的增删改查就没了,跟别人说起来也是一副很自大的样子,现在想想真是惭愧啊,年少无知呀。如果真的要把MySQL给学好,那.原创 2020-11-30 13:04:36 · 119 阅读 · 0 评论 -
MySQL学习笔记(五):数据库设计规范
数据库的设计可是一门大学问,如果没有亲手开发过好几个项目,基本上是不能真正掌握的,简单点的设计字段类型的选择、表结构的设计,复杂的还得考虑项目的体积,相应地进行分表、分库等等操作,这些就超出我的能力范畴了,我也还不具备资格在这里说些大话,不过学习到了一些理论知识,还是想在这里记录下来,以后看起来方便点。说起数据库设计规范,想必大家都听说过所谓的“第三范式”或者“三大范式”。其实许多规范中,除了出名的第三范式之外,还有第一范式、第二范式等等六种主要的范式,之所以第三范式这么出名,是因为第三范式是.原创 2020-11-29 22:42:05 · 171 阅读 · 0 评论 -
MySQL学习笔记(三):关于索引(一)
在MySQL中,索引的使用非常重要。当你的数据量小的时候,可以不需要考虑索引,甚至使用了索引之后不但占用了更多空间,还会使CURD操作都变慢了;但是当你的数据量逐渐增多时,哪怕只是千、万级的数据,使用适当的索引都能帮助你的接口的性能提升一个台阶。如果把我们的数据库比作一个字典,那么索引就是字典前面的目录。当你的数据量小的时候,在其中进行查找操作可能还比较轻松;但是现象一下,如果你需要在一本没有目录的新华字典里面找一个字,那得是多么可怕的操作。通过上面那个简单的例子,大家应该能够理解索引的.原创 2020-11-26 22:13:11 · 118 阅读 · 0 评论 -
MySQL学习笔记(四):正确使用索引(二)
上一篇学习到了MySQL中的索引是什么,以及一些关于索引的简单的知识,这篇我打算详细地谈一谈如何正确地使用索引。索引的使用看起来很简单,但是在真正去学习它的时候才发现,原来是暗藏玄机。使用索引时有很多需要特别注意的点,稍有不慎,我们建立的索引就不能发挥其作用了。1、不是所有操作都能够使用到索引的。比如在我们常用的查询操作中,<,<=,=,>,>=,BETWEEN,IN 是能够使用索引的,而 <>,NOT IN ,!= 则不行。所以当我们希望在 NOT .原创 2020-11-26 22:11:36 · 139 阅读 · 0 评论 -
MySQL学习笔记(二):数据类型
MySQL的数据类型还是较为简单的,总共有四种:整数类型、浮点数类型、字符串类型、时间和日期类型。整数类型从小到大有tinyint、smallint、mediumint、int、bigint五种,区别所占空间的大小,对应为存储数据的数值大小。拿tinyint来举例子,一个tinyint字段占一个字节Byte,即8位,8位二进制所能存储的十进制数值即2^8=256,也就是能够存储范围为-128~127(有符号),或0~255(无符号)的数。浮点数类型有float、double和decimal,f.原创 2020-11-15 21:34:25 · 197 阅读 · 0 评论 -
MySQL学习笔记(一):MySQL基础
前段时间一直在忙活做项目,已经好久没有特意去提升自己了,博客也是放着几乎没怎么管。经过这么长一段时间的做项目(重复工作)和带带小学弟学妹,我也渐渐意识到,我自身的基础还是有所欠缺,虽说写写不复杂的接口已经和吃饭一样稀疏平常了,但是对于更底层的数据库、运维以及架构的知识,感觉仍需学习。从图书馆借了两本讲MySQL的书,就此正式从MySQL数据库开始学习了!说起数据库,大家应该都不陌生,从高中接触过的Access,到人尽皆知的MySQL,还有听起来很厉害的NoSQL、Oracle、Mongo.原创 2020-11-15 21:25:34 · 208 阅读 · 4 评论