【问题标题】:Increase MySQL buffered query memory limit [duplicate]增加 MySQL 缓冲查询内存限制 [重复]
【发布时间】:2019-12-04 14:09:59
【问题描述】:

我在网上找不到答案,所以我碰运气在这里问。

如何增加 MySQL 缓冲查询内存限制?

我尝试使用 PHP 执行 PDO 查询,但出现错误 Out of memory (allocated 1444937728)。查了一会儿,发现跟PHP无关,跟MySQL的限制有关。

虽然改变mysql config仍然无法解决错误。这是我的配置

[mysqld]
port = 3306
socket = C:/neard/tmp/mariadb.sock
key_buffer_size = 64M
max_allowed_packet = 64M
bulk_insert_buffer_size = 2048M
table_open_cache = 1000
sort_buffer_size = 64M
read_buffer_size = 64M
read_rnd_buffer_size = 64M
innodb_sort_buffer_size = 32M
myisam_sort_buffer_size = 32M
basedir=C:/neard/bin/mariadb/mariadb10.3.8
log-error=C:/neard/logs/mariadb.log
datadir=C:/neard/bin/mariadb/mariadb10.3.8/data

long_query_time=3
slow_query_log_file=C:/neard/logs/slow_query.log

skip-external-locking

server-id = 1

innodb_buffer_pool_size = 128M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M

显然这个数字1444937728 是在某处定义或计算的,但我找不到关于此的文档。

注意:大部分表引擎是MyISAM

【问题讨论】:

  • 为什么不直接使用无缓冲查询?
  • @YourCommonSense 我可以,但我想尝试一个更简单的配置解决方案,而不是修改代码源,然后处理剩余的问题,例如免费结果或关闭当前光标。
  • 您不必释放结果或使用无缓冲查询关闭游标(假设您正在获取返回的所有行)
  • 好吧,无论哪种方式,您都只有一点选择 - 要么增加已经让我大吃一惊的内存限制,要么对一些 leviathan 数据集使用无缓冲查询。还可以考虑在适用时使用 LIMIT。

标签: php mysql pdo out-of-memory


【解决方案1】:

更改 php.ini 中的设置。

部分:sqlsrv

指令:sqlsrv.ClientBufferMaxKBSize。

client_buffer_max_kb_size = '50240'
sqlsrv.ClientBufferMaxKBSize = 50240

【讨论】:

  • 我认为这不适用于 MySQL。请参阅有关此的文档。
猜你喜欢
  • 2016-11-03
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 2014-05-31
  • 2011-01-06
  • 1970-01-01
相关资源
最近更新 更多