Мали упити се враћају, велики висе или падају, а прва помисао је да нешто није у реду са величином пакета. Та помисао је обично тачна и готово увек усмерена на погрешан слој. Три поставке деле реч пакет и мере три неповезане ствари: транспортно паковање драјвера базе података, ограничење порука сервера базе података и максималну преносну јединицу IP путање. Подешавање једне да би се исправио симптом који је изазвала друга јесте начин на који проблем од пет минута постаје недеља подешавања. Редослед испод је онај који ме је најмање коштао времена.

Три слоја, једна заједничка реч

Сваки ред испод је различита јединица са различитим власником и о ниједној се не може закључивати из осталих. Порука базе података може обухватити много TCP сегмената и много IP пакета, зато повећање њене дозвољене величине не проширује путању, а смањење поставке драјвера није иста операција као промена MTU интерфејса. Реч се појављује у три различите конфигурационе датотеке, зато претрага за њом враћа три неповезана одговора. Прво прочитајте текст грешке, па одлучите коју датотеку да отворите.

Setting or observationUnit it describes
SQL Server client network packet settingThe provider's transport packaging for that connection
MySQL communication packet limitA database message, such as one statement, row or replication event
IP path MTUThe largest IP packet the path carries without fragmentation handling

Запишите којем слоју припада неуспела операција пре него што отворите конфигурациону датотеку. Текст грешке то обично каже, а управо тај део људи прескачу.

Идентификујте добављача пре него што промените његову поставку

За SQL Server запишите апликацију, назив драјвера или добављача, верзију и ефективну конфигурацију везе. Дијагностичка скрипта и десктоп апликација могу стићи до истог сервера преко различитих добављача, зато поставка која помаже једном не доказује ништа о другом. Подразумеване вредности добављача се разликују, а поље у низу за повезивање са сличним именом није доказ да га сваки добављач тумачи на исти начин.

Не замењујте одржавани драјвер старим само зато што је старо заобилазно решење користило његову синтаксу. Актуелна документација не подстиче нови развој на тим старијим компонентама, а наслеђивање њихових ограничења је лоша трговина за једну поставку.

Одбијање поруке није застој путање

У MySQL 8.4, документација за комуникациони пакет описује одбијање превелике наредбе, реда или догађаја бинарног дневника према применљивом ограничењу, и могу бити важна и клијентска и серверска ограничења. То је одбијање на слоју базе података, а не тврдња да мрежа мора носити огроман IP пакет. Прочитајте стварну грешку и облик проблематичне поруке: велики резултат састављен од много малих редова је другачији случај од једног огромног реда и они не успевају на различит начин.

Инсталације MariaDB захтевају документована ограничења и дијагностику сопствене верзије. Копирање подразумеваних вредности MySQL на MariaDB је нагађање са додатним корацима.

Како доказ о путањи заиста изгледа

Проблем величине путање има свој отисак прста: поновљив транспортни отказ зависан од величине на одређеној рути и фамилији адреса, са трошком тунела у игри и повратном информацијом откривања која се понаша како путања дозвољава. Само истек времена не разликује га од спорог упита, грешке у драјверу или серверског ограничења, и третирање истека времена као доказа MTU проблема шаље вас са сигурношћу на погрешан слој.

Ако тестирате путању, држите одредиште, налог и радно оптерећење фиксним да једина променљива буде величина коју проверавате. Тест у којем су се промениле три ствари не говори вам ништа о томе која је била важна.

Промените једну документовану променљиву, па је запишите

Држите одредиште, налог, добављача и радно оптерећење константним, запишите оригиналну вредност, примените једну подржану промену и запишите резултат. Мања поставка која чини да један тест успе је корисни доказ о том тестираном стеку; није универзални оптимум и не утврђује шта је изазвало оригинални отказ. То су различите тврдње и само је прва поткрепљена једним експериментом.

Решите идентификовано ограничење на његовом сопственом слоју, па забележите који је слој био. Управо белешка спречава следећу особу да подешава драјвер зато што је путања била проблем.

Повезани чланци