首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当与PDO和准备好的语句一起使用时,如何确定所需的max_allowed_packet大小?

当与PDO和准备好的语句一起使用时,如何确定所需的max_allowed_packet大小?
EN

Stack Overflow用户
提问于 2016-12-13 16:16:29
回答 1查看 2K关注 0票数 0

或者通过示例,max_allowed_packet需要什么来执行以下查询?请不要只给我价值,而是解释你是如何决定它的。谢谢

代码语言:javascript
复制
$stmt=$pdo->prepare('INSERT INTO t(c1,c2,c3) VALUES(?,?,?)');
$stmt->execute([9876543210,9876543210,9876543210]);

编辑。或者这个呢:

代码语言:javascript
复制
$sql='INSERT INTO t(pk,c1,c2) VALUES(?,?,?), (?,?,?), (?,?,?)
ON DUPLICATE KEY UPDATE c1=VALUES(c1),c2=VALUES(c2)';
$stmt=$pdo->prepare($sql);
$stmt->execute([1,111,111,2,222,222,3,333,333]);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-13 18:25:04

要计算max_allowed_packet大小,取最大blob列的字节长度并乘以11。

在您的示例中,虽然您有一个冗长的查询,而不是大量的blob数据。根据我的经验,11乘准则仍然有效,但这并不是调整值的最佳方法。

如上所述,证据是优化此值的最佳方法。我会将max_allowed_packet设置为任意巨大的值,比如1G。(我相信,最大的MySQL支持。)然后,在正常操作中运行您的软件。如果没有得到PACKET_TOO_LARGE错误,那么将值减半,然后再试一次。重复,直到溢出限制,然后加倍。这将代表一个合理的上限,为您的特殊需要,有很大的增长空间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41125695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档