回答
您可以通過檢查表格文件的最後修改時間來完成。 在PostgreSQL,每個表對應一個或多個操作系統文件,如:
select relfilenode from pg_class where relname = 'test';
的relfilenode是表「測試」。然後,你可以在數據庫中找到的目錄中的文件的文件名。
在我的測試環境:
cd /data/pgdata/base/18976
ls -l -t | head
的最後一個命令的手段上市的最後修改時間排序的所有文件。
這甚至更好。謝謝! – 2010-07-13 04:19:23
由於「真空」活動,提示位設置等原因,您會得到誤報。 – 2012-10-06 00:07:51
我想你應該激活一些日誌選項。您可以獲取有關在PostgreSQL here上登錄的信息。
我希望有辦法用psql來做到這一點。但是,您的提示也可以在腳本中使用。如果一切都失敗了,我會使用日誌文件。謝謝! – 2010-07-09 15:44:07
日誌不會顯示像通過函數中的'select'修改的表。聽起來這樣的用例可以,但它不適用於尋找實際修改時間的用戶。 – 2014-02-05 01:25:27
http://dba.stackexchange.com/a/58246/7788 – user637338 2015-03-26 15:03:37
我的方式讓我的表的修改日期:
Python函數
CREATE OR REPLACE FUNCTION py_get_file_modification_timestamp(afilename text)
RETURNS timestamp without time zone AS
$BODY$
import os
import datetime
return datetime.datetime.fromtimestamp(os.path.getmtime(afilename))
$BODY$
LANGUAGE plpythonu VOLATILE
COST 100;
SQL查詢
SELECT
schemaname,
tablename,
py_get_file_modification_timestamp('*postgresql_data_dir*/*tablespace_folder*/'||relfilenode)
FROM
pg_class
INNER JOIN
pg_catalog.pg_tables ON (tablename = relname)
WHERE
schemaname = 'public'
我不知道,如果事情像真空可以胡來這種形式給出,但在我的測試中,至少在INSERT/UPDATE操作上獲得不再使用的表是一種非常有效的方式。
這對於我對主要問題的評論中鏈接文章中給出的原因是錯誤的。 – 2014-02-05 01:24:43
有沒有內置的方式來做到這一點 - 和all the approaches that check the file mtime described in other answers here are wrong。唯一可靠的選擇是將觸發器添加到每個表中,記錄對單個更改歷史記錄表的更改,這是非常低效且不可追溯的。
如果您只關心「數據庫使用」vs「數據庫未使用」,則可以從CSV格式的數據庫日誌文件收集此信息。檢測「修改」與「未修改」比較困難;考慮SELECT writes_to_some_table(...)
。
如果你不需要檢測老活動,您可以使用pg_stat_database
,記錄活動自上次統計重置。例如: -
-[ RECORD 6 ]--+------------------------------
datid | 51160
datname | regress
numbackends | 0
xact_commit | 54224
xact_rollback | 157
blks_read | 2591
blks_hit | 1592931
tup_returned | 26658392
tup_fetched | 327541
tup_inserted | 1664
tup_updated | 1371
tup_deleted | 246
conflicts | 0
temp_files | 0
temp_bytes | 0
deadlocks | 0
blk_read_time | 0
blk_write_time | 0
stats_reset | 2013-12-13 18:51:26.650521+08
這樣我就可以看到有對這個DB一直活動自上次統計重置。但是,我不知道統計信息重置之前發生了什麼,所以如果我有一個數據庫顯示零活動,因爲半小時前統計信息重置,我不知道什麼有用。
PostgreSQL 9.5讓我們跟蹤上次修改的提交。
檢查跟蹤提交開啓或關閉使用下面的查詢
show track_commit_timestamp;
如果回到 「ON」 轉到步驟3否則修改的postgresql.conf
cd /etc/postgresql/9.5/main/ vi postgresql.conf
變化
track_commit_timestamp = off
到
track_commit_timestamp = on
重新啓動系統
重複步驟1
使用下面的查詢追蹤上次提交
SELECT pg_xact_commit_timestamp(xmin), * FROM YOUR_TABLE_NAME; SELECT pg_xact_commit_timestamp(xmin), * FROM YOUR_TABLE_NAME where COLUMN_NAME=VALUE;
- 1. 如何獲取MS Access數據庫作者,上次修改日期,上次修改等使用vb.net等
- 2. Android:我如何獲取文件的上次修改日期?
- 3. 如何獲取SQL Server數據庫的最後訪問日期?
- 4. 如何鎖定「上次修改日期」?
- 5. 的SharePoint上次修改日期和匿名訪問
- 6. 使用子窗體訪問上次修改日期
- 7. 如何在Windows命令行上獲取文件的上次修改日期?
- 8. 獲取網址的上次修改日期
- 9. 獲取上次修改文件的日期
- 10. 如何通過上次訪問日期
- 11. 「上次訪問」與在Java(窗口)「上次修改」文件日期
- 12. 獲取日期創建和上次修改媒體文件
- 13. 從ALAsset(視頻)獲取上次修改日期iOS Video
- 14. 通過上次修改日期獲取文件
- 15. 如何在Filesystem中獲取上次修改的日期和時間?
- 16. GAE Python:如何獲取靜態文件的上次修改日期
- 17. 如何獲取上傳文件的最後修改日期?
- 18. 如何獲取上次日期值
- 19. PostgreSQL獲取日期
- 20. 如何從搜索中獲取上次修改日期和作者:search API?
- 21. 如何使用V2 Box iOS SDK獲取創建者和上次修改日期
- 22. 通過python獲取Postgresql數據庫中的特定日期日期
- 23. 如何從PostgreSQL數據庫訪問Oracle數據庫的源
- 24. 如何使用PHP和MySQL數據庫獲取上次登錄日期時間?
- 25. 上次修改SQL Server行日期
- 26. Wordpress(database);顯示上次修改日期?
- 27. 比較上次修改日期
- 28. Google Fusion表上次修改日期
- 29. 上次修改日期不正確
- 30. Microsoft Access上次修改日期
所有依賴於測試工作的方法系統文件修改時間有誤,請參閱http://dba.stackexchange.com/a/58246/7788 – 2014-02-05 01:24:16