不活动的MySQL数据库是否使用内存?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了不活动的MySQL数据库是否使用内存?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1812字,纯文字阅读大概需要3分钟。
内容图文
![不活动的MySQL数据库是否使用内存?](/upload/InfoBanner/zyjiaocheng/897/b812675dfc5149f1b13bffba2b10147d.jpg)
我有服务器上的非活动数据库只是为了存档目的.
我知道我可以为所有人做mysqldump,但我不是100%确定他们不活跃.
当我启动系统时,我无法确定活动/非活动状态.如果没有查询,他们还会消耗内存吗?
解决方法:
序幕
正如我之前在Adding new tables — memory usage increases中提到的,添加新表会增加内存使用量.在这种情况下,未处于活动状态的表仍会消耗INFORMATION_SCHEMA中的内存.
确定什么是活动的是一个任意的过程.如果您需要查看表最后一次写入更改的时间,您必须根据每个表的存储引擎查找.
MyISAM数据
学习MyISAM表最后一次写入更改是很简单的.
假设您需要查看一个月内未写入的所有MyISAM表.只需再次运行此查询INFORMATION_SCHEMA.tables:
SELECT table_schema,table_name,update_time FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','mysql','performance_schema')
AND engine='MyISAM' and update_time > (NOW() - INTERVAL 1 MONTH);
注意:MyISAM表的update_time是.MYD文件的时间戳.如果运行ANALYZE TABLE mydb.mytable;,则会将索引统计信息写入.MYI文件. .MYI的文件时间戳未反映在INFORMATION_SCHEMA中.
InnoDB的
获取InnoDB时间戳是一个非常大的挑战,因为InnoDB不会在INFORMATION_SCHEMA中存储update_time.如果禁用innodb_file_per_table,则InnoDB及其祖母的所有内容都包含在系统表空间文件ibdata1中.获取ibdata1的时间戳将为您提供上次收到任何写入的时间.这可能是任何事情
> INSERT,UPDATE,DELETE(改变数据和索引页面)
> ANALYZE TABLE(改变索引页面)
> SELECT(通过MVCC的数据快照)
因此,在innodb_file_per_table禁用的情况下,无法知道.
另一方面,如果启用innodb_file_per_table,问题仍然存在:您如何找到最近一次创建的表?
您必须检查.ibd的文件时间戳.
而不是重新发明轮子,请阅读我的帖子,了解如何获取该信息
> 2011年12月21日:Fastest way to check if InnoDB table has changed
> 2013年6月3日:Is there a way to find the least recently used tables in a schema?
结语
要记住的要点是找出表的时间戳,并从操作系统的观点中从NOW()(或UNIX_TIMESTAMP(NOW())中减去它.您必须随意确定非活动表的年龄过大.
内容总结
以上是互联网集市为您收集整理的不活动的MySQL数据库是否使用内存?全部内容,希望文章能够帮你解决不活动的MySQL数据库是否使用内存?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。