在我的页脚,我想添加一些东西,如“上次更新xx/xx/200x”,这个日期是最后一次某个mySQL表已更新。

最好的方法是什么?是否有检索最近更新日期的函数?每次需要这个值时,我都应该访问数据库吗?


当前回答

不知道你会不会对这个感兴趣。在mysql和客户端之间使用mysqlproxy,并使用lua脚本根据有趣的表变化更新memcached中的键值update,DELETE,INSERT是我最近做的解决方案。如果包装器支持php中的钩子或触发器,这可能会更容易。到目前为止,没有一个包装器这样做。

其他回答

我在phpMyAdmin中按名称做了一个列:update-at,并在我的代码(nodejs)中从Date()方法获得当前时间。表中的每一个变化,这一列都保存变化的时间。

a)它会显示你所有的表和最近的更新日期

SHOW TABLE STATUS FROM db_name;

然后,你可以进一步询问具体的表格:

SHOW TABLE STATUS FROM db_name like 'table_name';

b)在上面的例子中,你不能在'Update_time'上使用排序,但是使用SELECT你可以:

SELECT * FROM information_schema.tables WHERE TABLE_SCHEMA='db_name' ORDER BY UPDATE_TIME DESC;

要进一步询问特定的表:

SELECT * FROM information_schema.tables WHERE TABLE_SCHEMA='db_name' AND table_name='table_name' ORDER BY UPDATE_TIME DESC';

只需从文件系统中获取修改过的文件日期。用我的语言来说就是:

 tbl_updated = file.update_time(
        "C:\ProgramData\MySQL\MySQL Server 5.5\data\mydb\person.frm")

输出:

1/25/2013 06:04:10 AM

不知道你会不会对这个感兴趣。在mysql和客户端之间使用mysqlproxy,并使用lua脚本根据有趣的表变化更新memcached中的键值update,DELETE,INSERT是我最近做的解决方案。如果包装器支持php中的钩子或触发器,这可能会更容易。到目前为止,没有一个包装器这样做。

操作系统级别分析:

查找DB在磁盘上的存储位置:

grep datadir /etc/my.cnf
datadir=/var/lib/mysql

检查最近的修改

cd /var/lib/mysql/{db_name}
ls -lrt

应该适用于所有数据库类型。