Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL将表的校验和存储在另一个表中_Mysql_Statistics_Checksum - Fatal编程技术网

MySQL将表的校验和存储在另一个表中

MySQL将表的校验和存储在另一个表中,mysql,statistics,checksum,Mysql,Statistics,Checksum,背景: 我们有大数据库和大量的表。他们中的大多数(99%)正在使用innodb。 我们希望有一个日常流程来监控哪些表被修改。当他们使用innodb时,Update\u timefrom的值 SHOW table STATUS from information_schema; 是空的。 因此,我们希望创建一个日常过程,将每个表的校验和(以及其他相关内容)存储在某个位置(最好是另一个表)。在这方面,我们将进行不同的检查 问题: 我想用 checksum table from db_schema.t

背景: 我们有大数据库和大量的表。他们中的大多数(99%)正在使用innodb。 我们希望有一个日常流程来监控哪些表被修改。当他们使用innodb时,
Update\u time
from的值

SHOW table STATUS from information_schema;
是空的。 因此,我们希望创建一个日常过程,将每个表的校验和(以及其他相关内容)存储在某个位置(最好是另一个表)。在这方面,我们将进行不同的检查

问题: 我想用

checksum table from db_schema.table_name;
它返回一个包含两列的resultset表:“表”、“校验和”。 它给了我想要的值,但我不能在select或insert语句中使用它

我尝试了很多东西,比如:

select `checksum` from (checksum table from db_schema.table_name);
或其他类似查询。但是我无法从结果集中提取数据

我有办法做到吗? 提前感谢你的帮助

编辑:最后,我想构建一个更复杂的结果集,其中包含不同的信息(表架构、表名、计数、校验和、日期时间:now()…)
然后,我将使用此结果集与昨天的值进行比较,并得出我自己的统计数据。这就是为什么我想从该结果集获取校验和。

不可能直接使用SQL保存校验和表的结果。也不能在存储过程中使用预处理语句或游标来使用校验和结果

你最好围绕它编写一个脚本,或者下载一些流行的工具来为你做这件事

对于使用CHECKSUM=1 table参数的MyISAM表,可以简单地使用如下信息模式:

SELECT TABLE_NAME,CHECKSUM FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'test' AND ENGINE='MyISAM' 
      AND CHECKSUM IS NOT NULL;

无法使用SQL直接保存校验和表的结果。也不能在存储过程中使用预处理语句或游标来使用校验和结果

你最好围绕它编写一个脚本,或者下载一些流行的工具来为你做这件事

对于使用CHECKSUM=1 table参数的MyISAM表,可以简单地使用如下信息模式:

SELECT TABLE_NAME,CHECKSUM FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'test' AND ENGINE='MyISAM' 
      AND CHECKSUM IS NOT NULL;

正如我所说,我们的表大部分是InnoDB,信息模式中的校验和总是空的。另外,看看我的编辑,它可能会更好地解释我想要什么。是的,我知道你的表是InnoDB。问题是关于校验和表的结果,我回答了。MyISAM注释仅用于完整性。是否有方法使用该查询返回稍微复杂(或简化)的结果集,如我的编辑中所述。我的问题是,我无法使用该结果集执行任何操作,比如只选择校验和而不选择表的名称、校验和example@Antoine正如我在回答中提到的:在任何地方都不能使用checksumtable语句,因为它确实很有用,比如在存储例程中。我用MySQL 5.5试过了。(提示:至少,不是在原始的MySQL服务器中。)这就是你所说的“保存”的意思,我不是这样读的。最后,我完成了一个小java程序,可以从结果集中提取这个校验和值,然后进行我需要的计算。糟糕的是,不能直接使用SQLAs,正如我所说,我们的表大多是InnoDB,信息模式中的校验和总是空的。另外,看看我的编辑,它可能会更好地解释我想要什么。是的,我知道你的表是InnoDB。问题是关于校验和表的结果,我回答了。MyISAM注释仅用于完整性。是否有方法使用该查询返回稍微复杂(或简化)的结果集,如我的编辑中所述。我的问题是,我无法使用该结果集执行任何操作,比如只选择校验和而不选择表的名称、校验和example@Antoine正如我在回答中提到的:在任何地方都不能使用checksumtable语句,因为它确实很有用,比如在存储例程中。我用MySQL 5.5试过了。(提示:至少,不是在原始的MySQL服务器中。)这就是你所说的“保存”的意思,我不是这样读的。最后,我完成了一个小java程序,可以从结果集中提取这个校验和值,然后进行我需要的计算。太糟糕了,不能直接用SQL实现