
தத்துவ அறிமுகம்
உங்களுக்குத் தெரியும், சிக்கலைத் தீர்க்க இரண்டு வழிகள் மட்டுமே உள்ளன:
- பகுப்பாய்வு முறை அல்லது துப்பறியும் முறை, அல்லது பொதுவாக இருந்து குறிப்பிட்டது.
- தொகுப்பு முறை அல்லது தூண்டல் முறை, அல்லது குறிப்பிட்டது முதல் பொதுவானது.
"தரவுத்தள செயல்திறனை மேம்படுத்த" சிக்கலைத் தீர்க்க, இது இப்படி இருக்கலாம்.
Анализ — நாங்கள் சிக்கலை தனித்தனி பகுதிகளாக பகுப்பாய்வு செய்கிறோம், அவற்றைத் தீர்ப்பதன் மூலம் ஒட்டுமொத்த தரவுத்தளத்தின் செயல்திறனை மேம்படுத்த முயற்சிக்கிறோம்.
நடைமுறையில், பகுப்பாய்வு இதுபோல் தெரிகிறது:
- ஒரு சிக்கல் ஏற்படுகிறது (செயல்திறன் சம்பவம்)
- தரவுத்தளத்தின் நிலையைப் பற்றிய புள்ளிவிவரத் தகவல்களைச் சேகரித்தல்
- தடைகளைத் தேடுகிறது
- சிக்கல்களில் இருந்து பிரச்சினைகளை தீர்க்கிறோம்
தரவுத்தள இடையூறுகள் — உள்கட்டமைப்பு (CPU, நினைவகம், வட்டுகள், நெட்வொர்க், OS), அமைப்புகள் (postgresql.conf), வினவல்கள்:
உள்கட்டமைப்பு: ஒரு பொறியியலாளருக்கான செல்வாக்கு மற்றும் மாற்றத்திற்கான சாத்தியக்கூறுகள் கிட்டத்தட்ட பூஜ்ஜியமாகும்.
தரவுத்தள அமைப்புகள்: மாற்றங்களுக்கான சாத்தியக்கூறுகள் முந்தைய வழக்கை விட சற்று அதிகமாக உள்ளன, ஆனால் ஒரு விதியாக அவை இன்னும் கடினமாக உள்ளன, குறிப்பாக மேகங்களில்.
கோரிக்கைகளை தரவுத்தளத்திற்கு: சூழ்ச்சிக்கு மட்டுமே அறை.
தொகுப்பு — நாங்கள் தனிப்பட்ட பகுதிகளின் செயல்திறனை மேம்படுத்துகிறோம், இதன் விளைவாக தரவுத்தள செயல்திறன் மேம்படும் என்று எதிர்பார்க்கிறோம்.
பாடல் அறிமுகம் அல்லது இதெல்லாம் ஏன் அவசியம்
தரவுத்தள செயல்திறன் கண்காணிக்கப்படாவிட்டால் செயல்திறன் சம்பவங்களைத் தீர்ப்பதற்கான செயல்முறை என்ன:
வாடிக்கையாளர் - "எல்லாம் எங்களுடன் மோசமாக உள்ளது, இது அதிக நேரம் எடுக்கும், எங்களுக்கு ஏதாவது நல்லது செய்யுங்கள்"
பொறியாளர் - "அது எவ்வளவு மோசமானது?"
வாடிக்கையாளர் - "இப்போது அப்படித்தான் (ஒரு மணி நேரத்திற்கு முன்பு, நேற்று, கடைசியாக), மெதுவாக"
பொறியாளர் - "எப்போது நன்றாக இருந்தது?"
வாடிக்கையாளர் - “ஒரு வாரம் (இரண்டு வாரங்கள்) முன்பு அது மோசமாக இல்லை. "(இது அதிர்ஷ்டம்)
வாடிக்கையாளர் - "எப்போது நன்றாக இருந்தது என்று எனக்கு நினைவில் இல்லை, ஆனால் இப்போது அது மோசமாக உள்ளது" (வழக்கமான பதில்)
இதன் விளைவாக ஒரு உன்னதமான படம்:

