[英]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.