分区表在MySQL数据分离到不同的表空间,同时仍然被视为一个单一的表。分区可以是一个有用的方法在某些情况下,当处理大数据集。删除大量数据集可以加快在分区表,但如果处理不当,它可以放错地方你的数据表中。在这个博客中,我将分享如何检查和修复这样一个表中的数据以最小的干扰。

在这个例子中,我们使用一个表分区基于一个日期范围。

如果我们查询任意的数据集,MySQL返回它很快,没有任何问题。

但是一旦数据是错误的,它不返回任何行。

乍一看,它看起来像数据已被删除;甚至解释计划没有返回任何结果。

但是,数据表中仍然存在;只是错误的在一个不同的分区。

如何检查是否有更多的错误的行吗?

检查错误的表中的行,我们可以执行检查命令来找到更多的错误的行。

怎么能行是错误的吗?

上述观察确实提出一个问题:如何MySQL允许这种事情发生,以及如何可以固定吗?前者的答案是,MySQL允许用户与一个单独的交换分区表;在我之前的解释博客快速数据档案在MySQL中使用分区默认情况下,它会检查每一行之前将数据插入到表中。

在上面的查询中,salaries_p15是一个空表结构一样吗薪水,除了没有分区。

后交换分区,分区p15是空的,和salaries_p15 p15数据分区。

MySQL允许交换分区没有检查每一行,这样可以加快交换数据。

上面的查询将交换数据和一个空的分区p08 salaries_p15很快,假设数据是正确的。在这种情况下,它将导致错误的行错误的分区。

如何修复它

有两种方法可以解决它——首先,运行MySQL推荐修理表命令,或第二重新创建表通过运行一个空的改变。

执行维修表时,错误的行安排适当的位置通过分析所有的行,但是它获得一个系统锁在桌子上。

另一种方法是运行一个空重新创建表的更改。

一个可以直接改变运行表重新创建表和锁,直到完成改变。

一个也可以使用pt-online模式变化重新创建表,不会锁表和其他好处(在线使用Pe雷竞技下载官网rcona工具箱来改变数据库表:一种控制方法)。

结论

它总是推荐和分区的工作时要格外小心,避免在生产环境中使用未经验证,以避免任何错误的数据。

雷竞技下载官网Percona MySQL是最完整,分布稳定、可伸缩的、开源MySQL和安全解决方案,提供企业级的数据库环境的大多数关键业务应用程序…和免费使用!

raybetapp2下载

订阅
通知的
客人

0评论
内联反馈
查看所有评论