【问题标题】:Change and Show max_allowed_packet of "client side" by MySQL command通过 MySQL 命令更改并显示“客户端”的 max_allowed_pa​​cket
【发布时间】:2019-01-27 11:43:26
【问题描述】:

我完全理解关于如何设置和显示 max_allowed_pa​​cket 值的问题。

SET:SET GLOBAL max_allowed_pa​​cket = numeric

显示:显示 'max_allowed_pa​​cket' 等变量;

但是这个变量是 max_allowed_pa​​cket服务器端

documentation中所述:

客户端和服务器都有自己的 max_allowed_pa​​cket 变量,所以如果你想处理大数据包,你必须增加这个 客户端和服务器中的变量。

我可以设置和显示 client side max_allowed_pa​​cket 像“SHOW VARIABLES LIKE XXX”这样的 MySQL 命令吗?

用这个选项启动mysql就可以了。

shell> mysql --max_allowed_pa​​cket=32M

但我正在寻找命令行。

【问题讨论】:

  • 没有。服务器不能强制客户端增加该值,这基本上定义了客户端想要使用多少缓冲内存(例如,因为客户端可能没有足够的内存)。实际上有点遗憾的是,“我要发送多少”和“我可以检索多少”这两个不同的值具有相同的名称。
  • 其实我之所以关心它是因为我正在尝试优化“每个查询的插入次数”以提高性能。但是我担心如果数据包超过“客户端max_allowed_pa​​cket”,它可能会失败并关闭连接。
  • 我的计划是,动态设置“每个查询的插入次数”,并取决于从“SHOW VARIABLES LIKE 'max_allowed_pa​​cket';”中检索到的 max_allowed_pa​​cket在运行期间。它是传统的还是更好的主意?
  • a) 您的客户端设置不反映您可以发​​送的内容,只是您可以接收的内容,因此对于您的插入,您可以使用服务器告诉您的变量 b) 而单个插入确实是缓慢并添加更多会增加吞吐量(行/秒),这将达到峰值(并且添加 太多 行实际上会再次减慢速度)。峰值可能会有所不同,但预计它在 500 的区域中比在 10k 的区域中更多。对于“正常”行大小,通常不会与 max_allowed_pa​​cket 冲突,而对于较大的行大小,峰值会降低(尽管速度不够快,无法产生冲突)。

标签: mysql database


【解决方案1】:
Ubuntu 18.04 and mysql 5.7.29

1) vi /etc/mysql/mysql.conf.d/mysqld.cnf
# make the following change:
max_allowed_packet = 1G

2) service mysql restart

3) sudo mysql -u <username> -p

4) mysql> show variables like 'max_allowed_packet';

【讨论】:

  • 虽然这些命令可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
猜你喜欢
  • 2012-08-16
  • 2015-07-11
  • 1970-01-01
  • 2011-12-25
  • 2015-08-31
  • 2012-12-18
  • 1970-01-01
  • 2012-09-04
  • 2017-10-07
相关资源
最近更新 更多