GreatSQL社区

搜索

[已解决] mysqldump --where 备份的逻辑

684 1 2022-11-2 16:16
mysqldump  xxx --single-transaction --set-gtid-purged=OFF d1 t1 --where='c1 > xxx'  这样备份表中部分数据的话,是不是要保证 c1 字段有索引才可以,要不会全表扫描?
在大表上 这么备份的话,即使 c1 上有索引,是不是也是一个长事物备份。长事物可能或引发其他性能问题。

以上是个人理解,不知道  mysqldump  --where 的备份逻辑是不是这样的。有了解的大佬解答一下吗?


全部回复(1)
yejr 2022-11-9 08:29:30
是的,如果c1列没有索引,就会全表扫描,跟下面这个SQL一个效果
  1. select * from t where c1>x
复制代码


备份采用的是一致性快照读,不会产生事务,只需要创建一份快照。
当tps很高时,可能会造成事务undo长时间无法清理,undo log特别大,一定程度影响性能。
radius

4

主题

0

博客

11

贡献

新手上路

Rank: 1

积分
17

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2025-1-19 08:02 , Processed in 0.021246 second(s), 14 queries , Redis On.
快速回复 返回顶部 返回列表