mysqldump --where 备份的逻辑
mysqldumpxxx --single-transaction --set-gtid-purged=OFF d1 t1 --where='c1 > xxx'这样备份表中部分数据的话,是不是要保证 c1 字段有索引才可以,要不会全表扫描?在大表上 这么备份的话,即使 c1 上有索引,是不是也是一个长事物备份。长事物可能或引发其他性能问题。
以上是个人理解,不知道mysqldump--where 的备份逻辑是不是这样的。有了解的大佬解答一下吗?
是的,如果c1列没有索引,就会全表扫描,跟下面这个SQL一个效果
select * from t where c1>x
备份采用的是一致性快照读,不会产生事务,只需要创建一份快照。
当tps很高时,可能会造成事务undo长时间无法清理,undo log特别大,一定程度影响性能。
页:
[1]