目次
目的
容量の大きい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)