暂无图片
row格式下,表上没有任何索引,对于从库来说,回放线程需要执行的全表扫描的次数问题
我来答
分享
暂无图片 匿名用户
row格式下,表上没有任何索引,对于从库来说,回放线程需要执行的全表扫描的次数问题

表上没有任何索引,且二进制日志格式为 ROW

假设A表select count(*) from abc =500
 delete from abc where id <= 100; 符合条件的是100条记录
复制

如果表abc上没有任何索引,在从库重放时,因为是 ROW 格式,对于每条记录的操作都会进行一次全表扫描,


因为符合的是100条,是不是需要全表扫描100次呢??

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

不是,只需要全表扫描一次。在ROW格式下,binlog中记录的是每一行的修改情况,所以在从库重放时,只需要读取一次全表的数据即可。但是对于像你提到的这种删除操作,由于没有索引,从库必须逐行检查是否满足删除条件,这就需要进行全表扫描了。不过这里要注意的是,虽然不需要全表扫描100次,但是如果表很大,全表扫描的时间可能会很长,所以最好还是给表加上合适的索引以提高性能。

暂无图片 评论
暂无图片 有用 8
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
MySQL 5.7.13 Aborted_clients 持续增加 日志频繁报 Got timeout reading communication packets)
回答 1
可参考以下内容:https://www.modb.pro/db/23585
ubuntu22使用clion调试mysql8.0.28源码遇到openssl问题
回答 2
这可能是因为你的系统中存在多个版本的&nbsp;&nbsp;OpenSSL,而&nbsp;&nbsp;cmake&nbsp;&nbsp;可能没有找到正确的版本。你可以尝试以下方法:1.&nbsp;&n
mysql中 || 的作用是什么? || 在oracle中的作用是什么?
回答 2
已采纳
oracle中是用||连接的。mysql的连接不是这个,而是concat。
mysql数据记录数比对值不一致
回答 3
不一样正常,统计信息只要不差一个数量级都对。一样属于巧合。
telnet ip 3306(telnet mysql服务3306) 后,有的能自动释放关闭,有的不能释放关闭
回答 3
已采纳
解释mysql的连接超时是由参数connecttimeout控制的.默认10秒.你确认下这个参数在两个环境是否相同呢例子很快就释放连接,看起来像是自动释放setglobalconnecttimeout
【Perf Stat】指标,如何收集的??紧急求助
回答 1
https://blog.csdn.net/lyn631579741/article/details/124009633
mysql服务启动不了,重装之后,只保留了下图内容,有什么方法还原吗?
回答 2
如果数据文件是完整的,拷贝保留备份一份,然后重新修改新的配置文件(一般自动卸载软件旧的配置文件都会在默认目录下自动备份,能找到的情况下直接用旧的配置文件启动),把所有数据文件相关的路径都改成这个,然后
请问各位老大一个mysqldump日志文件的疑问
回答 2
已采纳
/!40101…/:这种注释格式是MySQL特有的。它表示如果MySQL服务器版本支持这个命令(即版本号大于等于4.0101),那么该注释内的SQL语句将被执行;否则,它们将被当作普通的注释忽略掉。这
ogg 从mysql同步oracle 可以实现ddl 同步吗?
回答 1
已采纳
下面摘自OGG18.1官方文档,MySQL支持的对象以及操作,可以看到支持DDL,并不是所有DDL都支持,具体版本的同样可以参考相应版本官方文档。https://docs.oracle.com/en/
求一份Mysql DBA常用的查询SQL,谢谢
回答 2
感谢感谢