ตามหน้า 99 ของ "การทำความเข้าใจกับ MySQL ภายใน" (ไอ 0-596-00957-7) ต่อไปนี้คือย่อหน้าที่ 1-3 ที่อธิบาย:
โค้ดการสื่อสารบนเครือข่าย MySQL นั้นเขียนขึ้นภายใต้สมมติฐานที่ว่าคิวรีนั้นสั้นพอสมควรดังนั้นจึงสามารถส่งและประมวลผลโดยเซิร์ฟเวอร์ในหนึ่งก้อนซึ่งเรียกว่าแพ็กเก็ตในคำศัพท์ MySQL เซิร์ฟเวอร์จะจัดสรรหน่วยความจำสำหรับบัฟเฟอร์ชั่วคราวเพื่อเก็บแพ็คเก็ตและมันก็ร้องขอเพียงพอที่จะทำให้มันพอดี สถาปัตยกรรมนี้จำเป็นต้องมีข้อควรระวังเพื่อหลีกเลี่ยงการที่เซิร์ฟเวอร์มีหน่วยความจำไม่เพียงพอซึ่งมีขนาดของแพ็คเก็ตซึ่งตัวเลือกนี้จะทำได้สำเร็จ
รหัสที่สนใจในความสัมพันธ์กับตัวเลือกนี้จะพบใน
SQL / net_serv.cc ลองดูที่my_net_read ()จากนั้นทำตามการเรียกร้องให้my_real_read ()และให้ความสนใจเป็นพิเศษกับ
net_realloc ()
ตัวแปรนี้ยังจำกัดความยาวของผลลัพธ์ของฟังก์ชั่นสตริงจำนวนมาก ดูSQL / field.ccและ
SQL / intem_strfunc.ccสำหรับรายละเอียด
นี่อาจเป็นคำอธิบายที่สมบูรณ์ที่สุดของ max_allowed_packet ที่ฉันเคยเห็น ฉันพิมพ์ 3 ย่อหน้าเหล่านั้นจากหนังสือ