专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

mysql查询跟踪,mysql查询字段在哪个表_数据库

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 13:54:12       共计:3594 浏览
mysql查询跟踪,mysql查询字段在哪个表?

MySQL中对于DML(数据写入,数据修改和数据删除操作是可以有效跟踪的,对于select目前没有找到好的方法,只能通过构建生命周期体系来完善了。

我来说一下数据写入的跟进过程,可以在数据库test中创建一张表test_data

create table test_data(id int primary key,name varchar(30)) engine=InnoDB;

我们写入一条数据:

mysql> insert into test_data values(1,'aa');

Query OK, 1 row affected (0.00 sec)

查看数据字典informationschema.tables的字段update_time可以看到发生了变化。

mysql> select * from information_schema.tables where table_schema='test' and table_name='test_data'\G

*************************** 1. row ***************************

TABLE_CATALOG: def

TABLE_SCHEMA: test

TABLE_NAME: test_data

TABLE_TYPE: BASE TABLE

ENGINE: InnoDB

VERSION: 10

ROW_FORMAT: Dynamic

TABLE_ROWS: 1

AVG_ROW_LENGTH: 16384

DATA_LENGTH: 16384

MAX_DATA_LENGTH: 0

INDEX_LENGTH: 0

DATA_FREE: 0

AUTO_INCREMENT: NULL

CREATE_TIME: 2019-10-08 12:29:05

UPDATE_TIME: 2019-10-08 12:29:40

CHECK_TIME: NULL

TABLE_COLLATION: utf8_general_ci

CHECKSUM: NULL

CREATE_OPTIONS:

TABLE_COMMENT:

1 row in set (0.00 sec)

如果继续写入一条数据:

mysql> insert into test_data values(2,'bb');

Query OK, 1 row affected (0.00 sec)

查看字典里的数据,就会发现时间戳开始变化(递增),当然你可以在写入前记录下时间戳。

mysql> select * from information_schema.tables where table_schema='test' and table_name='test_data'\G

*************************** 1. row ***************************

TABLE_CATALOG: def

TABLE_SCHEMA: test

TABLE_NAME: test_data

TABLE_TYPE: BASE TABLE

ENGINE: InnoDB

VERSION: 10

ROW_FORMAT: Dynamic

TABLE_ROWS: 2

AVG_ROW_LENGTH: 8192

DATA_LENGTH: 16384

MAX_DATA_LENGTH: 0

INDEX_LENGTH: 0

DATA_FREE: 0

AUTO_INCREMENT: NULL

CREATE_TIME: 2019-10-08 12:29:05

UPDATE_TIME: 2019-10-08 12:29:58

CHECK_TIME: NULL

TABLE_COLLATION: utf8_general_ci

CHECKSUM: NULL

CREATE_OPTIONS:

TABLE_COMMENT:

1 row in set (0.00 sec)

所以你的问题可以转换一个思路来实现,即一段时间内没有变化的表,可以通过information_schema.tables的字段来进行查询,这样就可以得到数据库里的热表和冷表了。

比如查看2019-10-08之前没有DML数据变化的表,可以使用如下的SQL:

select table_name,update_time from information_schema.tables where update_time <='2019-10-08' ;

| xxxx1 | 2019-09-02 23:49:42 |

| xxxx2 | 2019-09-03 23:45:21 |

| xxxx3 | 2019-09-04 23:59:31 |

| xxxx4 | 2019-09-05 23:41:25 |

| xxxx5 | 2019-09-06 21:44:40 |

| xxxx6 | 2019-09-07 23:46:17 |

+-------------------------+---------------------+

1019 rows in set (1.66 sec)

补充下,数据库版本建议是在MySQL 5.7+

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:mysql查询月初,你有哪些正在做的个人项目_数据库 | ·下一条:动态查询 mysql,学python这条路怎么走_数据库

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有