我的情況非常簡單。巨大的數據包沒有得到「數據包太大」的錯誤
我有一個配置爲max_allowed_packet設置爲16M的服務器。它運行Percona Server 5.1.52。
我在perl中編寫了一個簡單的腳本來執行巨大的批量插入操作。通過了解我通過DBI發送的數據字符串的大小,我大致知道數據包的大小。
無論大小如何,批量插入MySQL似乎接受數據包並執行插入操作,但我期待它爲我提供超過16M的數據包太大錯誤。
在此處,它變得非常怪異......
如果我設置max_allowed_packet個到16777215(一個字節小於16M)或任何低,我得到了超過該大小的數據包錯誤,顯然沒有得到錯誤的數據包在這個大小。
因此,看起來好像在16M以下的任何情況下都遵從數據包限制,但是16M或更高,並且完全被忽略。
有什麼想法可能導致這種情況?這真的很奇怪,而且大多數人使用max_allowed_packet都會遇到相反的問題。
是否有可能MySQL客戶端可以做一些自動分塊?服務器似乎只運行一個大的查詢,所以自動分塊似乎不太可能,因爲它可能顯示爲多個插入。
我可以檢查的任何變量以獲取有關正在發生的更多信息?
我插入大字符串,其行爲與BLOBs類似。 – 2010-12-12 16:47:08