Django bulk_create 在插入行时是否锁定整个 table?

Does Django bulk_create lock the entire table while inserting the rows?

我正在使用 Django 1.6 和 postgres,在特定 table 上的 bulk_create 会锁定整个 table 吗? (在我的例子中,我正在批量创建 10,000 行,这需要大约 10 秒)我已经测试过这个,同时每半秒创建一次对象,同时批量创建正在发生并且 none 这些个人创建挂起但我会只是想确定一下。谢谢!

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

用法:bulk_create(obj_list, batch_size=None)

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

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