
MySQL
ZeroWdd
这个作者很懒,什么都没留下…
展开
-
MySQL浅析之自增主键是连续的吗(6)
MySQL浅析之自增主键是连续的吗1. 前言看了前面的博客,相信我们都知道了使用自增主键的好处:可以让主键索引尽量地保持递增顺序插入,避免页分裂。但是避免页分裂的前提是自增主键必须是连续性的。这时我们可能就有疑问了,难道自增主键还会出现不是连续的情况吗?没错,自增主键是不能保证连续递增。2. 自增值保存在哪?要想了解自增主键为什么不能保证连续,我们就先要明白自增值是保存在哪的。不妨我们直接看结论:对于MyISAM引擎的子增值是保存在数据文件中的;而对于InnoDB引擎的自增值,早期是保存在原创 2020-07-05 18:10:59 · 536 阅读 · 0 评论 -
MySQL浅析之count函数(5)
MySQL浅析之count函数1. 前言我们在日常开发中可能会经常需要计算一个表中的行数,而执行SQL语句也挺简单:select count(*) from table;但是当我们表中数据量过大时,不难发现,执行一次这个SQL语句,需要消耗大量时间。那么,MySQL是如何执行这个SQL语句的呢?2. count(*) 执行过程首先我们需要知道在MyISAM引擎中,它是把一个表的总行数存在了磁盘上,因此执行count(*)的时候会直接返回这个数,效率很高;而对于InnoDB引擎,它执行cou原创 2020-07-04 18:34:47 · 535 阅读 · 0 评论 -
MySQL浅析之空间回收(4)
MySQL浅析之空间回收1. 前言我们在日常使用MySQL中,可能会发现这么个问题:当我们数据库占用空间太大时,我们把一个最大的表的数据删了一半,可是表文件的大小还是没变。我们就来聊聊表的空间回收:(默认讨论使用的是InnoDB引擎)在一个表中包含两个部分,分别为表结构定义和数据。在MySQL 8.0版本以前,表结构是存在以.frm为后缀的文件里。而MySQL 8.0版本,则已经允许把表结构定义放在系统数据表中了。因为表结构定义占用的空间很小,所以我们主要是看表数据。2. 参数innodb_fi原创 2020-07-04 14:30:58 · 390 阅读 · 0 评论 -
MySQL浅析之事务(3)
MySQL浅析之事务1. 事务定义首先我们需要明白什么是事务。简单来说,事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在MySQL中,事务支持是在引擎层实现的。你现在知道,MySQL是一个支持多引擎的系统,但并不是所有的引擎都支持事务。比如MySQL原生的MyISAM引擎就不支持事务,这也是MyISAM被InnoDB取代的重要原因之一。2. 事务的特性原子性(A):事务是最...原创 2020-04-20 12:11:35 · 211 阅读 · 0 评论 -
MySQL浅析之索引(2)
MySQL浅析之索引1. 前言如果我们用到数据库,那么不可比避免的就会提到索引。我们都知道,它类似于一本书的目录,能够加快我们的访问,使查找变得迅速。但是索引到底是什么,它又是如何工作的呢,我们今天就需要来了解了解。2. 常见的几种索引模型说到索引,说白了就是提高查询速率,那么是如何提高的呢?思考下,我们应该能够兵败一个概念,它的底层肯定是通过某些算法和数据结构来实现它的功能的,这...原创 2020-03-26 11:57:54 · 185 阅读 · 0 评论 -
MySQL浅析之日志模块(1)
MySQL浅析之日志模块1. 前言我们都知道在MySQL中有一个重要的模块 – 日志模块。其实在MySQL中,日志模块分为两种。一种是记录Server层的日志,称为binlog。一种是记录引擎层的日志,称为redo log ,这个日志是InnoDB引擎独有的。2. 什么是redo log假设我们要对一条数据进行修改,InnoDB是把数据从磁盘读取到内存的缓冲池上进行修改。这时,...原创 2020-03-23 21:14:51 · 228 阅读 · 0 评论