gpt4 book ai didi

mysql - 如何确定 MySQL 批量插入的缓冲区大小

转载 作者:行者123 更新时间:2023-11-29 14:16:57 30 4
gpt4 key购买 nike

我正在编写一个将使用批量插入语句的迁移。它在数据库中搜索某些信息并将其编译为特定表中使用的格式并使用下面的 INSERT 方法写入它。将运行此程序的 MySQL 机器的 max_allowed_pa​​cket 大小均为 16MB,我无法更改该大小。

我对此还很陌生。当缓冲区中的字符刚好低于 16MB 时,我尝试插入缓冲区中的内容。这不起作用。 max_allowed_pa​​cket 大小超过 16MB 并导致问题。对于任何知道自己在做什么的人来说,原因可能是显而易见的(但对我来说不是)。

我需要知道如何计算在给定的 max_allowed_pa​​cket 大小下可以插入多少个字符。我们使用 INNODB 存储引擎。

这或多或少是我的插入语句的样子:

INSERT INTO _table_ (col_name1, col_name2, col_name3) 
VALUES (val1, val2, val3), (val1, val2, val3), (val1, val2, val3)... etc.

如果我需要提供更多信息,请告诉我。此时我真的不知道该怎么办。

编辑以澄清问题。

最佳答案

我遇到了类似的问题,并通过反复试验发现了以下问题。

  1. max_allowed_pa​​cket-1 是查询的最大字符数可以有。
  2. 查询中的空格将添加到查询的长度

例如。

INSERT INTO _table_ (col_name1) Values('value1')    -- 1   

短于

INSERT INTO _table_ (col_name1   ) Values('value1'    )    -- 2  

当考虑字符串长度时,这似乎相当明显,但是将两者视为查询,并且您期望两者的行为完全相同。
如果max_allowed_pa​​cket大于上面'1'的长度且小于'2',则2不会执行,而1正常运行

关于mysql - 如何确定 MySQL 批量插入的缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12484076/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com