Kwa nini programu ya SQL inayozungumza sana inakwenda polepole kupitia VPN na nini cha kuunganisha
Skrini inayorusha maswali mia moja tegemezi hulipa safari ya kwenda na kurudi mara mia. Hesabu matarajio, unganisha yale huru, kisha hamisha utekelezaji.
Fomu inayofunguka chini ya sekunde moja kwenye mtandao wa ndani huchukua sekunde tano kupitia VPN, wakati nakala ya faili kwenye mstari huo huo inaenda kwa kasi kamili. Tofauti si upana wa bendi. Fomu husubiri mfululizo wa majibu na hulipa safari kamili ya kwenda na kurudi katika kila hatua, wakati nakala ya faili huweka baiti hewani mfululizo. Hesabu matarajio hayo kabla ya kugusa mstari wa ufikiaji.
Dalili ni skrini, si swali
Kila swali kwenye skrini hiyo linaweza kuwa la haraka na skrini bado linaweza kuwa la polepole, kwa sababu jumla ni jumla ya matarajio na si jumla ya nyakati za utekelezaji. Tamko linaloendeshwa kwa milisekunde mbili bado linagharimu safari kamili wakati mteja lazima apokee matokeo kabla ya kutuma linalofuata. Kwenye njia yenye ucheleweshaji wa milisekunde arobaini, wito mia moja tegemezi hukusanyika hadi takriban sekunde nne kabla ya kazi yoyote ya uchoraji kuanza. Hesabu hii ni mfano wa kusubiri, si kipimo cha mstari wako.
Ndiyo sababu jaribio la kasi linaonekana lisilo na hatia. Uhamishaji mkubwa hupima kasi ya mtiririko, fomu inayozungumza sana hupima ucheleweshaji, na VPN inaweza kuwa bora katika kimoja na kubaki ya kawaida katika kingine. Kwa hivyo kuchunguza skrini kunamaanisha kupima skrini, si mstari.
Rekodi muda kutoka mwanzo hadi mwisho wa kitendo kimoja cha mtumiaji kabla ya kubadilisha chochote. Nambari hiyo ndiyo msingi pekee unaoweza kukuambia kama marekebisho ya baadaye yalifanya kazi.
Hesabu matarajio mfululizo katika kitendo kimoja cha mtumiaji
Pima mteja badala ya kukisia. Katika psql, \timing on huchapisha muda uliopita wa kila tamko, na EXPLAIN (ANALYZE, BUFFERS) huonyesha ni kiasi gani cha muda huo seva ilitumia kweli kwenye kazi.
Pengo kati ya nambari hizo mbili ni gharama yako ya mtandao na mteja. Ikiwa tamko linaendeshwa kwa milisekunde mbili na mteja anarekodi sitini, bakaa hamsini na nane ni safari na usindikaji wa ndani, na hakuna faharasa itakayoziondoa. Rudia ulinganisho huo kwa kila tamko ambalo skrini hutoa na jumlisha mapengo, si nyakati za utekelezaji.
Andika matokeo kama hesabu ya matarajio mfululizo. Hiyo ndiyo kiasi ambacho sehemu mbili zinazofuata zinaweza kupunguza, na ni nambari unayoweza kujadili kwa ushahidi.
Unganisha wito huru, acha tegemezi
Tamko mbili ambazo hazisomi matokeo ya nyingine zinaweza kusafiri pamoja na kukusanywa mara moja, jambo linalobadilisha matarajio mawili kuwa moja. Tamko mbili ambapo la pili linahitaji thamani ya la kwanza haziwezi, kwa sababu utegemezi ni wa kweli na kuunganisha kungebadilisha kile programu inachofanya. Panga wito katika marundo hayo mawili kabla ya kuandika upya chochote, na ukubwa wa kila rundu unakuambia ni nini kinachowezekana.
Kazi inayotegemea seti huondoa matarajio kwa ukamilifu zaidi kuliko kuunganisha. Swali moja linalorudisha safu ambazo mzunguko ulikuwa ukichukua moja moja huondoa mzunguko na safari za kwenda na kurudi. Tafuta mzunguko kwanza, kwa sababu kwa kawaida ni faida kubwa na mabadiliko rahisi kukagua.
Kundi bado lazima lihifadhi ushughulikiaji wa makosa na mipaka ya miamala. Kuunganisha tamko zisizohusiana kuwa kamba moja si uboreshaji salama, na kundi linaloficha tamko lililoshindikana nyuma ya uwasilishaji uliofanikiwa ni mbaya zaidi kuliko matarajio iliyookoa.
Tumia tena miunganisho kabla ya kununua upana wa bendi
Muunganisho mpya hugharimu utatuzi wa majina, makubaliano ya TCP, majadiliano ya TLS na uthibitishaji, na kwenye njia yenye ucheleweshaji mkubwa kila kimoja ni safari nyingine kabla ya swali la kwanza kuendeshwa. Mabwawa ya miunganisho yapo ili kulipa gharama hiyo mara moja kwa mchakato na si mara moja kwa wito.
Katika ADO.NET, kufunga au dispose muunganisho wa bwawa kunaurudisha kwa matumizi tena badala ya kufungua mpya wa kimwili, kwa hivyo muundo unaoonekana kama uvujaji mara nyingi ni matumizi sahihi. Thibitisha kuwa bwawa linatumika kweli badala ya kudhani: andika kumbukumbu ya uundaji wa miunganisho ya kimwili, au angalia idadi ya vipindi kwenye seva wakati skrini inaendesha. Mwongozo wa utendaji wa SQL unasema jambo hilo hilo kuhusu kupunguza safari na kuunganisha wito za ad hoc zinazojirudia, pamoja na mifano mahususi ya huduma unayopaswa kuipanga kwenye usambazaji wako mwenyewe.
Kuweka kwenye bwawa huondoa gharama ya usanidi na huacha matarajio mfululizo ya maswali bila kuguswa. Ni sharti la kipimo safi, si marekebisho yenyewe.
Fikiria kuhamisha utekelezaji karibu na data
Kuendesha programu karibu na hifadhidata hubadilisha mabadilishano mengi ya mbali na hifadhidata kuwa kipindi kimoja cha onyesho la mbali. Kwa mzigo unaozungumza sana hilo linaweza kuwa badiliko kubwa, na ni badiliko la uendeshaji kama vile la utendaji: usimamizi wa vipindi, udhibiti wa ufikiaji, usambazaji wa programu na uzoefu wa mtumiaji vyote huhamia pamoja na programu.
Pima kiolesura halisi na data inayohamisha kabla ya kudhani mwelekeo wowote ni wa haraka zaidi. Kipindi cha desktop ya mbali huhamisha pikseli, na skrini yenye michoro minene inaweza kufanya vibaya kwenye njia hiyo hiyo kuliko maswali iliyobadilisha, hasa wakati mteja anachora upya mfululizo.
Kisha rudia kitendo cha awali na linganisha nambari tatu: matarajio mfululizo, kiasi cha matokeo na muda wa kukamilisha kutoka mwanzo hadi mwisho. Uboreshaji unaobadilisha kazi ya mtumiaji iliyopimwa huku ukihifadhi usahihi wa data na sera ya ufikiaji ndio unaostahili kubaki.