Postgresql postgres多张桌子vs一张大桌子

Postgresql postgres多张桌子vs一张大桌子,postgresql,database-design,Postgresql,Database Design,我正在使用postgresql数据库。 我的应用程序管理许多相同类型的对象。 对于每个对象,我的应用程序都执行密集的db写入—每个对象至少每30秒向db插入一行。我还需要按对象id检索数据。 我的问题是如何最好地设计数据库?对所有对象使用一个大表(较慢的插入)或对每个对象使用表(更复杂的检索) 表格用于容纳大量相同类型的对象。所以,您的第二个选项,即每个对象一个表,看起来不太正确。当然,还需要更多的信息 我的建议:从一张桌子开始。如果遇到问题,主要是性能问题,请尝试将其拆分。这并不难。表格用于容

我正在使用postgresql数据库。 我的应用程序管理许多相同类型的对象。 对于每个对象,我的应用程序都执行密集的db写入—每个对象至少每30秒向db插入一行。我还需要按对象id检索数据。
我的问题是如何最好地设计数据库?对所有对象使用一个大表(较慢的插入)或对每个对象使用表(更复杂的检索)

表格用于容纳大量相同类型的对象。所以,您的第二个选项,即每个对象一个表,看起来不太正确。当然,还需要更多的信息


我的建议:从一张桌子开始。如果遇到问题,主要是性能问题,请尝试将其拆分。这并不难。

表格用于容纳大量相同类型的对象。所以,您的第二个选项,即每个对象一个表,看起来不太正确。当然,还需要更多的信息


我的建议:从一张桌子开始。如果遇到问题,主要是性能问题,请尝试将其拆分。这并不难。

如果您确定所有对象将继续具有相同的属性,那么单个表可能是最好的解决方案

INSERT
不会随着表的增长而明显变慢–索引的数量会减慢数据修改的速度


我宁愿担心数据的增长。您是否有一个清除旧数据的设计?大的
DELETE
s会很痛苦;有时分区会有所帮助。

如果您确信所有对象将继续具有相同的属性,那么单个表可能是最好的解决方案

INSERT
不会随着表的增长而明显变慢–索引的数量会减慢数据修改的速度


我宁愿担心数据的增长。您是否有一个清除旧数据的设计?大的
DELETE
s会很痛苦;有时分区会有所帮助。

从逻辑上讲,您应该使用一个表

然而,PostgreSQL所表现出的所谓“写放大”问题似乎是其主要原因之一。引述:

“对于具有大量二级索引的表,这些 多余的步骤会导致巨大的效率低下 我们有一个表,上面定义了十几个索引,是对 仅由单个索引覆盖的字段必须传播到 所有12个索引都反映了新行的ctid。”


对于您的工作负载来说,这是否是一个问题,只有测量才能判断-我建议从一个表开始,测量性能,然后切换到多表(或分区,或者可能完全切换DBMS),前提是测量证明了这一点。

从逻辑上讲,您应该使用一个表

然而,PostgreSQL所表现出的所谓“写放大”问题似乎是其主要原因之一。引述:

“对于具有大量二级索引的表,这些 多余的步骤会导致巨大的效率低下 我们有一个表,上面定义了十几个索引,是对 仅由单个索引覆盖的字段必须传播到 所有12个索引都反映了新行的ctid。”


这是否是您的工作负载的问题,只有测量才能判断-我建议从一个表开始,测量性能,然后切换到多表(或分区,或者可能完全切换DBMS),前提是测量证明了这一点。

表的结构不清楚,但一般来说,表意味着插入、检索、修改、删除记录等。。。因此,除非您有创建多个表的特定原因,否则我建议您使用单个表并正确地计算索引。也许您可以在问题中详细说明您的表设计。表的结构尚不清楚,但一般来说,表意味着插入、检索、修改、删除记录等。。。因此,除非您有创建多个表的特定原因,否则我建议您使用单个表并正确地计算索引。也许你可以在你的问题中详细说明你的桌子设计。