我想检查我的MySQL表是否已更改,我认为对它进行校验和可能是一个很好的解决方案。我正在使用官方的MySQL .NET连接器。
通常我使用MySqlDataReader
从我的select查询中获取数据,但是我不确定它在校验和查询中是如何工作的。这是我到目前为止所做的。
string query = "checksum table `" + name + "`";
string result = "";
if (isConnected())
{
MySqlCommand cmd = new MySqlCommand(query, connection);
cmd.ExecuteNonQuery();
}
我找到了校验和查询here。
感谢任何帮助!
答案 0 :(得分:3)
您有正确的查询,但是您应该了解可能的性能影响。
如果表是MyISAM(如果您使用的是更新版本的MySQL,它可能不应该是这样)并且您为表定义了CHECKSUM = 1选项,那么您可以执行QUICK校验和,这应该发生快。
如果您有INNODB表,则必须执行全表扫描才能执行此命令。从性能相当大的表格的性能角度来看,这可能是不可行的。
我建议在这里查看MySQL文档以供选择。
http://dev.mysql.com/doc/refman/5.5/en/checksum-table.html
另一个可能简单的选择是在表上放置一个触发器,每次插入/更新/删除记录时,该触发器都会更新另一个表中的时间戳。然后,您可以将此时间戳与给定日期进行比较,以了解是否在该时间段内进行了更改。
同样,如果您的表还没有“On UPDATE CURRENT_TIMESTAMP”时间戳字段,您只需添加一个,在其上放置一个索引并从该字段中查询最大值。这显然会增加一些数据大小和索引大小开销,这可能是不可取的。这显然也不会捕获删除(尽管您可以通过计算主索引字段来轻松检查)