MySQL
文章平均质量分 94
MySQL深入学习
起名方面没有灵感
前世大厂架构师、上市公司ceo,被小人陷害,重生为24年应届毕业生,点个关注,看我如何逆风翻盘。
展开
-
【MySQL】MySQL索引夺命连环问「持续更新中」
覆盖索引在某个查询里面,索引 k 已经“覆盖了”我们的查询需求,称为覆盖索引。覆盖索引可以减少树的搜索次数,显著提升查询性能,所以使用覆盖索引是一个常用的性能优化手段。之所以能减少树的搜索次数,比如说查询key1,使用了key1的索引,这个B+树的数据就包含了主键值+key1,因此不需要回表操作,减少了树的搜索次数。索引下推MySQL 5.6 引入的索引下推优化(index condition pushdown), 可以在索引遍历过程中,对索引中包含的字段先做判断。原创 2023-01-25 23:08:36 · 1041 阅读 · 0 评论 -
【MySQL】深入学习B+索引的使用
学习数据库的同学应该都知道,索引是可以提高MySQL的查询效率的,但是吧,这个索引可不能乱加,如果加了一些没用的索引,不仅会浪费了空间并且还会浪费了时间。因为索引本身就是一个B+树,MySQL在进行增删改查的时候,都需要维护所有的B+索引树,因此可能会带有空间和时间上的损耗。原创 2023-01-16 19:07:47 · 869 阅读 · 0 评论 -
【MySQL】深入理解B+树索引
索引,是MySQL快速查询的秘籍。如果没有索引,是怎么查询记录的呢?首先,假如表中记录比较少,所有记录都可以存放在一个页中。以主键为搜索条件,这种就可以通过页目录使用二分法快速定位到相应的槽,接着遍历槽中的记录,就可以快速找到指定记录了。以其他列作为搜索条件,因为页中没有为非主键建立所谓的页目录,所以无法通过二分法定位槽的方式查找。只能从Infimum记录开始依次遍历单项链表的每条记录,然后对比是否符合搜索条件。(效率最低)如果表中记录很多,就需要用比较多的页存储这些记录定位记录所在页。原创 2023-01-03 22:11:48 · 1403 阅读 · 8 评论 -
【MySQL】InnoDB数据页结构
页是InnoDB管理存储空间的基本单位。InnoDB为了不同目的实现了多种的不同类型的页,比如存储表空间头部的页、存放INODE信息的页等等。但是我们比较关心的应该是存放表中记录的页,官方把这种存放记录的页称为索引页。为了方便理解,下面把索引页称为数据页。原创 2023-01-01 00:00:00 · 373 阅读 · 0 评论 -
【MySQL】InnoDB记录存储结构
对于MySQL来说,我们对它的认知并不多,只知道它的主要功能是存储数据。但是这些数据存放在哪里?以什么格式存放?MySQL怎么访问这些数据?我们都不知道。对于MySQL服务器来说,负责对表数据进行读取和写入工作的是存储引擎。在MySQL中有很多存储引擎,比如InnoDB、MyISAM等。不同的存储引擎存放数据的格式一般是不一样的。对于MEMORY这个存储引擎来说,它不用磁盘存储数据,也就意味着服务器关闭后表的数据就消失了。而InnoDB是MySQL的默认存储引擎,原创 2022-12-29 08:53:54 · 537 阅读 · 0 评论 -
【MySQL】字符集和比较规则
的时候,会将服务器接收请求的character_set_client对应的字符集进行编码的字节序列转换成session级别的系统变量character_set_connection对应的字符集进行编码的字节序列。由于当前操作系统使用的是gbk字符集,所以字符串‘我’是使用GBK字符集进行编码的,比较规则为gbk_chinese_ci,而列C使用的是utf8字符集编码的,比较规则为utf8_general_ci。如果服务器的character_set_client对应的字符集不能解释请求的字节序列,原创 2022-12-27 17:44:10 · 1654 阅读 · 4 评论 -
【MySQL】浅谈事务与隔离级别
什么是事务?在MySQL中的事务(Transaction)是由存储引擎实现的,在MySQL中,只有InnoDB存储引擎才支持事务。事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行事务用来管理 DDL、DML、DCL 操作,比如 insert,update,delete 语句,默认是自动提交的。怎么设置事务为手动提交set autocommit = 0 禁止自动提交 set autocommit = 1 开启自动提交MySQL事务操作有哪些?开启事务。原创 2022-12-14 12:00:00 · 349 阅读 · 0 评论 -
【MySQL】5.触发器
触发器,就是一种特殊的存储过程。触发器和存储过程一样是一个能够完成特定功能、存储在数据库服务器上的SQL片段,但是触发器无需调用,当对数据库表中的数据执行DML操作时自动触发这个SQL片段的执行,无需手动条用。触发器什么时候才能执行?在MySQL中,只有执行insert,delete,update操作时才能触发触发器的执行触发器有什么实际用途?触发器的这种特性可以协助应用在数据库端确保数据的完整性 ,日志记录, 数据校验等操作触发器有什么需要注意的?原创 2022-11-19 07:00:00 · 569 阅读 · 1 评论 -
【MySQL】存储过程与存储函数
MySQL 5.0 版本开始支持存储过程。简单的说,存储过程就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法。存储过就是数据库 SQL 语言层面的代码封装与重用。存储过程有哪些特征?有输入输出参数,可以声明变量,有if/else, case,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能;函数的普遍特性:模块化,封装,代码复用;速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤;存储过程有哪些优点?原创 2022-11-17 12:00:00 · 425 阅读 · 0 评论 -
【MySQL】浅谈视图
什么是视图?视图(view)是一个虚拟表,非真实存在,其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用视图名称即可获取结果集,并可以将其当作表来使用。数据库中只存放了视图的定义,而并没有存放视图中的数据。这些数据存放在原来的表中。使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。因此,视图中的数据是依赖于原来的表中的数据的。一旦表中的数据发生改变,显示在视图中的数据也会发生改变。视图有什么特点?当视图来自多张基本表的时候,不允许添加和删除数据。原创 2022-11-15 20:13:41 · 478 阅读 · 0 评论 -
【MySQL 8.0新特性】窗口函数
什么是窗口函数?窗口函数是MySQL8.0新增的,窗口函数又称开窗函数,属于MySQL的一大特点。非聚合窗口函数是相对于聚函数来说的。聚合函数是对一组数据计算后返回单个值(即分组),非聚合函数一次只会处理一行数据。窗口聚合函数在行记录上计算某个字段的结果时,可将窗口范围内的数据输入到聚合函数中,并不改变行数。窗口函数有什么用?窗口函数可以对数据库数据进行实时分析处理,比如市场分析、创建财务报表、创建计划等日常性商务工作。窗口函数分为哪几种?序号函数。原创 2022-11-14 21:46:58 · 1392 阅读 · 0 评论 -
【MySQL】1.索引
索引是通过某种算法,构建出一个数据模型,用于快速找出在某个列中有一特定值的行就像新华字典的根据拼音查询一个字一样,如果没有索引就需要一页一页查找,效率极慢,这样表数据越多,查询的时间就会越长。如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。根据实现方式分类,可以分为Hash索引与B+Tree索引。原创 2022-09-29 08:28:09 · 287 阅读 · 0 评论