யார் குற்றம் மற்றும் என்ன செய்ய வேண்டும்?
கேள்வியின் முதல் பகுதி பதிலளிக்க எளிதானது - DBA பொறியாளர் எப்போதும் குற்றம் சொல்ல வேண்டும்.
இரண்டாவது பகுதியும் பதிலளிக்க கடினமாக இல்லை - நீங்கள் ஒரு தரவுத்தள செயல்திறன் கண்காணிப்பு அமைப்பை செயல்படுத்த வேண்டும்.
முதல் கேள்வி எழுகிறது - என்ன கண்காணிக்க வேண்டும்?
பாதை 1. நாங்கள் எல்லாவற்றையும் கண்காணிப்போம்

CPU சுமை, டிஸ்க் ரீட்/ரைட் செயல்பாடுகளின் எண்ணிக்கை, ஒதுக்கப்பட்ட நினைவகத்தின் அளவு மற்றும் அதிகமாகவோ அல்லது குறைவாகவோ செயல்படும் கண்காணிப்பு அமைப்பு வழங்கக்கூடிய வெவ்வேறு கவுண்டர்களின் மற்றொரு மெகாடன்.
இதன் விளைவாக, வரைபடங்கள், பிவோட் அட்டவணைகள் மற்றும் தொடர்ச்சியான மின்னஞ்சல் அறிவிப்புகள் மற்றும் 100% பிஸியான பொறியாளர் ஒரே மாதிரியான டிக்கெட்டுகளைத் தீர்க்கிறார்கள், இருப்பினும், ஒரு விதியாக, நிலையான வார்த்தைகளுடன் - “தற்காலிக சிக்கல். எந்த நடவடிக்கையும் தேவையில்லை." ஆனால் எல்லோரும் பிஸியாக இருக்கிறார்கள், வாடிக்கையாளரைக் காட்ட எப்போதும் ஏதாவது இருக்கிறது - வேலை முழு வீச்சில் உள்ளது.
வழி 2. தேவைப்படுவதை மட்டும் கண்காணிக்கவும், தேவையில்லாதவற்றை கண்காணிக்க வேண்டிய அவசியமில்லை
நீங்கள் கொஞ்சம் வித்தியாசமாக, நிறுவனங்கள் மற்றும் நிகழ்வுகளை மட்டுமே கண்காணிக்க முடியும்:
- எந்த DBA பொறியாளர் தாக்கத்தை ஏற்படுத்த முடியும்
- ஒரு நிகழ்வு நிகழும்போது அல்லது ஒரு நிறுவனம் மாறும்போது செயல்களின் அல்காரிதம் உள்ளது.
இந்த அனுமானத்தின் அடிப்படையில் மற்றும் நினைவூட்டல் "தத்துவ அறிமுகம்"வழக்கமாக திரும்பத் திரும்ப வருவதைத் தவிர்ப்பதற்காக"பாடல் அறிமுகம் அல்லது இதெல்லாம் ஏன் அவசியம்"உகப்பாக்கம் மற்றும் பகுப்பாய்வுக்கான தனிப்பட்ட வினவல்களின் செயல்திறனைக் கண்காணிப்பது நல்லது, இது இறுதியில் முழு தரவுத்தளத்தின் மேம்பட்ட செயல்திறனுக்கு வழிவகுக்கும்.
ஆனால் ஒட்டுமொத்த தரவுத்தள செயல்திறனை பாதிக்கும் ஒரு கனமான வினவலை மேம்படுத்த, நீங்கள் முதலில் அதை கண்டுபிடிக்க வேண்டும்.
எனவே, ஒன்றோடொன்று தொடர்புடைய இரண்டு கேள்விகள் எழுகின்றன:
- எந்த கோரிக்கை கடினமாக கருதப்படுகிறது
- கடினமான கேள்விகளை எவ்வாறு தேடுவது.
வெளிப்படையாக, ஒரு கனமான வினவல் என்பது முடிவைப் பெற நிறைய OS ஆதாரங்களைப் பயன்படுத்தும் வினவல் ஆகும்.
இரண்டாவது கேள்விக்கு செல்வோம் - கனமான வினவல்களைத் தேடுவது மற்றும் கண்காணிப்பது எப்படி?
PostgreSQL என்ன வினவல் கண்காணிப்பு திறன்களைக் கொண்டுள்ளது?
ஆரக்கிளுடன் ஒப்பிடுகையில், சில சாத்தியங்கள் உள்ளன, ஆனால் இன்னும் ஏதாவது செய்ய முடியும்.

