这是我在工作中研究解决方案的场景。我们在postgres中有一个表,用于存储网络上发生的事件。目前它的工作方式是,随着网络事件的到来插入行,同时删除与特定时间戳匹配的较旧记录,以便将表大小限制在大约10,000条记录。基本上,类似于日志轮换的想法。网络事件一次会激增数千个,因此事务率过高会导致性能下降,经过一段时间后,服务器就会崩溃或变得非常慢,最重要的是,客户要求将表大小保持在最大百万条记录,这将加速性能下降(因为我们必须不断删除与特定时间戳匹配的记录),并导致空间管理问题。我们使用简单的JDBC对表进行读写。技术社区可以建议更好的方式来处理这个表中的插入和删除吗?
发布于 2011-01-26 23:21:19
我认为我会使用分区表,可能是所需总大小的10倍,插入到最新的分区中,然后删除最旧的分区。
http://www.postgresql.org/docs/9.0/static/ddl-partitioning.html
这使得“删除最旧的”的负载比查询和删除要小得多。
更新:我同意nos的评论,但插入/删除可能不是您的瓶颈。也许先做些调查。
发布于 2011-01-26 23:32:32
一些你可以尝试的东西-
以下是一些一般性建议:
https://stackoverflow.com/questions/4806128
复制相似问题