Closed5
MySQLのmax_allowed_packetについて

Reference

🔍 概要
クライアントとサーバー間で送受信できる1パケットあたりの最大サイズを定義するMySQLの設定。
この値を超えるデータをやり取りしようとすると、以下のようなエラーになる。
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes

🛠 どんなときに問題になる?
- BLOBやTEXTなど、大きなバイナリデータや文字列を扱うクエリ
- 長大なINSERT文やバッチ処理
- JSONなどを丸ごと1フィールドに入れるようなテーブル、またはカラムになっている場合など

⚠️ max_allowed_packet を大きくする際の注意点
- メモリ使用量の増加
- 各クライアント接続ごとに、max_allowed_packet に相当するメモリバッファが確保される可能性がある。
- 例えば、100接続 × 64MB の設定だと、最大6.4GBのメモリをバッファ用に確保することになる。
- 無制限に大きく設定すると、接続数の多いシステムでOOM(Out of Memory) のリスクが高まる。
- 大きなパケットは一括転送されるため、通信コストが増す
- クライアント→サーバー間の通信で、大きなデータを1パケットとして送信するため、ネットワークやI/Oへの負荷が高くなる。
- ネットワーク障害時のリトライや再接続のコストが大きくなり、タイムアウトの原因になることも。
このスクラップは5ヶ月前にクローズされました