了解MySQL数据库最后一次访问时间的最简单方法



我有所有InnoDB的MySQL表。

我们有如此多的数据库副本分布在多个服务器上(相信我,我们这里说的是数百个),其中许多根本没有被查询。

我如何获得MAX(LastAccessDate)的列表,例如在一个特定的数据库中的所有表?特别是考虑到它们是InnoDB表。

我宁愿知道"选择"查询在哪里运行,但也会满足于"插入/更新",因为,如果一个数据库在很长一段时间内没有改变,它可能已经死了。

如果你有一个总是插入值的表,你可以为更新/插入添加一个触发器。在此触发器中,您可以设置专用数据库中的当前时间戳,包括发生插入的数据库的名称。

这样你的数据库的唯一要求就是它支持触发器。

或者你可以看看这个链接:

修改和创建一个表的日期可以从sys中检索。表目录视图。当进行任何结构更改时,将更新修改日期。可通过如下方式查询:

USE [SqlAndMe]
GO
SELECT    [TableName] = name,
create_date,
modify_date
FROM    sys.tables
WHERE    name = 'TransactionHistoryArchive'
GO

系统。表格只显示结构变化的修改日期。如果我们需要检查表最近一次更新或访问是在什么时候,我们可以使用动态管理视图sys.dm_db_index_usage_stats。此DMV返回不同类型索引操作的计数和上一次执行该操作的时间。

可以这样使用:

USE [SqlAndMe]
GO
SELECT    [TableName] = OBJECT_NAME(object_id),
last_user_update, last_user_seek, last_user_scan, last_user_lookup
FROM    sys.dm_db_index_usage_stats
WHERE    database_id = DB_ID('SqlAndMe')
AND        OBJECT_NAME(object_id) = 'TransactionHistoryArchive'
GO

last_user_update -提供上次用户更新的时间

last_user_* -提供最后一次扫描/查找/查找的时间

重要的是要注意sys。dm_db_index_usage_stats计数器在SQL Server服务重启时重置。

希望这有帮助!

相关内容

  • 没有找到相关文章

最新更新