0

我是 PostgreSQL 的新手,我仍然在学习很多东西。我的公司正在使用 PostgreSQL,我们正在用大量数据填充数据库。我们收集的数据在本质上非常庞大,并且来自某些类型的视频片段。例如,与大约 15 分钟的视频相关的数据花了我大约 2 天的时间才摄取到数据库中。

我的问题是我有与数小时视频相关的数据集,这些视频需要数周时间才能摄取到数据库中。我被告知需要这么长时间才能摄取的部分原因是因为 PostgeSQK 默认将自动提交设置为 true,并且提交事务需要大量时间/资源。我被告知我可以关闭自动提交,因此该过程将大大加快。但是,我担心的是多个用户将填充此数据库。如果我每 10 秒更改一次程序以提交,并且两个人正试图填充同一张表。第一个人得到一个id,当他在说记录 7 时,第二个人尝试插入到同一个表中,他们得到相同的id密钥,一旦第一个人决定提交他的更改,第二个人的id密钥将已经被使用,从而引发错误。

那么当多人同时摄取数据时,将数据插入 PostgreSQL 数据库的最佳方式是什么?id在自动提交模式下插入数据时,有没有办法解决向多人发出相同的密钥的问题?

4

1 回答 1

2

如果 ID 来自serial类型或 PostgreSQL 序列(由该serial类型使用),那么您永远不必担心两个用户从序列中获得相同的 ID。这根本不可能。该nextval()函数只分发一次给定的 ID。

于 2013-08-12T13:35:07.150 回答