gpt4 book ai didi

mysql - 了解上次访问 MySQL 数据库的时间的最简单方法

转载 作者:可可西里 更新时间:2023-11-01 09:05:36 26 4
gpt4 key购买 nike

我的 MySQL 表都是 InnoDB。

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

如何获取特定数据库中所有表的 MAX(LastAccessDate) 列表?特别是考虑到它们是 InnoDB 表。

我宁愿知道运行“select”查询的位置,但也会满足于“insert/update”,因为如果数据库长时间未更改,它可能已经死了。

最佳答案

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

这种方式对你的数据库的唯一要求是它支持触发器。

或者你可以看看这个 link :

表的修改日期和创建日期可以从 sys.tables 目录 View 中检索。当进行任何结构更改时,修改日期会更新。可以这样查询:

USE [SqlAndMe]
GO

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

sys.tables 仅显示结构更改的修改日期。如果我们需要检查上次更新或访问表的时间,我们可以使用动态管理 View 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_* – 提供上次扫描/搜索/查找的时间

请务必注意,当 SQL Server 服务重新启动时,sys.dm_db_index_usage_stats 计数器会重置。

希望对您有所帮助!

关于mysql - 了解上次访问 MySQL 数据库的时间的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31658375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com