如何安排SQL以后执行@database级别

时间:2011-03-14 09:41:51

标签: php postgresql automation

---------规格---------
数据库:PostgreSQL
语言:PHP

--------- ---------描述
我想创建一个表来存储数据库的事务日志。我只想存储简要信息。

我认为在繁重的并发执行期间,将数据(来自所有表的事务日志)添加到单个日志表会成为瓶颈。

所以我想到了一个解决方案,为什么不将事务日志的SQL添加到队列中,当队列没有压力时会自动执行。

--------- ---------问题
PostgreSQL中是否有类似的工具可用。或者如何使用PHP-Cron作业或任何其他方法实现类似功能。注意:在DB上低压期间执行是必要的

--------- Thanx提前---------

编辑:
定义
重压/重并发执行:同时在10多个表上每秒约500次或更多查询。
无重压:同时少于5张表每秒查询约50次或更少 事务日志表:如果在任何表中编辑/插入/删除任何内容,其详细信息必须在事务日志表中插入

1 个答案:

答案 0 :(得分:1)

  

我认为在繁重的并发执行期间,将数据(来自所有表的事务日志)添加到单个日志表会成为瓶颈。

不要假设。测试。
特别是在性能方面。做过早优化是一件坏事。

请同时定义“大量使用”。你期望每秒插入多少次?

  

所以我想到了一个解决方案,为什么不将事务日志的SQL添加到队列中,当队列没有压力时会自动执行

定义“没有沉重的压力”?你怎么知道的?

总而言之,我建议只需插入数据并调整PostgreSQL,以便它可以应对负载。

您可以将数据移动到单独的硬盘上,以便常规操作的IO不受此影响。一般来说,插入速度受IO的限制,因此请自行设置一个快速的RAID 10系统。

您可能还需要调整检查点段和WAL编写器。

但如果你不是说每秒1000次插入,你可能不需要做太多工作(假设快速硬盘/ RAID系统)