性能调优:为布尔列创建索引

32

我编写了一个守护进程处理器,将从一个数据库中获取行并插入到另一个数据库中进行同步。它将根据一个布尔标志sync_done来获取行。

我的表有数十万行。当我选择所有sync_done为false的行时,是否会导致任何数据库性能问题?由于只获取值为falsesync_done行,因此是否应该对该列应用索引以提高性能?

比如说,我有10000行数据。其中9500行已经同步完成(sync_done是true)并且不会被选择。

请建议我如何继续操作。

4个回答

53

21

2

PostgreSQL现在支持位图索引。 - mlissner
@mlissner:那可能是一个误解。在Postgres中没有“位图索引”。Postgres支持许多不同类型的索引的索引访问方法“位图索引扫描” - Erwin Brandstetter
但它支持布隆过滤器,可以用于类似的情况。 - DylanYoung

1
一个索引肯定会有帮助,但是如果你的数据库使用频繁,轮询可能会导致负载和并发问题,因此考虑使用通知方法,例如 amqp 或基于触发器/数据库队列的方法,例如 SlonySkytools Londiste 可能更值得考虑。 我已经使用过 Slony 和 Londiste 来进行基于触发器的复制,并且发现两者都非常出色。我更喜欢 Londiste,因为它设置和管理起来更简单(如果您有一个简单的用例,请坚持使用旧的 2. 分支)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接