如何选择合适的批处理大小,我也有一个疑问。比方说,我的数据集中有50000行,我正在尝试使用batch将其插入sql。使用批处理的目的是为了节省时间。那么,为什么我必须将批处理大小设置为小集合,为什么我不能只创建50000的批处理大小,而只执行一次呢?
正如@Erik所说,max_allowed_packet
默认情况下为4MB。您的某一行的平均长度是否超过83个字节?乘以50,000将超出默认的语句长度。
您的列是否为可变长度,例如VARCHAR或TEXT或BLOB?如果是这样,则50,000行可能比您预期的要长,具体取决于您需要加载的数据。也许今天您可以将50,000行放入一个批处理中,但是下周它将失败,因为数据会导致SQL语句过长,即使行数相同也是如此。
同样在本周,它有50,000行。如果下周数据负载为100,000行怎么办?您事先知道吗?编写代码以将输入数据拆分为较小的,规模较小的批处理不是更安全吗?
另一个原因是,非常大的事务可能会给InnoDB日志缓冲区或二进制日志缓冲区带来麻烦。
如果语句本身需要几秒钟,它也会导致临时复制延迟。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句