PG_STAT_STATEMENTS
நிலையான நீட்டிப்பு pg_stat_statements ஆனது PostgreSQL இல் அதிக வினவல்களைத் தேட மற்றும் கண்காணிக்க வடிவமைக்கப்பட்டுள்ளது.
நீட்டிப்பை நிறுவிய பின், இலக்கு தரவுத்தளத்தில் அதே பெயரின் பார்வை தோன்றும், இது கண்காணிப்பு நோக்கங்களுக்காகப் பயன்படுத்தப்பட வேண்டும்.
கண்காணிப்பு அமைப்பை உருவாக்குவதற்கான இலக்கு pg_stat_statements நெடுவரிசைகள்:
- queryid ஆபரேட்டரின் பார்ஸ் ட்ரீயில் இருந்து கணக்கிடப்பட்ட அக ஹாஷ் குறியீடு
- அதிகபட்ச_நேரம் ஒரு அறிக்கைக்காக செலவழித்த அதிகபட்ச நேரம் மில்லி விநாடிகளில்
இந்த இரண்டு நெடுவரிசைகளிலும் புள்ளிவிவரங்களைக் குவித்து பயன்படுத்துவதன் மூலம், நீங்கள் ஒரு கண்காணிப்பு அமைப்பை உருவாக்கலாம்.
PostgreSQL செயல்திறனைக் கண்காணிக்க pg_stat_statements எவ்வாறு பயன்படுத்தப்படுகிறது

