Kueri kecil berhasil, yang besar gagal: ukuran paket yang mana?
Paket driver SQL Server, batas pesan MySQL, dan MTU jalur IP adalah satuan yang berbeda. Kegagalan yang bergantung pada ukuran tidak membuatnya bisa saling ditukar.
Kueri kecil kembali, yang besar menggantung atau putus, dan dugaan pertama adalah ada yang salah dengan ukuran paket. Dugaan itu biasanya benar dan hampir selalu diarahkan ke lapisan yang salah. Tiga pengaturan berbagi kata paket dan mengukur tiga hal yang tidak berhubungan: pengemasan transport driver basis data, batas pesan server basis data, dan unit transmisi maksimum jalur IP. Menyetel satu untuk memperbaiki gejala yang disebabkan oleh yang lain adalah cara masalah lima menit menjadi seminggu penyetelan. Urutan di bawah adalah yang paling sedikit menghabiskan waktu saya.
Tiga lapisan, satu kata yang sama
Setiap baris di bawah adalah satuan berbeda dengan pemilik berbeda, dan tidak satu pun bisa disimpulkan dari yang lain. Pesan basis data dapat mencakup banyak segmen TCP dan banyak paket IP, jadi memperbesar ukuran yang diizinkan tidak melebarkan jalur, dan menurunkan pengaturan driver bukan operasi yang sama dengan mengubah MTU antarmuka. Kata itu muncul di tiga berkas konfigurasi berbeda, itulah sebabnya mencarinya mengembalikan tiga jawaban yang tidak berhubungan. Baca teks galat lebih dulu, lalu putuskan berkas mana yang dibuka.
| Setting or observation | Unit it describes |
|---|---|
| SQL Server client network packet setting | The provider's transport packaging for that connection |
| MySQL communication packet limit | A database message, such as one statement, row or replication event |
| IP path MTU | The largest IP packet the path carries without fragmentation handling |
Catat lapisan mana yang menjadi tempat operasi yang gagal sebelum Anda membuka berkas konfigurasi. Teks galat biasanya mengatakannya, dan teks galat itulah bagian yang dilewati orang.
Identifikasi penyedia sebelum mengubah pengaturannya
Untuk SQL Server, catat aplikasi, nama driver atau penyedia, versi, dan konfigurasi koneksi yang berlaku. Skrip diagnostik dan aplikasi desktop dapat mencapai server yang sama melalui penyedia berbeda, jadi pengaturan yang membantu satu tidak membuktikan apa pun tentang yang lain. Nilai bawaan penyedia berbeda, dan bidang string koneksi dengan nama serupa bukan bukti bahwa setiap penyedia menafsirkannya dengan cara yang sama.
Jangan menukar driver yang dirawat dengan driver lama hanya karena solusi lama memakai sintaksnya. Dokumentasi saat ini tidak menganjurkan pengembangan baru terhadap komponen lama itu, dan mewarisi keterbatasannya adalah pertukaran buruk untuk satu pengaturan.
Penolakan pesan bukan kemacetan jalur
Di MySQL 8.4, dokumentasi paket komunikasi menjelaskan penolakan pernyataan, baris, atau peristiwa log biner yang terlalu besar terhadap batas yang berlaku, dan batas klien maupun server sama-sama dapat berpengaruh. Itu penolakan di lapisan basis data, bukan pernyataan bahwa jaringan harus membawa paket IP raksasa. Baca galat sebenarnya dan bentuk pesan yang bermasalah: hasil besar yang terdiri dari banyak baris kecil adalah kasus berbeda dari satu baris raksasa, dan keduanya gagal dengan cara berbeda.
Instalasi MariaDB memerlukan batas dan diagnostik terdokumentasi versinya sendiri. Menyalin nilai bawaan MySQL ke MariaDB adalah menebak dengan langkah tambahan.
Seperti apa bukti jalur sebenarnya
Masalah ukuran jalur punya sidik jari sendiri: kegagalan transport yang dapat direproduksi dan bergantung pada ukuran di sepanjang rute dan keluarga alamat tertentu, dengan beban tambahan terowongan ikut bermain dan umpan balik penemuan berperilaku sesuai yang diizinkan jalur. Batas waktu saja tidak membedakannya dari kueri lambat, bug driver, atau batas sisi server, dan memperlakukan batas waktu sebagai bukti masalah MTU mengirim Anda dengan yakin ke lapisan yang salah.
Jika Anda menguji jalur, jaga tujuan, akun, dan beban kerja tetap agar satu-satunya variabel adalah ukuran yang Anda uji. Uji yang mengubah tiga hal tidak memberi tahu Anda mana yang penting.
Ubah satu variabel terdokumentasi, lalu catat
Jaga tujuan, akun, penyedia, dan beban kerja tetap, catat nilai asli, terapkan satu perubahan yang didukung, dan catat hasilnya. Pengaturan lebih kecil yang membuat satu uji berhasil adalah bukti berguna tentang tumpukan yang diuji itu; itu bukan optimum universal dan tidak menetapkan apa yang menyebabkan kegagalan asli. Itu klaim yang berbeda, dan hanya yang pertama didukung oleh satu percobaan.
Selesaikan batas yang teridentifikasi di lapisannya sendiri, lalu catat lapisan mana itu. Catatan itulah yang mencegah orang berikutnya menyetel driver karena jalurnya yang bermasalah.