我得到一個PHP的Web應用程序,其中Postgres數據庫,其中獲取大量的查詢第二(300-600)。數據庫服務器效率不高,所以我得到很多查詢超時。 是否有任何機制會在數據庫上運行它們之前創建查詢隊列? 我認爲這是下面的一個進程/守護進程這需要即50個查詢從隊列,運行這些數據庫,等待所有完成並獲得下一個50個查詢等PostgreSQL數據庫查詢隊列mechanizm(PHP)
0
A
回答
3
是否有任何機制,以使一個查詢在交易池模式可以排隊發言PgBouncer - 運行它們的數據庫
是前排隊。
儘管您很可能只需要調整數據庫服務器並處理性能不佳的查詢。退房pg_stat_statements
,auto_explain
,explain analyze
等。請閱讀the wiki article on connection counts和slow queries。
如果可能的話,修復您的客戶端應用程序,以便減少每個執行更多工作的查詢 - 執行設置操作。
對於寫入操作(插入/更新/刪除)將它們批量處理成事務,並且如果可能的話,運行更少的語句來執行更多的工作。特別是,不要在可能的情況下遍歷SQL語句。
如果必須使用大量的小寫的,看設置commit_delay
或者(如果你能接受的數據丟失窗口)設置爲synchronous_commit = off
不太重要的寫操作。
如果您的查詢主要是讀取,我強烈建議引入一個像Redis內存中鍵/值存儲或Memcached的中級緩存。讓您的應用程序管理此緩存,以避免重複獲取不一定非常新鮮的數據,或者速度不會超快。您可以使用PostgreSQL的LISTEN和NOTIFY功能來實現細粒度緩存失效。
相關問題
- 1. SQL查詢Postgresql數據庫
- 2. Selective PostgreSQL數據庫查詢
- 3. PHP - 數據庫列數據查詢返回另一列數據
- 4. 無法查詢PostgreSQL數據庫
- 5. Hibernate 3:無法查詢PostgreSQL數據庫
- 6. 從cherryproxy查詢postgresql數據庫
- 7. 用php查詢數據庫
- 8. PHP的數據庫查詢
- 9. PHP查詢在數據庫
- 10. PHP笨數據庫查詢
- 11. PHP查詢whois數據庫
- 12. 查詢隊列
- 13. 查詢postgresql數組列
- 14. 事後庫存/隊列大小查詢
- 15. 數據庫消息隊列
- 16. php靜態函數,查詢數據庫
- 17. mysql查詢隊列?
- 18. 如何查詢postgreSQL數據庫來檢查值是否存在?
- 19. PHP創建從數據庫查詢數組新陣列
- 20. Postgresql查詢每天銷售庫存數
- 21. PHP腳本不會查詢數據庫
- 22. PHP-查詢結果到新數據庫
- 23. Php Mysql數據庫查詢錯誤
- 24. 蛋糕PHP數據庫查詢
- 25. 連續查詢數據庫PHP
- 26. PHP數據庫查詢失敗
- 27. PHP SQL數據庫查詢錯誤
- 28. 數據庫查詢與PHP require_once
- 29. 同步PHP數據庫查詢
- 30. MySQL數據庫查詢在PHP
感謝您的回覆。 我剛剛發現這個: http://kr.github.io/beanstalkd/ 是否有人用它將查詢排入數據庫?這是個好主意嗎?文檔很差。 –
@ZiomZiomalski如果你正在尋找一個實際的排隊系統,對於消息隊列來看看ZeroMQ,ActiveMQ,Celery等等等等等等等。不太清楚任務隊列,我不需要處理它們,但是看到http: //queues.io/。另外,請閱讀http://mikehadlow.blogspot.com.au/2012/04/database-as-queue-anti-pattern.html。 –
@ZiomZiomalski另外,考慮發佈一個更好的框架問題:「這是我的應用程序所做的,這裏是它運行的查詢,這是爲什麼它這樣做,這是它導致的性能問題,還有更好的方法嗎?」。包括PostgreSQL版本,像max_connections這樣的關鍵參數,你的應用正在執行的任務的描述,如何觸發這個任務,你對結果做什麼等。 –