Kiçik sorğular işləyir, böyüklər uğursuz olur: hansı paket ölçüsüdür?
SQL Server sürücü paketləri, MySQL mesaj limitləri və IP yolunun MTU-su fərqli vahidlərdir. Ölçüdən asılı nasazlıq onları bir-birini əvəz edən etmir.
Kiçik sorğular cavab qaytarır, böyüklər donur və ya düşür, və ilk instinkt paket ölçüsü ilə bağlı nəyinsə səhv olduğudur. Bu instinkt adətən doğrudur və demək olar ki, həmişə yanlış qatı hədəfləyir. Üç parametr paket sözünü paylaşır və üç əlaqəsiz şeyi ölçür: verilənlər bazası sürücüsünün nəqli qablaşdırması, verilənlər bazası serverinin mesaj limiti və IP yolunun maksimum ötürmə vahidi. Birini digərinin yaratdığı simptomu düzəltmək üçün tənzimləmək beş dəqiqəlik problemi bir həftəlik tənzimləməyə çevirən yoldur. Aşağıdakı sıra mənə ən az vaxt itirdiyim sıradır.
Üç qat, bir ümumi söz
Aşağıdakı hər sətir fərqli sahibi olan fərqli bir vahiddir və heç biri digərlərindən çıxarıla bilməz. Verilənlər bazası mesajı çoxlu TCP seqmentinə və çoxlu IP paketinə yayıla bilər, ona görə də onun icazə verilən ölçüsünü artırmaq yolu böyütmür və sürücü parametrini azaltmaq interfeys MTU-sunu dəyişməklə eyni əməliyyat deyil. Söz üç fərqli konfiqurasiya faylında görünür, buna görə də onu axtarmaq üç əlaqəsiz cavab qaytarır. Əvvəlcə xəta mətnini oxu, sonra hansı faylı açacağına qərar ver.
| 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 |
Konfiqurasiya faylını açmazdan əvvəl uğursuz əməliyyatın hansı qata aid olduğunu yaz. Xəta mətni bunu adətən deyir və xəta mətni insanların atladığı hissədir.
Parametrini dəyişməzdən əvvəl provayderi müəyyən et
SQL Server üçün tətbiqi, sürücü və ya provayder adını, versiyanı və effektiv bağlantı konfiqurasiyasını qeyd et. Diaqnostik skript və masaüstü tətbiqi eyni serverə fərqli provayderlərlə çata bilər, ona görə birinə kömək edən parametr digəri haqqında heç nə sübut etmir. Provayderlərin defoltları fərqlidir və oxşar adlı bağlantı sətri sahəsi hər provayderin onu eyni cür şərh etdiyinə dəlil deyil.
Yalnız köhnə bir həll onun sintaksisindən istifadə etdiyi üçün dəstəklənən sürücünü köhnəsi ilə dəyişmə. Mövcud sənədlər həmin köhnə komponentlərə qarşı yeni işləməyi tövsiyə etmir və onların məhdudiyyətlərini miras almaq bir parametr üçün pis mübadilədir.
Mesajın rədd edilməsi yolun dayanması deyil
MySQL 8.4-də kommunikasiya paketi sənədləri həddindən böyük bir ifadənin, sətrin və ya ikili jurnal hadisəsinin tətbiq olunan limitə görə rədd edildiyini təsvir edir və həm müştəri, həm server limitləri vacib ola bilər. Bu, verilənlər bazası qatında rədd etmədir, şəbəkənin nəhəng IP paketi daşımalı olduğu ifadəsi deyil. Faktiki xətanı və problemli mesajın formasını oxu: çoxlu kiçik sətirdən ibarət böyük nəticə bir nəhəng sətirdən fərqli haldır və onlar fərqli şəkildə uğursuz olur.
MariaDB quraşdırmaları öz versiyalarının sənədləşdirilmiş limitlərinə və diaqnostikasına ehtiyac duyur. MySQL defoltlarını MariaDB-yə köçürmək əlavə addımlarla təxmin etməkdir.
Yol sübutu əslində nə kimi görünür
Yol ölçüsü probleminin öz barmaq izi var: müəyyən bir marşrut və ünvan ailəsi boyunca təkrarlanan, ölçüdən asılı nəqli nasazlıq, tunelin əlavə yükü işə düşür və kəşf əks əlaqəsi yolun imkan verdiyi kimi davranır. Tək bir fasilə onu yavaş sorğudan, sürücü xətasından və ya server tərəfli limitdən ayırmır və fasiləni MTU probleminin sübutu kimi qəbul etmək səni əminliklə yanlış qata göndərir.
Yolu həqiqətən test edirsənsə, təyinatı, hesabı və iş yükünü sabit saxla ki, yeganə dəyişən yoxladığın ölçü olsun. Üç şeyin dəyişdiyi test hansının vacib olduğu barədə sənə heç nə demir.
Bir sənədləşdirilmiş dəyişəni dəyiş, sonra onu qeyd et
Təyinatı, hesabı, provayderi və iş yükünü sabit saxla, ilkin dəyəri qeyd et, bir dəstəklənən dəyişiklik tətbiq et və nəticəni qeyd et. Bir testin keçməsinə səbəb olan kiçik parametr həmin sınaqdan keçmiş stek haqqında faydalı sübutdur; o, universal optimum deyil və ilkin nasazlığın səbəbini müəyyən etmir. Bunlar fərqli iddialardır və yalnız birincisi tək bir təcrübə ilə dəstəklənir.
Müəyyən edilmiş limiti öz qatında həll et, sonra hansı qat olduğunu qeyd et. Qeyd məhz növbəti insanın yol problem olduğu üçün sürücünü tənzimləməsinin qarşısını alır.