பேசும் SQL பயன்பாடு VPN வழியாக ஏன் ஊர்ந்து செல்கிறது, எதைத் தொகுக்க வேண்டும்
நூறு சார்ந்திருக்கும் வினவல்களை அனுப்பும் திரை சுற்றுப் பயணத்தை நூறு முறை செலுத்துகிறது. காத்திருப்புகளை எண்ணுங்கள், சுயாதீனமானவற்றைத் தொகுக்கவும், பின்னர் செயலாக்கத்தை நகர்த்தவும்.
உள்ளூர் வலையமைப்பில் ஒரு வினாடிக்கும் குறைவாகத் திறக்கும் படிவம் VPN வழியாக ஐந்து வினாடிகள் எடுக்கிறது, அதே இணைப்பில் கோப்பு நகல் முழு வேகத்தில் ஓடுகிறது. வேறுபாடு அலைவரிசை அல்ல. படிவம் பதில்களின் வரிசைக்காகக் காத்து ஒவ்வொரு படிநிலையிலும் முழுச் சுற்றுப் பயணத்தைச் செலுத்துகிறது, கோப்பு நகல் பைட்டுகளைத் தொடர்ந்து பறக்கவிட்டபடி வைத்திருக்கிறது. அணுகல் இணைப்பைத் தொடுவதற்கு முன் அந்தக் காத்திருப்புகளை எண்ணுங்கள்.
அறிகுறி ஒரு திரை, ஒரு வினவல் அல்ல
அந்தத் திரையின் ஒவ்வொரு வினவலும் வேகமாக இருக்கலாம், திரை இன்னும் மெதுவாக இருக்கலாம், ஏனெனில் மொத்தம் செயலாக்க நேரங்களின் கூட்டுத்தொகை அல்ல, காத்திருப்புகளின் கூட்டுத்தொகை. இரண்டு மில்லிவினாடியில் இயங்கும் கூற்றும், அடுத்ததை அனுப்புவதற்கு முன் முடிவைப் பெற வேண்டியிருக்கும்போது முழுச் சுற்றுப் பயணத்தைச் செலுத்துகிறது. நாற்பது மில்லிவினாடி தாமதமுள்ள பாதையில், நூறு சார்ந்த அழைப்புகள் எந்த வரைதல் வேலையும் தொடங்குவதற்கு முன் ஏறக்குறைய நான்கு வினாடிகளாகக் கூடுகின்றன. இந்தக் கணக்கு காத்திருப்பின் மாதிரி, உங்கள் இணைப்பின் அளவு அல்ல.
அதனால்தான் வேகச் சோதனை குற்றமற்றதாகத் தெரிகிறது. மொத்தப் பரிமாற்றம் செயல்திறனை அளக்கிறது, பேசும் படிவம் தாமதத்தை அளக்கிறது, VPN ஒன்றில் சிறந்ததாகி மற்றொன்றில் சாதாரணமாக இருக்கலாம். எனவே திரையைக் கண்டறிவது என்பது இணைப்பை அல்ல, திரையை அளப்பதாகும்.
எதையும் மாற்றுவதற்கு முன் ஒரு பயனர் செயலின் தொடக்கத்திலிருந்து இறுதி வரையான நேரத்தைப் பதிவு செய்யுங்கள். பிந்தைய சரிசெய்தல் பலனளித்ததா எனச் சொல்லக்கூடிய ஒரே அடிப்படை அந்த எண்ணே.
ஒரு பயனர் செயலில் தொடர்ச்சியான காத்திருப்புகளை எண்ணுங்கள்
ஊகிப்பதற்குப் பதிலாக கிளையண்ட்டில் அளவீடு சேர்க்கவும். psql இல் \timing on ஒவ்வொரு கூற்றின் கடந்த நேரத்தை அச்சிடுகிறது, EXPLAIN (ANALYZE, BUFFERS) அந்த நேரத்தில் சேவையகம் உண்மையில் வேலைக்குச் செலவிட்டதைக் காட்டுகிறது.
அந்த இரண்டு எண்களுக்கு இடையிலான இடைவெளி உங்கள் வலையமைப்பு மற்றும் கிளையண்ட் செலவு. ஒரு கூற்று இரண்டு மில்லிவினாடியில் இயங்கி, கிளையண்ட் அறுபது பதிவு செய்தால், மீதமுள்ள ஐம்பத்து எட்டு பயணமும் உள்ளூர் செயலாக்கமும், எந்த குறியீட்டெண்ணும் அவற்றை நீக்காது. திரை அனுப்பும் ஒவ்வொரு கூற்றுக்கும் இந்த ஒப்பீட்டை மீண்டும் செய்து, செயலாக்க நேரங்களை அல்ல, இடைவெளிகளைக் கூட்டுங்கள்.
முடிவைத் தொடர்ச்சியான காத்திருப்புகளின் எண்ணிக்கையாக எழுதுங்கள். அடுத்த இரு பிரிவுகள் குறைக்கக்கூடிய அளவு அதுவே, அது சான்றுடன் வாதிடக்கூடிய எண்.
சுயாதீன அழைப்புகளைத் தொகுக்கவும், சார்ந்தவற்றை வைத்திருக்கவும்
ஒன்றின் முடிவை மற்றொன்று படிக்காத இரு கூற்றுகள் சேர்ந்து பயணித்து ஒருமுறை சேகரிக்கப்படலாம், இது இரு காத்திருப்புகளை ஒன்றாக மாற்றுகிறது. இரண்டாவதற்கு முதல் தேவைப்படும் இரு கூற்றுகள் அவ்வாறு செய்ய முடியாது, ஏனெனில் சார்பு உண்மையானது, தொகுத்தல் நிரல் செய்வதை மாற்றும். எதையும் மீண்டும் எழுதுவதற்கு முன் அழைப்புகளை அந்த இரு குவியல்களாகப் பிரிக்கவும், ஒவ்வொரு குவியலின் அளவும் என்ன சாத்தியம் எனச் சொல்லும்.
தொகுப்பு அடிப்படையிலான வேலை தொகுப்பதை விட முழுமையாகக் காத்திருப்புகளை நீக்குகிறது. ஒரு சுழற்சி ஒவ்வொன்றாக எடுத்த வரிசைகளைத் திருப்பித் தரும் ஒரு வினவல் சுழற்சியையும் சுற்றுப் பயணங்களையும் நீக்குகிறது. முதலில் சுழற்சியைத் தேடுங்கள், ஏனெனில் அது பொதுவாகப் பெரிய லாபமும் மதிப்பாய்வுக்கு எளிய மாற்றமும்.
தொகுப்பு இன்னும் பிழை கையாளுதலை மற்றும் பரிவர்த்தனை எல்லைகளை காக்க வேண்டும். தொடர்பற்ற கூற்றுகளை ஒரே சரமாக இணைப்பது பாதுகாப்பான உகப்பாக்கம் அல்ல, தோல்வியடைந்த கூற்றை வெற்றிகரமான சமர்ப்பிப்புக்குப் பின்னால் மறைக்கும் தொகுப்பு அது சேமித்த காத்திருப்புகளை விட மோசமானது.
அலைவரிசையை வாங்குவதற்கு முன் இணைப்புகளை மீண்டும் பயன்படுத்துங்கள்
புதிய இணைப்பு பெயர்த் தீர்வு, TCP கைக்குலுக்கல், TLS பேச்சுவார்த்தை மற்றும் அங்கீகாரத்தைச் செலவாக்குகிறது, அதிக தாமதமுள்ள பாதையில் அவை ஒவ்வொன்றும் முதல் வினவல் ஓடுவதற்கு முன் மற்றொரு சுற்றுப் பயணம். இணைப்புக் குளங்கள் அந்தச் செலவை ஒவ்வொரு அழைப்புக்கும் அல்ல, ஒவ்வொரு செயல்முறைக்கும் ஒருமுறை செலுத்த இருக்கின்றன.
ADO.NET இல், குளத்தில் உள்ள இணைப்பை மூடுவது அல்லது dispose செய்வது புதிய இயற்பியல் இணைப்பைத் திறப்பதற்குப் பதிலாக மீண்டும் பயன்பாட்டுக்குத் திருப்பித் தருகிறது, எனவே கசிவு போல் தெரியும் முறை பெரும்பாலும் சரியான பயன்பாடே. குளம் உண்மையில் பயன்பாட்டில் உள்ளதா என ஊகிக்காமல் சரிபார்க்கவும்: இயற்பியல் இணைப்பு உருவாக்கத்தைப் பதிவு செய்யுங்கள், அல்லது திரை ஓடும்போது சேவையகத்தில் அமர்வு எண்ணிக்கையைக் கவனியுங்கள். SQL செயல்திறன் வழிகாட்டுதல் சுற்றுப் பயணங்களைக் குறைப்பது மற்றும் அடிக்கடி நிகழும் ad hoc அழைப்புகளைத் தொகுப்பது பற்றி இதே கருத்தைச் சொல்கிறது, சேவைக்கு உரிய எடுத்துக்காட்டுகளுடன், அவற்றை உங்கள் சொந்தப் பயன்பாட்டுக்குப் பொருத்த வேண்டும்.
குளப்படுத்தல் அமைப்புச் செலவை நீக்கி, தொடர்ச்சியான வினவல் காத்திருப்புகளைத் தொடாமல் விடுகிறது. அது தானாக ஒரு சரிசெய்தல் அல்ல, தூய்மையான அளவீட்டுக்கான முன்நிபந்தனை.
செயலாக்கத்தைத் தரவுக்கு நெருக்கமாக நகர்த்துவதை எடைபோடுங்கள்
பயன்பாட்டை தரவுத்தளத்திற்கு அருகில் இயக்குவது பல தொலை தரவுத்தளப் பரிமாற்றங்களை ஒரே தொலைக் காட்சி அமர்வால் மாற்றுகிறது. பேசும் பணிச்சுமைக்கு அது பெரிய மாற்றமாக இருக்கலாம், அது செயல்திறன் மாற்றம் மட்டுமல்ல, செயல்பாட்டு மாற்றமும் கூட: அமர்வு நிர்வாகம், அணுகல் கட்டுப்பாடு, மென்பொருள் பயன்படுத்தல் மற்றும் பயனர் அனுபவம் அனைத்தும் பயன்பாட்டுடன் நகர்கின்றன.
எந்தத் திசை வேகமானது என ஊகிப்பதற்கு முன் உண்மையான இடைமுகத்தையும் அது மாற்றும் தரவையும் அளவிடுங்கள். தொலை பணிமேசை அமர்வு படப்புள்ளிகளை நகர்த்துகிறது, அடர்த்தியான வரைகலை உள்ள திரை அது மாற்றிய வினவல்களை விட அதே பாதையில் மோசமாகச் செயல்படலாம், குறிப்பாக கிளையண்ட் தொடர்ந்து மீண்டும் வரையும்போது.
பின்னர் அசல் செயலை மீண்டும் செய்து மூன்று எண்களை ஒப்பிடுங்கள்: தொடர்ச்சியான காத்திருப்புகள், முடிவின் அளவு மற்றும் தொடக்கத்திலிருந்து இறுதி வரையான நிறைவு நேரம். தரவுத் துல்லியத்தையும் அணுகல் கொள்கையையும் காத்து, அளக்கப்பட்ட பயனர் பணியை மேம்படுத்தும் மாற்றமே தக்கவைக்கத் தகுந்தது.