0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ERROR 1038 (HY001): Out of sort memory, consider increasing server sort buffer size

Posted at

起きたこと

Out of sort memory, consider increasing server sort buffer size
・やたら大きいデータを入れたJSON型のカラムを含むテーブルにORDER BYをかけた際にエラーが発生したと報告があった。
・別チームの担当している本番環境のデータのためどのような値が入ったという情報が遠回しにふんわりとしか教えてもらえなかった。

原因

MySQL ver8.0.28以前の場合に発生するバグ
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-28.html#mysqld-8-0-28-data-types

Sorts of some column types, including JSON and TEXT, sometimes exhausted the sort buffer if its size was not at least 15 times that of the largest row in the sort. Now the sort buffer need only be only 15 times as large as the largest sort key. (Bug #103325, Bug #105532, Bug #32738705, Bug #33501541)

機械訳:
「JSONやTEXTを含むいくつかのカラム型のソートでは、ソートバッファのサイズがソートの最大行の15倍以上でないと、ソートバッファを使い果たしてしまうことがありました。この問題は、ソートバッファのサイズがソートの最大キーの 15 倍であれば解決するようになりました。(Bug #103325, Bug #105532, Bug #32738705, Bug #33501541)」

sort_buffer_sizeがデフォルト値(256KB)で設定されているため、ソート対象に約17KBを超えるサイズのカラムが存在すると処理しきれずにエラーが発生する可能性がある

今回の対処

・JSON型カラムに入る値の大きさを制限していなかったためAPIの内部処理で4KB以下に制限した
・将来的にMySQLのアップデートで対応したい

引用:
ERROR 1038 (HY001): Out of sort memory, consider increasing server sort buffer size

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?