关于POSTGRES中表分区的建议

时间:2015-11-20 10:18:59

标签: postgresql database-schema data-modeling partitioning

我正在设计2张桌子。

user_table (userid username) 预期的100K记录

transaction_table(transactionid, date, description, userid) 预计有50亿条记录。预计每位用户将近50,000笔交易。

transaction_table存储用户完成的交易。此表很少有UPDATEDELETE个操作。有大量SELECTINSERT操作,但所有操作都基于userid。所以,我要么将用户的交易插入表中,要么我返回特定用户的交易。

分区transaction_table是否有意义?

这是因为,将有100K分区表,每个分区表用于1个用户。这在任何意义上都是好的吗?

我还有哪些其他选项可以在INSERT上快速执行SELECTtransaction_table次操作?

1 个答案:

答案 0 :(得分:0)

Postgresql不建议创建many partitions

  

检查主表的所有分区上的所有约束   在约束排除期间,可能存在大量分区   大大增加查询计划时间。使用这些分区   技术可以很好地与大约一百个分区一起使用;   不要尝试使用数千个分区。

在我看来,date(例如每月)创建的分区可能会好得多。

另一种选择是按userid%100创建分区,但不是每个用户创建分区。