我得到一个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这样的关键参数,你的应用正在执行的任务的描述,如何触发这个任务,你对结果做什么等。 –