巨大的PostgreSQL表可能存在性能问题

时间:2012-06-16 02:57:54

标签: database performance postgresql

我创建的网站有“活动”。事件具有标题,日期和相关人员的用户标识。一个事件可以是跟随某人,创建新帖子等等。我正在考虑将所有事件存储在一个表中,但我可以看到它变得非常快。

我做得对吗?当我需要搜索表格,例如,与某个用户有关的事件时,系统上的收费会有多糟糕?我能以某种方式对其进行优化吗?

3 个答案:

答案 0 :(得分:1)

您可以在WHERE子句中最常使用的列上添加索引,例如如果您经常选择与某个用户相关的所有事件,则应在user_id列上创建索引。

http://www.postgresql.org/docs/9.1/static/sql-createindex.html

答案 1 :(得分:0)

只要该表中的数据为normalized,您就可以了。如果您发现该表上的读取查询速度变慢,则可以向某些列添加索引,但是请记住,这会减慢对该表的写入速度。

如果您发现性能太慢,您可以切换到使用一些更适合大型表的NoSQL数据库。

答案 2 :(得分:0)

如果表格真的很大,你可以使用分区: http://www.postgresql.org/docs/9.1/static/ddl-partitioning.html 但是你必须选择一个好的分区键 - 好的候选者是:

  • 事件时间戳
  • 事件类型
  • USER_ID