Saya melihat jawaban yang menarik untuk pertanyaan tentang Gumpalan terbesar yang mungkin Anda miliki. Berikut adalah pernyataan yang saya lihat di ServerFault: innodb_log_file_size dan innodb_log_buffer_size digabungkan harus lebih besar dari sepuluh kali objek gumpalan terbesar Anda jika Anda memiliki banyak yang besar .
Berdasarkan posting ServerFault dari Nils-Anders Nøttseter , Anda harus menanyakan tabel dan mencari tahu BLOB mana yang terbesar, kalikan angka itu dengan 11 atau lebih, dan gunakan jawaban itu sebagai max_allowed_packet maju.
Lucu sekali saya menjawab pertanyaan lain di mana saya menyarankan untuk mengukur ukuran paket max_allowed agar saya bisa menyelesaikan masalah .
CAVEAT
Menurut Kitab
Berikut adalah apa yang dikatakan Page 99 Paragraf 1-3 tentang Paket MySQL:
Kode komunikasi jaringan MySQL ditulis dengan asumsi bahwa permintaan selalu cukup pendek, dan karena itu dapat dikirim ke dan diproses oleh server dalam satu potongan, yang disebut paket dalam terminologi MySQL. Server mengalokasikan memori untuk buffer sementara untuk menyimpan paket, dan meminta cukup untuk sepenuhnya cocok. Arsitektur ini memerlukan tindakan pencegahan untuk menghindari server kehabisan memori --- batas pada ukuran paket, yang dicapai opsi ini.
Kode yang terkait dengan opsi ini ditemukan di
sql / net_serv.cc . Lihatlah my_net_read () , lalu ikuti panggilan ke my_real_read () dan perhatikan
net_realloc () .
Variabel ini juga membatasi panjang hasil dari banyak fungsi string. Lihat sql / field.cc dan
sql / intem_strfunc.cc untuk detailnya.
Mengetahui hal ini tentang Paket MySQL memungkinkan DBA untuk mengukurnya untuk mengakomodasi beberapa BLOB dalam satu Paket MySQL, bahkan jika mereka terlalu besar.
Mengenai situasi Anda, Anda harus mencari tahu apa BLOB terbesar dalam database Anda, gandakan nomor itu dengan 11 dan atur max_allowed_packet Anda ke nomor itu. Anda harus dapat mengaturnya untuk server tanpa me-restart mysql (Secara pribadi, saya akan mengaturnya 256 juta karena akan mengatasi masalah lain mengenai migrasi dan replikasi, yang berada di luar ruang lingkup forum ini). Untuk mengaturnya ke 256 juta untuk database Anda untuk semua koneksi yang masuk, silakan jalankan ini:
SET GLOBAL max_allowed_packet = 1024 * 1024 * 256;
Setelah itu, tambahkan pengaturan ini ke my.cnf di bawah [mysqld]
bagian:
[mysqld]
max_allowed_packet = 256M