வினவல் செயல்திறனைக் கண்காணிக்கப் பயன்படுத்தவும்:
இலக்கு தரவுத்தள பக்கத்தில் - pg_stat_statements காட்சி
பக்கத்திலிருந்து சர்வர் மற்றும் தரவுத்தளங்களைக் கண்காணித்தல் - இது பாஷ் ஸ்கிரிப்டுகள் மற்றும் சேவை அட்டவணைகளின் தொகுப்பாகும்.
நிலை 1 - புள்ளியியல் தரவுகளின் தொகுப்பு
கிரான் கண்காணிப்பு ஹோஸ்டில், கண்காணிப்பு தரவுத்தளத்தில் உள்ள pg_stat_history அட்டவணைக்கு இலக்கு தரவுத்தளத்திலிருந்து pg_stat_statements காட்சியின் உள்ளடக்கங்களை நகலெடுக்கும் ஒரு ஸ்கிரிப்ட் தொடர்ந்து தொடங்கப்படுகிறது.
இது செயல்திறன் அறிக்கைகளை உருவாக்கவும் அளவீடுகளை உள்ளமைக்கவும் பயன்படுத்தக்கூடிய தனிப்பட்ட வினவல் செயலாக்கங்களின் வரலாற்றை உருவாக்குகிறது.
நிலை 2 - செயல்திறன் அளவீடுகளை அமைத்தல்
சேகரிக்கப்பட்ட தரவின் அடிப்படையில், கிளையண்டிற்கு (பயன்பாடு) செயல்படுத்துவது மிகவும் முக்கியமான/முக்கியமான வினவல்களைத் தேர்ந்தெடுக்கிறோம். வாடிக்கையாளருடனான ஒப்பந்தத்தில், queryid மற்றும் max_time புலங்களைப் பயன்படுத்தி செயல்திறன் அளவீடுகளின் மதிப்புகளை அமைக்கிறோம்.
முடிவு - செயல்திறன் கண்காணிப்பின் ஆரம்பம்
- கண்காணிப்பு ஸ்கிரிப்ட், இயங்கும் போது, இலக்கு தரவுத்தளத்தில் உள்ள pg_stat_statements பார்வையில் இருந்து மெட்ரிக்கின் அதிகபட்ச_நேர மதிப்பை ஒப்பிடுவதன் மூலம் கட்டமைக்கப்பட்ட செயல்திறன் அளவீடுகளை சரிபார்க்கிறது.
- இலக்கு தரவுத்தளத்தில் உள்ள மதிப்பு மெட்ரிக் மதிப்பை விட அதிகமாக இருந்தால், ஒரு எச்சரிக்கை உருவாக்கப்படும் (டிக்கெட் அமைப்பில் ஒரு சம்பவம்)
கூடுதல் விருப்பம் 1
வினவல் திட்ட வரலாறு
செயல்திறன் சம்பவங்களை பின்னர் தீர்க்க உதவ, வினவல் செயல்படுத்தல் திட்டங்களை மாற்றிய வரலாற்றை வைத்திருப்பது நல்லது.
log_query சேவை அட்டவணை வரலாற்றைச் சேமிக்கப் பயன்படுகிறது. ஏற்றப்பட்ட PostgreSQL பதிவு கோப்பை பகுப்பாய்வு செய்யும் போது அட்டவணை நிரப்பப்படுகிறது. பதிவுக் கோப்பு, pg_stat_statements காட்சியைப் போலன்றி, செயல்படுத்தும் அளவுருக்களின் மதிப்புகளுடன் முழு உரையையும், இயல்பாக்கப்படாத உரையையும் கொண்டிருப்பதால், கோரிக்கைகளின் நேரத்தையும் கால அளவையும் பதிவு செய்வது மட்டுமல்லாமல், தற்போதைய செயல்படுத்தல் திட்டங்களையும் சேமிக்க முடியும். நேரத்தில் கணம்.
கூடுதல் விருப்பம் 2
தொடர்ச்சியான செயல்திறன் மேம்பாட்டு செயல்முறை
பொதுவாக தனிப்பட்ட வினவல்களைக் கண்காணிப்பது, ஒட்டுமொத்த தரவுத்தளத்தின் செயல்திறனைத் தொடர்ந்து மேம்படுத்துவதில் உள்ள சிக்கலைத் தீர்க்கும் நோக்கம் கொண்டதல்ல, ஏனெனில் இது தனிப்பட்ட வினவல்களுக்கு மட்டுமே செயல்திறன் சிக்கல்களைக் கண்காணித்து தீர்க்கிறது. இருப்பினும், நீங்கள் முறையை நீட்டித்து அனைத்து தரவுத்தளங்களுக்கும் கண்காணிப்பு வினவல்களை உள்ளமைக்கலாம்.
இதைச் செய்ய, நீங்கள் கூடுதல் செயல்திறன் அளவீடுகளை உள்ளிட வேண்டும்:
- சமீபத்திய நாட்களில்
- அடிப்படை காலத்திற்கு
ஸ்கிரிப்ட் இலக்கு தரவுத்தளத்தில் உள்ள pg_stat_statements பார்வையில் இருந்து வினவல்களைத் தேர்ந்தெடுத்து அதிகபட்ச_டைம் மதிப்பை சராசரி அதிகபட்ச_நேர மதிப்புடன் ஒப்பிடுகிறது, முதல் வழக்கில் கடைசி நாட்கள் அல்லது தேர்ந்தெடுக்கப்பட்ட காலத்திற்கு (அடிப்படை), இரண்டாவது வழக்கில்.
எனவே, எந்தவொரு கோரிக்கைக்கும் செயல்திறன் குறையும் பட்சத்தில், அறிக்கைகளை கைமுறையாக பகுப்பாய்வு செய்யாமல், ஒரு எச்சரிக்கை தானாகவே உருவாக்கப்படும்.
தொகுப்புக்கும் அதற்கும் என்ன சம்பந்தம்?
விவரிக்கப்பட்ட அணுகுமுறையில், தொகுப்பு முறை குறிப்பிடுவது போல, அமைப்பின் தனிப்பட்ட பகுதிகளை மேம்படுத்துவதன் மூலம், ஒட்டுமொத்த அமைப்பை மேம்படுத்துகிறோம்.
- வினவல் தரவுத்தளத்தால் செயல்படுத்தப்பட்டது - சுருக்கம்
- மாற்றியமைக்கப்பட்ட கோரிக்கை - எதிர்ப்பு
- அமைப்பின் நிலையை மாற்றுதல் - தொகுப்பு

கணினி மேம்பாடு
- pg_stat_activity அமைப்பு பார்வைக்கான வரலாற்றைச் சேர்ப்பதன் மூலம் சேகரிக்கப்பட்ட புள்ளிவிவரங்களின் நீட்டிப்புகள்
- வினவல்களில் பங்கேற்கும் தனிப்பட்ட அட்டவணைகளின் புள்ளிவிவரங்களுக்கான வரலாற்றைச் சேர்ப்பதன் மூலம் சேகரிக்கப்பட்ட புள்ளிவிவரங்களை விரிவாக்குதல்
- AWS கிளவுட் கண்காணிப்பு அமைப்புடன் ஒருங்கிணைப்பு
- இன்னும், நீங்கள் ஏதாவது கொண்டு வரலாம் ...
ஆதாரம்: www.habr.com
