
mysql进阶
文章平均质量分 94
FrozenPenguin
冰冻三尺,非一日之寒;水滴石穿,非一日之功。
展开
-
「 MySQL 」InnoDB和MyISAM的区别与联系
在MySQL数据库中,InnoDB和MyISAM是两种主要的存储引擎。存储引擎是MySQL中最底层的组件,负责管理数据的存储和检索。不同的存储引擎具有不同的特性和适用场景。本文将重点探讨InnoDB和MyISAM两种存储引擎的区别与联系。比较项InnoDBMyISAM存储引擎类型事务型存储引擎,支持事务和行级锁不支持事务和行级锁的非事务型存储引擎并发控制机制采用多版本并发控制 (MVCC) 和行级锁采用表级锁并发控制机制索引结构采用 B+ 树 分类索引采用 B+ 树 分类索引。原创 2023-03-27 07:30:00 · 1494 阅读 · 0 评论 -
「MySQL进阶」一文彻底读懂MVCC底层原理
事务,由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。假如A转账给B 100 元,先从A的账户里扣除 100 元,再在 B 的账户上加上 100 元。如果扣完A的100元后,还没来得及给B加上,银行系统异常了,最后导致A的余额减少了,B的余额却没有增加。所以就需要事务,将A的钱回滚回去,就是这么简单。为什么要有事务呢?就是为了保证数据的最终一致性。MVCC,即Multi-Version Concurrency Control (多版本并发控制)。原创 2023-03-10 12:51:31 · 1381 阅读 · 0 评论 -
「MySQL进阶」为什么MySQL用B+树做索引而不用二叉查找树、平衡二叉树、B树
索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在[1,2,3,4]中找到4这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。B+树索引、Hash索引、全文索引。原创 2023-03-08 08:00:00 · 1728 阅读 · 0 评论 -
深入理解MySQL官方为何推荐使用自增主键
在《高性能MySQL(第3版)》中,提及了这么一段话:如果正在使用InnoDB表并且没有什么数据需要聚集,那么可以定义一个代理键(surrogate key)作为主键,这种主键的数据应该和应用无关,最简单的方法是使用 AUTO_INCREMENT自增列。这样可以保证数据行是按顺序写入,对于根据主键做关联操作的性能也会更好。为何书本的作者会在此推荐MySQL的在选用默认存储引擎InnoDB时使用自增主键?这可能得从InnoDB存储引擎底层的数据存储结构B+树开始说起。原创 2023-03-02 08:00:00 · 3499 阅读 · 0 评论 -
「mysql是怎样运行的」第24章 一条记录的多幅面孔---事务的隔离级别与MVCC
我们知道 MySQL 是一个 客户端/服务器 架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接, 每个客户端与服务器连接上之后,就可以称之为一个会话( Session )。原创 2023-03-01 07:30:00 · 1223 阅读 · 0 评论 -
「mysql是怎样运行的」第19章 从猫爷被杀说起---事务简介
对于大部分程序员来说,他们的任务就是把现实世界的业务场景映射到数据库世界。id INT NOT NULL AUTO_INCREMENT COMMENT '自增id', name VARCHAR(100) COMMENT '客户名称',balance INT COMMENT '余额',狗哥和猫爷是一对好基友,他们都到银行开一个账户,他们在现实世界中拥有的资产就会体现在数据库世界的 account 表中。原创 2023-02-25 17:56:06 · 1306 阅读 · 0 评论 -
「mysql是怎样运行的」第7章 B+树索引的使用
上边只是我们在创建和使用B+树索引的过程中需要注意的一些点,后边我们还会陆续介绍更多的优化方法和注意事项,敬请期待。本集内容总结如下:B+树索引在空间和时间上都有代价,所以没事儿别瞎建索引。全值匹配匹配左边的列匹配范围值精确匹配某一列并范围匹配另外一列用于排序用于分组只为用于搜索、排序或分组的列创建索引为列的基数大的列创建索引索引列的类型尽量小可以只对字符串值的前缀建立索引只有索引列在比较表达式中单独出现才可以适用索引为了尽可能少的让聚簇索引。原创 2023-02-23 08:21:19 · 926 阅读 · 0 评论 -
「mysql是怎样运行的」第6章 快速查询的秘籍---B+树索引
至此,我们介绍的都是 InnoDB 存储引擎中的索引方案,为了内容的完整性,以及各位可能在面试的时候遇到这 类的问题,我们有必要再简单介绍一下 MyISAM 存储引擎中的索引方案。我们知道 InnoDB 中索引即数据,也就是 聚簇索引的那棵 B+ 树的叶子节点中已经把所有完整的用户记录都包含了,而 MyISAM 的索引方案虽然也使用树形 结构,但是却将索引和数据分开存储:将表中的记录按照记录的插入顺序单独存储在一个文件中,称之为 数据文件。原创 2023-02-22 07:30:00 · 932 阅读 · 0 评论 -
「mysql是怎样运行的」第5章 盛放记录的大盒子---InnoDB数据页结构
前边我们简单提了一下页的概念,它是InnoDB管理存储空间的基本单位,一个页的大小一般是16KB。InnoDB为了不同的目的而设计了许多种不同类型的页,比如存放表空间头部信息的页,存放Insert Buffer信息的页,存放INODE信息的页,存放undo日志信息的页等等等等。我们聚焦的是那些存放我们表中记录的那种类型的页,官方称这种存放记录的页为索引(INDEX)页,鉴于我们还没有了解过索引是个什么东西,而这些表中的记录就是我们日常口中所称的数 据,所以目前还是叫这种存放记录的页为数据页吧。原创 2023-02-21 07:45:00 · 897 阅读 · 0 评论 -
「mysql是怎样运行的」从一条记录说---InnoDB记录存储结构
InnoDB是一个把数据存储在硬盘的存储引擎,即使服务器重启,数据依然不会丢失,而真正的数据处理是发生在内存中的,所以InnoDB需要把硬盘上数据加载到内存中,然后在内存中进行各种数据处理,最终在某个时机把内存中的数据刷新到硬盘。而硬盘的处理速度是很慢很慢的,和内存差的太远了,如果InnoDB每次只从硬盘中读取一条数据,显然是不行的,速度会慢死,所以InnoDB会把数据分成若干页InnoDB读取数据不是一行一行读,而是以页为最小单位读取数据。原创 2023-02-20 07:30:00 · 1075 阅读 · 0 评论