MySQL二进制日志(Binary Log)
pren 发布于 2021-10-29
二进制日志主要记录数据库的更新事件,比如创建数据表、更新表中的数据、数据更新所花费的时长等信息。通过这些信息,我们可以再现数据更新操作的全过程。 使用案例 1.查看二进制文件:查看二进制日志主要有 3 种情况: 查看当前正在写入的二进制日志;查看当前写入的日志文件和位置; mys...
阅读(3091)评论(1)赞 (1)
pren 发布于 2021-10-29
二进制日志主要记录数据库的更新事件,比如创建数据表、更新表中的数据、数据更新所花费的时长等信息。通过这些信息,我们可以再现数据更新操作的全过程。 使用案例 1.查看二进制文件:查看二进制日志主要有 3 种情况: 查看当前正在写入的二进制日志;查看当前写入的日志文件和位置; mys...
阅读(3091)评论(1)赞 (1)
pren 发布于 2021-10-29
慢查询日志用来记录执行时间超过指定时长的查询。它的主要作用是:帮助我们发现那些执行时间特别长的 SQL 查询,并且有针对性地进行优化,从而提高系统的整体效率。 业务场景 当我们的数据库服务器发生阻塞、运行变慢的时候,检查一下慢查询日志,找到那些慢查询,对解决问题很有帮助。 场景解...
阅读(2214)评论(0)赞 (0)
pren 发布于 2021-10-29
通用查询日志记录了所有用户的连接开始时间和截止时间,以及发给 MySQL 数据库服务器的所有 SQL 指令。 业务场景: 当我们的数据发生异常时,开启通用查询日志,还原操作时的具体场景,可以帮助我们准确定位问题。 场景1:12 月 1 日下午,门店的收银台销售了 5 件化妆品,但...
阅读(2123)评论(0)赞 (0)
pren 发布于 2021-10-29
重做日志redo log 事务开始之后就会产生redo log,先写入到缓存buffer中,事务结束(或者是通过定时任务将缓存刷新到日志文件)后落盘到redo log中,确保事务的持久性 回滚日志undo log 保证事务发生之前的数据一个版本,主要用于回滚,保证数据的原子性 二...
阅读(5554)评论(0)赞 (1)
pren 发布于 2021-10-29
(1)在逻辑层⾯上,数据通常以表(table)的形式展示,但是体现在具体存储的物理层⾯上,在磁盘存的数据是以数据⻚的⽅式⼀⻚⼀⻚存储的,每个数据⻚含有多⾏数据。 (2)InnoDB存储引擎中,通过free链表可以查看到当前内存中、哪些缓存⻚是空闲的,即可直接拿来存放新的数据;⽽此...
阅读(2105)评论(0)赞 (0)
pren 发布于 2021-10-29
mysql预读机制可能会扰乱我们之前设想的lru链表的处理逻辑。当⼀个数据⻚被加载到缓冲池中时,可能顺带会把其他⽆关紧要的数据⻚也加载到缓冲池中,这些顺带加载到内存的数据⻚,它们往往被访问的频率是⾮常低的,但是由于lru链表的特点,新加⼊的总是会优先被排在lru的链表头,导致这些...
阅读(4975)评论(2)赞 (0)
pren 发布于 2021-10-28
经过磁盘数据如何加载到mysql中以及在InnoDB中执⾏更新操作流程执⾏了⼀段时间后,直到InnoDB缓冲池中的内存即将不够⽤了,此时如果再来⼀条sql语句的更新操作,要想成功把磁盘中的数据加载到缓存⻚中,就需要先清理下内存中的缓存⻚了。 通过之前提到的lru链表,可以找到lr...
阅读(1243)评论(0)赞 (0)
pren 发布于 2021-10-28
磁盘数据如何加载到mysql中,此时我们需要的数据已经从磁盘中加载到缓冲池中了,下⼀步当然就是执⾏更新操作了: 先对需要更新的那⾏数据加锁、原始数据写⼀份到redo log中便于可能的回滚操作、执⾏update操作,此时缓存⻚的数据就被更新了,当然就和磁盘中的数据⻚的数据就不⼀致...
阅读(737)评论(0)赞 (0)
pren 发布于 2021-10-28
⼀般我们要更新⼀条数据,数据⼀开始肯定是存放在磁盘中的,⽤到时才会被加载到mysql,存放的数据在逻辑概念上我们称为表,物理层⾯上在磁盘中是按数据⻚形式存放的,那么加载到mysql中的就称为缓存⻚。 每个缓存⻚都有对应的⼀份描述信息,存放了缓存⻚的⼀些元数据相关的⼀些信息,通过描...
阅读(1464)评论(0)赞 (0)
pren 发布于 2021-10-28
当一条sql到了mysql数据库中的时候,会经过“解析器”、“优化器”、“执行器“、”存储引擎“
阅读(664)评论(0)赞 (0)