pren的文章 第94页

php

MySQL二进制日志(Binary Log)

pren 发布于 2021-10-29

二进制日志主要记录数据库的更新事件,比如创建数据表、更新表中的数据、数据更新所花费的时长等信息。通过这些信息,我们可以再现数据更新操作的全过程。 使用案例 1.查看二进制文件:查看二进制日志主要有 3 种情况: 查看当前正在写入的二进制日志;查看当前写入的日志文件和位置; mys...

阅读(3091)评论(1)赞 (1)

mysql

MySQL慢查询日志(Slow Query Log)

pren 发布于 2021-10-29

慢查询日志用来记录执行时间超过指定时长的查询。它的主要作用是:帮助我们发现那些执行时间特别长的 SQL 查询,并且有针对性地进行优化,从而提高系统的整体效率。 业务场景 当我们的数据库服务器发生阻塞、运行变慢的时候,检查一下慢查询日志,找到那些慢查询,对解决问题很有帮助。 场景解...

阅读(2214)评论(0)赞 (0)

mysql

MySQL 通用查询日志(General Query Log)

pren 发布于 2021-10-29

通用查询日志记录了所有用户的连接开始时间和截止时间,以及发给 MySQL 数据库服务器的所有 SQL 指令。 业务场景: 当我们的数据发生异常时,开启通用查询日志,还原操作时的具体场景,可以帮助我们准确定位问题。 场景1:12 月 1 日下午,门店的收银台销售了 5 件化妆品,但...

阅读(2123)评论(0)赞 (0)

mysql

Innodb执行sql的过程

1

pren 发布于 2021-10-29

重做日志redo log 事务开始之后就会产生redo log,先写入到缓存buffer中,事务结束(或者是通过定时任务将缓存刷新到日志文件)后落盘到redo log中,确保事务的持久性 回滚日志undo log 保证事务发生之前的数据一个版本,主要用于回滚,保证数据的原子性 二...

阅读(5554)评论(0)赞 (1)

mysql

数据⻚和缓存⻚是什么?如何知道哪些缓存⻚是空闲的,哪些缓存⻚是可被清除的?

pren 发布于 2021-10-29

(1)在逻辑层⾯上,数据通常以表(table)的形式展示,但是体现在具体存储的物理层⾯上,在磁盘存的数据是以数据⻚的⽅式⼀⻚⼀⻚存储的,每个数据⻚含有多⾏数据。 (2)InnoDB存储引擎中,通过free链表可以查看到当前内存中、哪些缓存⻚是空闲的,即可直接拿来存放新的数据;⽽此...

阅读(2105)评论(0)赞 (0)

mysql

mysql的预读机制带来的问题以及优化后的lru链表对该问题的解决

1

pren 发布于 2021-10-29

mysql预读机制可能会扰乱我们之前设想的lru链表的处理逻辑。当⼀个数据⻚被加载到缓冲池中时,可能顺带会把其他⽆关紧要的数据⻚也加载到缓冲池中,这些顺带加载到内存的数据⻚,它们往往被访问的频率是⾮常低的,但是由于lru链表的特点,新加⼊的总是会优先被排在lru的链表头,导致这些...

阅读(4975)评论(2)赞 (0)

mysql

缓冲池内存不⾜触发脏⻚刷盘

1

pren 发布于 2021-10-28

经过磁盘数据如何加载到mysql中以及在InnoDB中执⾏更新操作流程执⾏了⼀段时间后,直到InnoDB缓冲池中的内存即将不够⽤了,此时如果再来⼀条sql语句的更新操作,要想成功把磁盘中的数据加载到缓存⻚中,就需要先清理下内存中的缓存⻚了。 通过之前提到的lru链表,可以找到lr...

阅读(1243)评论(0)赞 (0)

mysql

在InnoDB中执⾏更新操作

2

pren 发布于 2021-10-28

磁盘数据如何加载到mysql中,此时我们需要的数据已经从磁盘中加载到缓冲池中了,下⼀步当然就是执⾏更新操作了: 先对需要更新的那⾏数据加锁、原始数据写⼀份到redo log中便于可能的回滚操作、执⾏update操作,此时缓存⻚的数据就被更新了,当然就和磁盘中的数据⻚的数据就不⼀致...

阅读(737)评论(0)赞 (0)

mysql

磁盘数据如何加载到mysql中?

4

pren 发布于 2021-10-28

⼀般我们要更新⼀条数据,数据⼀开始肯定是存放在磁盘中的,⽤到时才会被加载到mysql,存放的数据在逻辑概念上我们称为表,物理层⾯上在磁盘中是按数据⻚形式存放的,那么加载到mysql中的就称为缓存⻚。 每个缓存⻚都有对应的⼀份描述信息,存放了缓存⻚的⼀些元数据相关的⼀些信息,通过描...

阅读(1464)评论(0)赞 (0)