gpt4 book ai didi

c# - 如何使用 C# 执行 MySQL 表的校验和?

转载 作者:行者123 更新时间:2023-11-29 05:29:51 26 4
gpt4 key购买 nike

我想检查我的 MySQL 表是否已更改,我认为对其进行校验和可能是一个很好的解决方案。我使用的是官方 MySQL .NET 连接器。

通常我使用 MySqlDataReader 从我的选择查询中获取数据,但是我不确定它如何处理校验和查询。这是我目前所拥有的。

string query = "checksum table `" + name + "`";

string result = "";

if (isConnected())
{
MySqlCommand cmd = new MySqlCommand(query, connection);
cmd.ExecuteNonQuery();
}

我找到了校验和查询 here .

感谢任何帮助!

最佳答案

您有正确的查询,但是您应该了解可能的性能影响。

如果表是 MyISAM(如果您使用的是较新版本的 MySQL,它可能不应该是)并且您为表定义了 CHECKSUM=1 选项,那么您可以执行 QUICK 校验和,这应该会发生快。

如果你有一个 INNODB 表,你将不得不执行全表扫描来执行这个命令。从性能的角度来看,这对于一个经常使用的相当大的表来说可能是不可行的。

我建议您在此处查看 MySQL 文档以了解您的选择。

http://dev.mysql.com/doc/refman/5.5/en/checksum-table.html

另一个可能简单的选择是在表上放置一个触发器,每次插入/更新/删除记录时,它都会更新另一个表中的时间戳。然后,您只需将此时间戳与给定日期进行比较,即可了解该时间段内是否发生了更改。

同样,如果您的表还没有“On UPDATE CURRENT_TIMESTAMP”时间戳字段,您可以简单地添加一个,在其上放置一个索引并查询该字段的最大值。这显然会为表增加一些数据大小和索引大小的开销,这可能是不可取的。这显然也不会捕获删除(尽管您可以通过对主索引字段进行计数来轻松检查这一点)

关于c# - 如何使用 C# 执行 MySQL 表的校验和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15981285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com