【问题标题】:How do I schedule an SQL to execute later @database level如何安排 SQL 稍后执行 @database 级别
【发布时间】:2011-03-14 18:22:21
【问题描述】:

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

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

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

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

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

---------提前致谢---------

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

【问题讨论】:

    标签: php postgresql automation


    【解决方案1】:

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

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

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

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

    定义“无重压”?你怎么知道的?

    总而言之,我建议简单地插入数据并调整 PostgreSQL,以便它能够应对负载。

    您可以将数据移动到单独的硬盘上,这样常规操作的 IO 就不会受此影响。通常插入速度受 IO 限制,因此请为自己准备一个快速的 RAID 10 系统。

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

    但是,如果您不是在谈论每秒 1000 次插入之类的事情,您可能不需要做太多事情来完成这项工作(假设为快速硬盘/RAID 系统)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 2015-03-12
      相关资源
      最近更新 更多