暂无图片
MySQL的redo机制跟Oracle一样吗?
我来答
分享
Quick
2024-02-20
MySQL的redo机制跟Oracle一样吗?

Oracle的redo文件是循环使用的,写满一个就切换到下一个,但在覆盖写之前要确保被覆盖的redo文件处于inactive状态(记录的脏数据块已写入磁盘)。如果所有的redo文件都处于active状态,数据库会挂起,等待检查点。

MySQL的redo也是循环使用,如果切换时下一个redo文件记录的脏数据页还未写入磁盘,MySQL会怎样?是不是也会挂起等待检查点?

还有,MySQL的redo切换会不会触发检查点?

MySQL的检查点触发机制是什么?

MySQL的redo跟binlog是什么关系?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
lianR

1.  MySQL的redo  log(InnoDB引擎的事务日志)也是循环使用的,当下一个redo  log文件还未被刷新到磁盘时,MySQL会挂起等待,直到该redo  log文件被刷新到磁盘。

2.  MySQL的redo  log切换不会直接触发检查点。但是,当redo  log空间不足时,MySQL会触发检查点操作,将脏页刷新到磁盘,以便释放redo  log空间。

3.  MySQL的检查点触发机制主要有以下几种情况:(1)  当redo  log空间不足时,会触发检查点操作,以便释放redo  log空间;(2)  当系统空闲时,MySQL会定期触发检查点操作,以减少系统崩溃时数据恢复的时间;(3)  当执行FLUSH  TABLES  WITH  READ  LOCK或者SET  GLOBAL  innodb_fast_shutdown=0命令时,会触发检查点操作。

4.  MySQL的redo  log和binlog都是MySQL的日志系统,但是它们的作用和使用场景不同。redo  log主要用于保证事务的持久性,它是InnoDB引擎级别的日志,记录了每个事务对数据库的修改。binlog是MySQL服务器级别的日志,记录了所有的DDL和DML操作,主要用于实现MySQL的主从复制和数据恢复。

暂无图片 评论
暂无图片 有用 8
打赏 0
Quick
题主
2024-02-20
那事务结束(commit或rollback)会触发检查点吗?
lianR

在MySQL中,事务结束(commit或rollback)并不会直接触发检查点。检查点(Checkpoint)是数据库系统中的一个机制,主要用于减少恢复时间,通过将内存中的修改过的页(脏页)刷新(写)回磁盘。在MySQL中,检查点的触发主要由InnoDB存储引擎的内部机制决定,例如,当redo  log空间不足时,或者达到了预设的时间间隔等。

暂无图片 评论
暂无图片 有用 1
打赏 0
Quick
题主
2024-04-17
mysql默认提交操作。那每一条sql都可以看作是一个事务,那岂不是所有的sql进行的变更都会记录到redo,这跟binlog在内容上岂不是一样了?
回答交流
Markdown


请输入正文
提交
相关推荐
mysql如何导出一个表中的数据,格式是excel的,给报表用
回答 3
第三方工具:KETTLE,NAVICAT。
MySQL user表 主键被删除 然后重新生成了主键id ,原来的数据ID丢失,怎么恢复?
回答 2
1.数据库备份恢复:如果有最近的数据库备份,可以尝试将备份文件还原到一个临时数据库中,然后从该临时数据库中导出user表的数据,并将其导入到目标数据库中。2.使用历史日志:如果MySQL数据库启用了二
MySQL 线上联机表数据量过大(超500W),想只保留该表10天左右热数据,其他数据定期迁移至一张his新表(做历史查询使用),不想影响主库性能,有推荐的方案吗?
回答 2
已采纳
我能想到的解决方案:A、存量数据迁移,1、可以利用mysqldump把大表dump出来,利用where条件筛选出10天前的数据。2、导入数据库,导入前把dump出的文件的表明更换一下。3、清理联机表上
结果集缓存Query cache在mysql8.0中被移除了吗?
回答 1
已经被移除了,相关参数都查不到主要原因有以下几点:查询缓存频繁导致锁定问题,特别是在高并发环境中。对于更新操作频繁的表,查询缓存的命中率较低,导致性能下降。查询缓存的维护和管理成本较高。
mysql查询
回答 2
发了两遍估计是没看懂,也不知道要咨询什么问题。提问也是一门艺术,不然真不知道在说什么。
mysql的unique key为什么可以实现并发时的去重,原理是什么?
回答 1
已采纳
唯一索引上的悲观行锁来实现的吧。和普通索引的区别只是唯一索引需判断是否重复。
MYSQL 需要过滤空字符串与NULL, 如何全部过滤呢, 除了 name!='' and name is not null,这样写效率很低,怎么优化?
回答 1
whereifnull(null,’’)!’’再建一个函数索引试试。我觉得性能可能也不会太好
关于克隆中的donor,recipient的理解?
回答 1
在克隆过程中,"donor"(供体)指的是原始机器,而"recipient"(接收者)指的是要将克隆数据复制到的目标机器。在你提到的情况中,如果你想将100.29克隆到100.40上,那么:100.2
mysql show variables 查的是哪个表里面的数据?
回答 3
已采纳
mysql中和variables和status相关的有4张表,都在informationschema库中:globalvariables;全局变量sessionvariables;session变量g
mysql 可以查看定时器执行的过程 有没有报错吗 ?
回答 1
除非你定时器写入表进行查询。否则不能查