摘要:
buffer pool 增删查改 buffer pool 存储内容: 包括数据页,索引,自适应索引,字典信息等 buffer pool 查找: 如上图,如果是读操作,要查找的数据所在的数据页在缓冲池中时,则将结果返回。 否则会把对应的数据页加载到内存中,然后再返回结果。 每一个页,都有一个描述信息。 阅读全文
摘要:
innodb存储引擎中一条sql写入的详细流程 第0步:会先去看缓冲区有没有这条数据,如果有就不进行缓存,直接进入第三步。 第1步:会将要修改的那一行数据所在的一整页加载到缓冲池Buffer Pool中 第2步:将旧值写入undo日志中,便于回滚以及mvcc机制的运作 第3步:将Buffer Poo 阅读全文
摘要:
Mysql一张表可以存储多少数据 在操作系统中,我们知道为了跟磁盘交互,内存也是分页的,一页大小4KB。同样的在MySQL中为了提高吞吐率,数据也是分页的,不过MySQL的数据页大小是16KB。(确切的说是InnoDB数据页大小16KB)。详细学习可以参考官网 我们可以用如下命令查询到。 通过上面的 阅读全文
摘要:
聚簇索引 我们日常所说的主键索引,其实就是聚簇索引(Clustered Index) 索引键为为主键。如果没有定义主键,InnoDB 会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB 会隐式定义一个主键来作为聚簇索引。 叶子节点存储:记录的所有列信息,包含整张表的行记录数据。叶子节点包 阅读全文
摘要:
EXPLAIN命令 除了以SELECT开头的查询语句,其余的DELETE、INSERT、REPLACE以及UPDATE语句前边都可以加上EXPLAIN这个词儿,用来查看这些语句的执行计划 Type列 这一列表示关联类型或访问类型,即MySQL决定如何查找表中的行,以下是集中查询的访问方法。查找数据行 阅读全文
摘要:
bin log binlog 是 MySQL Server 层的日志,而不是存储引擎自带的日志,它记录了所有的 DDL 和 DML(不包含数据查询语句)语句,而且是以事件形式记录,还包含语句所执行的消耗的时间等,需要注意的是: binlog 是一种逻辑日志,他里边所记录的是一条 SQL 语句的原始逻 阅读全文
摘要:
mysql支持两种复制: 1:一种为语句复制。 好处是:简单,不会占用很多宽带和IO。 坏处是:同一条SQL主从执行的时间不同。或者一些时间戳,存储过程,触发器可能都会有问题。更新必须是串行,对锁的竞争比较大 2:一种为行的复制。(MySQL5.1开始支持) 好处是:正确的复制每一行,记录的都是主库 阅读全文
摘要:
Mysql5.6版本之前 更新步骤 对原始表加写锁 按照原始表和执行语句的定义,重新定义一个空的临时表。 对临时表进行添加索引(如果有)。 再将原始表中的数据逐条Copy到临时表中。 当原始表中的所有记录都被Copy临时表后,将原始表进行删除。再将临时表命名为原始表表名。 这样的话整个DDL过程的就 阅读全文