我有一個應用程序需要從數據庫的表中知道一些記錄的最新數量,該解決方案應該適用而不更改數據庫代碼或向其中添加觸發器或函數,所以我需要數據庫供應商獨立的解決方 我用java編寫的程序,但數據庫可能是(SQLite,MySQL,PostgreSQL或MSSQL),現在我正在這樣做: 在設置爲守護進程的單獨線程中,我的應用程序通過JDBC發送一個簡單的命令到數據庫要知道最新的記錄數與條件:在數據庫中計算特定記錄的數量
while(true){
SELECT COUNT(*) FROM Mytable WHERE exited='1'
}
和這種編碼會導致數據庫要鎖定的,減緩了整個系統,併產生巨大的數據庫日誌它終於將關閉整個事情! 我該如何以正確的方式做到始終擁有最新數量的某些記錄,或只有在數字發生變化時纔算數?
我不明白爲什麼這樣的陳述會導致巨大的數據庫日誌,但您可能能夠通過在退出時創建索引來改進系統 – Andreas
在繁忙循環中查詢數據庫是一個可怕的想法。你能否改變你的代碼,以便只查詢點播計數?你的應用程序在哪裏使用計數? –