14

我正在使用 MySQL,我想获取数据库中任何表的最后一次更改的日期/时间。我的每个表都有一个自动更新的“*_modified”时间戳,所以我可以使用它(* 是前缀)。

这样做的目的是确定自上次数据库备份的日期/时间以来数据是否发生了变化。

我想知道有没有更简单的方法可以使用 DESCRIBE 或 SHOW 来做到这一点?我已经搜索并尝试过,但还没有找到任何东西。

谢谢您的帮助。

4

4 回答 4

17
SELECT update_time
FROM   information_schema.tables
WHERE  table_schema = 'dbName'
       AND table_name = 'tableName'
于 2012-11-15T17:33:48.277 回答
3

我从http://mysqladministrators.blogspot.it/2012/02/get-database-size.html找到了这个方法

我不确定它是否可以帮助你,因为我在 MySql 中没有做好准备

获取数据库大小、可用空间和上次更新

仅通过从表 TABLES 中的 INFORMATION_SCHEMA 数据库查询到您的查询浏览器或 CLI 来获取当前数据库大小。

SELECT table_schema "Data Base Name", 
sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB" 
FROM information_schema.TABLES 
GROUP BY table_schema ;

获取数据库可用空间

SELECT table_schema "Data Base Name", 
sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB", 
sum( data_free )/ 1024 / 1024 "Free Space in MB" 
FROM information_schema.TABLES 
GROUP BY table_schema;

获取数据库最后一次更新,按更新时间排序,然后按创建时间排序。

SELECT MAX(UPDATE_TIME), MAX(CREATE_TIME), TABLE_SCHEMA 
FROM `TABLES` 
GROUP BY TABLE_SCHEMA 
ORDER BY 1, 2;
于 2015-04-18T15:43:19.777 回答
1

公认的答案很好,但我认为更好的格式是:

SELECT table_name, update_time
FROM   information_schema.tables
WHERE  table_schema = 'myDBName'
order by update_time DESC

因为,我们并不总是知道哪些表被触动了,这有一个好处是可以通过显示最近更新的表来提供关于活动是什么的线索。

于 2017-11-04T12:34:46.720 回答
1

简单地说,要获取一个数据库下的所有表,请使用此查询

SELECT TABLE_NAME,CREATE_TIME,UPDATE_TIME
FROM   information_schema.tables
WHERE  table_schema = 'database_name'

就这样

于 2017-12-04T06:48:46.043 回答