【问题标题】:Mysql2::Error: Out of sort memory, consider increasing server sort buffer size using docker-compose.ymlMysql2::Error: Out of sort memory,考虑使用 docker-compose.yml 增加服务器排序缓冲区大小
【发布时间】:2023-03-29 17:00:02
【问题描述】:

您好,我正在构建一个 Rails 应用程序,我导入了大量数据并插入到数据库中。有些表没问题,有些表有一些错误,表明内存不足。

SQL 错误

Mysql2::Error: Out of sort memory, consider increasing server sort buffer size

如何使用docker-compose.yml 命令增加服务器排序缓冲区大小?

我试过这个:

version: '3'
services:
  db:
    image: mysql:latest
    command:
      - --default-authentication-plugin=mysql_native_password
      - --innodb-buffer-pool-size=402653184

我确实添加了这个命令:

--innodb-buffer-pool-size=402653184

但我仍然收到内存不足的相同错误。有没有办法使用docker-compose.yml增加缓冲区大小

【问题讨论】:

  • 我已经更新了我的帖子,我正在使用 docker 作为我的环境设置。
  • 您的缓冲池大小很小,但它是一个固定的全局大小,并且错误与需要增加以完成查询的连接/会话缓冲区有关。虽然可以全局设置-- sort_buffer_size=XXXX,但这将转化为每个连接获得这个增加的大小可能会解决您的问题,它也可能在映射到正在执行的 SQL 查询的表上正确索引将消除对此的需要并进行查询快点。您能否说明导致此错误的 SQL 是什么以及相关人员的SHOW CREATE TABLE {tablename}
  • 如何在docker-compose.yml 中设置sort_buffer_size=XXXX?可以这样做sort_buffer_size=1G吗? @danblack

标签: mysql docker docker-compose mysql-workbench


【解决方案1】:

事实证明,当我对此进行测试时,这解决了我在 docker 中 mysql container 中的错误。

db 服务下的docker-compose.yml 中添加此命令以增加内存。

--sort_buffer_size=1073741824

在您的应用程序在 docker 上运行时消除错误。

Error "1038 Out of sort memory, consider increasing server sort buffer size

注意1073741824 等于字节,将导致1GB 内存分配。

【讨论】:

  • 1GB 内存分配每个会话
【解决方案2】:

首先,402653184 (byte) 大约是 400 MB,如果你不确定这个内存限制,那就再增加一点

    command:
      - --default-authentication-plugin=mysql_native_password
      - --innodb-buffer-pool-size=1G

然后验证容器内的更改。

SELECT @@innodb_buffer_pool_size/1024/1024/1024;
#it should return 1GB

另外,有可能是其他原因导致问题,您可以检查 CPU、内存和慢查询日志

SHOW ENGINE INNODB STATUS

然后您可以根据当前缓冲池大小分析输出

BUFFER POOL AND MEMORY
----------------------
BUFFER POOL AND MEMORY
----------------------
Total large memory allocated 412090368
Dictionary memory allocated 380237
Buffer pool size   24576
Free buffers       23618
Database pages     954
Old database pages 372
Modified db pages  0
Pending reads      0


MySQL optimization

【讨论】:

  • 我已经更新了我的命令,但我仍然收到关于 server sort buffer size 的错误,我认为这与 sort buffer size @Adiii 有关
猜你喜欢
  • 1970-01-01
  • 2020-12-25
  • 2015-06-17
  • 1970-01-01
  • 2013-09-08
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多