[MySQL] 送信バッファサイズ見直し

目次

目的

容量の大きいjsonデータを一つのカラムに収納するケースがありそこで送信バッファサイズが足りずえらーになった

max_allowed_packetとは?

  • クライアントとMySQLサーバー間でやりとりされる 1回のSQLステートメント(パケット)の最大サイズを制限するもの。

  • 大きなデータの送受信時に影響します。

要するに一度に処理する最大サイズを決めている。

主に以下のケースで影響を受ける

操作内容

説明

INSERT / UPDATE で巨大な行を送るとき

例:JSON、BLOB、TEXT などが数MB〜

SELECT 結果が非常に大きいとき

1レコードが巨大 or 大量の列を含む場合

mysqldump / mysql でのインポート・エクスポート

1つのクエリが巨大で復元時に失敗することがある

ストアドプロシージャでのパラメータ送信

長いSQL文を構築・実行する場合など

バイナリログやレプリケーション時

大きなクエリが binlog に記録されるときも適用される(全体メモリにも影響)

DB情報確認

mysql> show variables like 'max_allowed_packet';
+--------------------+-----------+
| Variable_name | Value. |
+--------------------+-----------+
| max_allowed_packet | 268435456 | 
+--------------------+-----------+ 
1 row in set (0.10 sec)

この記事を書いた人

目次