django - Django的bulk_create在插入行时会锁定整个表吗?

标签 django postgresql bulkinsert

我正在使用 Django 1.6 和 postgres,特定表上的bulk_create 会锁定整个表吗? (在我的例子中,我批量创建 10,000 行,需要大约 10 秒)我已经在批量创建发生时每半秒创建一次对象时对此进行了测试,并且这些单独的创建都没有挂起,但我只想制作当然。谢谢!

最佳答案

bulk_create 以高效的方式将提供的对象列表插入数据库(通常只有 1 个查询,无论有多少个对象),因此它会阻止表执行原子操作交易

用法:bulk_create(obj_list, batch_size=None)

batch_size 参数控制在单个查询中创建的对象数量。默认情况下是在一批中创建所有对象,但 SQLite 除外,默认情况下每个查询最多使用 999 个变量。

以下article还可以让您了解 bulk_create 相对于其他方法的速度有多快。

关于django - Django的bulk_create在插入行时会锁定整个表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34410110/

相关文章:

postgresql - PostgreSQL 中两个日期之间的差异

sql - updated_at 和 creatd_at 之间的差异的事件记录子集

postgresql - 你如何找到程序的限制因素?

sql-server - 批量插入失败,因为动态 sql

从数据库加载的 Django 表单选择不会更新

javascript - AngularJS:意外的标识符 $http POST

javascript - 启用禁用 Django 中下拉值选择的文本字段

python 速成类(class)使未注册用户可以访问 django 帖子

sql - 只有内置函数的 urlencode

php - 批量参数化插入