
MySQL 資料庫中,參數 max_allowed_packet
是什麼?
在 MySQL 資料庫的設定中,參數 max_allowed_packet
是用來定義單個 MySQL 協議資料 封包(packet) 的最大容許大小,這個參數會影響伺服器與客戶端之間傳輸的資料量,尤其是涉及 二進制大型文件(binary large object, BLOB) 操作時。
MySQL 資料庫中,參數 max_allowed_packet
有何作用?
調整 max_allowed_packet
參數會影響到資料庫的效能與行為,簡單整理如下:
- 限制資料傳輸大小:當資料庫需要插入、更新或查詢大量數據,或是涉及 BLOB 文件操作時,如若傳輸的封包大小超出
max_allowed_packet
參數的限制,會使得操作失敗,或直接斷開連線。 - 資料庫服務的效能:增加
max_allowed_packet
參數雖然可以處理較大的封包,但也會使用較多的記憶體資源來處理這些資料封包;因此如果沒有妥善設定該數值,會造成資料庫服務的效能下降。 - 資料庫的複製操作:對於 MySQL 的主從複製(replication)操作也需要進行資料傳輸,因此也會受到
max_allowed_packet
參數的限制;如果從屬資料庫(slave database)的max_allowed_packet
參數設定的比主要資料庫(master database)的要小,可能會導致複製中斷。
max_allowed_packet
參數值。。
如何設置 MySQL 資料庫的 max_allowed_packet
參數?
檢查大小
SHOW VARIABLES LIKE '%max_allowed_packet%';
服務配置
可以直接調整 MySQL 設定文件my.cnf
或 my.ini
中的參數大小:
[mysqld]
max_allowed_packet
臨時修改
如果僅只是短暫地調整,在具備有SUPER
權限的狀況下,也可以執行以下 SQL 語句動態調整:
-- 設定為 64 MB
SET GLOBAL max_allowed_packet = 1024 * 1024 * 64;
客戶端如果也有其傳輸封包的大小限制也會影響 MySQL 資料庫是否能夠正常連線與操作,比如早期 PHP 中的
mysql
擴展庫(extension)的預設大小僅有 1 MB,甚至有些設備的防火牆與代理伺服器也會有封包大小限制。
張貼留言