sql - 如何在没有重复的情况下进行多个并发批量插入?

标签 sql postgresql

假设我有 4 个进程,每个进程将同时插入 1000 strip 有 title, url (unique) 的记录到 blog_posts 表中。一些记录将包含重复的 url

由于进程之间的竞争条件,即使我在插入记录之前检查记录是否存在,为每个进程插入事务也会失败。每个进程的单个批量插入也会失败。我如何使用 Postgres 快速做到这一点?

我正在考虑将每个进程的记录排队到 Redis 或其他东西中,然后从那里大量插入它们以防止竞争条件,但我认为也许有一些更好的方法。

最佳答案

我升级到 Postgres v9.5 并使用带有 ON CONFLICT DO NOTHING 的批量插入,这让我既有速度又有能力避免重复。

关于sql - 如何在没有重复的情况下进行多个并发批量插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34621427/

相关文章:

sql - oracle中count(1)和count(*)的区别

sql - 获取postgresql中hstore数据的每行键数

sql - 从两个表中获取数据并显示在一行中,不重复,带有 where 条件

仅当没有匹配项时才加入 SQL

postgresql - 如何填充从 js 安装脚本创建的 jasperserver 数据库?

javascript - 如何检查数据库 PHP Laravel 中是否存在复选框数组值?

mysql - 在 MySql 中执行查询时与 only_full_group_by 相关的错误

java - 使用 JOOQ 记录存储过程的绑定(bind)值

python - 使用 Django 1.8 部署时出现应用程序错误

mysql - 使用 Perl 和 PostgreSQL 保存复选框选项