Django cursor.executemany 每个 "executemany" 的首选批量大小是多少
Django cursor.executemany what's the preferred batch size for each "executemany"
我使用以下代码通过扩展的“插入”进行批量插入。
cursor = connections['default'].cursor()
sql = "INSERT INTO %s (%s) VALUES ([xxx], [xxx], ...) "
step = 1000
for l in range(0, len(values), step):
s_values = values[l:l+step]
cursor.executemany(sql, s_values)
我的问题是如果我有很多行要插入,例如 100, 000:
我应该在一个查询中插入吗?
或者调用多个固定步长的executemany,比如1000。
看了一些文章,建议用100。
我用 100, 000 条记录测试了我的代码。
一次执行多次比多次执行快。
我不知道该怎么办。不确定我是否错过了这里的内容。
请帮忙评论。谢谢
MySQL 文档有助于详细说明:
In most cases, the executemany() method iterates through the sequence of parameters, each time passing the current parameters to the the execute() method.
An optimization is applied for inserts: The data values given by the parameter sequences are batched using multiple-row syntax.
我使用以下代码通过扩展的“插入”进行批量插入。
cursor = connections['default'].cursor()
sql = "INSERT INTO %s (%s) VALUES ([xxx], [xxx], ...) "
step = 1000
for l in range(0, len(values), step):
s_values = values[l:l+step]
cursor.executemany(sql, s_values)
我的问题是如果我有很多行要插入,例如 100, 000:
我应该在一个查询中插入吗?
或者调用多个固定步长的executemany,比如1000。
看了一些文章,建议用100。
我用 100, 000 条记录测试了我的代码。
一次执行多次比多次执行快。
我不知道该怎么办。不确定我是否错过了这里的内容。
请帮忙评论。谢谢
MySQL 文档有助于详细说明:
In most cases, the executemany() method iterates through the sequence of parameters, each time passing the current parameters to the the execute() method.
An optimization is applied for inserts: The data values given by the parameter sequences are batched using multiple-row syntax.