繁体   English   中英

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

[英]How do I perform a checksum of a MySQL table using C#?

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

通常我使用MySqlDataReader从我的select查询中获取数据,但是我不确定它对校验和查询的作用。 这就是我到目前为止所拥有的。

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

string result = "";

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

我在这里找到了校验和查询。

任何帮助表示赞赏!

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

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

如果您有INNODB表,则必须执行全表扫描才能执行此命令。 从性能合理的大型表格的性能角度来看,这可能是不可行的。

我建议在这里查看MySQL文档以获取您的选项。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM