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

时间:2015-12-22 06:58:40

标签: django postgresql bulkinsert

我使用Django 1.6和postgres,特定表上的bulk_create会锁定整个表吗? (在我的情况下,我是批量创建10,000行,大约需要10秒)我已经测试了这一点,同时每半秒创建一次对象,同时批量创建正在发生,并且没有一个人创建挂起,但我&#39 ; d只是想确定一下。谢谢!

1 个答案:

答案 0 :(得分:1)

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

用法:bulk_create(obj_list, batch_size=None)

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

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