ஓ, அந்த வினவல் திட்டங்கள். SQL வினவல் செயல்படுத்தல் திட்டம். அடிப்படை செயல்பாடுகளின் விளக்கம் வினவல் திட்டம் ஒருமுறை கட்டப்பட்டது

அனைவருக்கும் வணக்கம்! ஒரு ஆவணத்தை செயலாக்க நீண்ட நேரம் எடுக்கும் ஒரு சிக்கலை சமீபத்தில் நான் சந்தித்தேன்.

உள்ளீடு தரவு: உள்ளமைவு "உற்பத்தி நிறுவன மேலாண்மை, பதிப்பு 1.3 (1.3.52.1)", ஆவணம் "உள்வரும் கட்டண உத்தரவு". புகார்: வேலை செய்யும் தரவுத்தளத்தில் வைத்திருப்பது 20-30 வினாடிகள் நீடிக்கும், இது சுவாரஸ்யமானது, தரவுத்தளத்தின் நகலில் அதே ஆவணம் 2-4 வினாடிகளுக்கு வைக்கப்படுகிறது. விசாரணைகள் மற்றும் இந்த நடத்தைக்கான காரணத்தை கீழே படிக்கவும்.

எனவே, உதவியுடன் செயல்திறன் அளவீடுஅதை எவ்வாறு பயன்படுத்துவது என்பது அனைவருக்கும் தெரியும் என்று நினைக்கிறேன், குற்றவாளி கண்டுபிடிக்கப்பட்டார்:

இந்த வழக்கில், ரெக்கார்டரில் வெற்று பதிவுகள் பதிவு செய்யப்பட்டன, இயக்கங்கள் செயல்படுத்தப்படுவதற்கு முன்பு நீக்கப்பட்டன. இந்த நடைமுறை 26 முறை அழைக்கப்பட்டது என்பது குறிப்பிடத்தக்கது, அதாவது. எங்கள் ஆவணம் எழுதக்கூடிய ஒவ்வொரு பதிவிற்கும்.

செயல்திறன் அளவீடுகளின்படி, இந்த செயல்பாடு 13 வினாடிகள் எடுத்தது, நீங்கள் சராசரியாக கணக்கிட்டால், ஒரு பதிவேடுக்கு 0.5 வினாடிகள் கிடைக்கும்.

நாம் அனைவரும் அறிந்தபடி, பதிவை மேம்படுத்த முடியாது, ஆனால் இங்கே ஏதோ தவறு உள்ளது.
மேலும் பகுப்பாய்விற்கு, திறக்கவும் SQL சர்வர்விவரக்குறிப்பாளர்மற்றும் . பகுப்பாய்விற்கு நான் நிகழ்வு வகுப்புகளைப் பயன்படுத்தினேன்:

  • ஷோபிளான் புள்ளிவிவரங்கள் சுயவிவரம்
  • ஷோபிளான் எக்ஸ்எம்எல் புள்ளிவிவரங்கள் சுயவிவரம்
  • RPC முடிந்தது
  • SQL:BatchCompleted.

டிரேசிங் அமைப்புகளில் உள்ளது SPID மூலம் வடிகட்டி:

SPID என்பது தரவுத்தள சேவையகத்தின் செயல்முறை ஐடி. 1C ஐப் பொறுத்தவரை, இது 1C சேவையகத்திற்கும் DBMS க்கும் இடையே உள்ள இணைப்பாகும்

இருந்தால் காட்டப்படும் இந்த நேரத்தில்தரவுத்தளத்திற்கான இணைப்பு அமர்வு மூலம் கைப்பற்றப்படுகிறது: ஒரு DBMS அழைப்பு செய்யப்படுகிறது, அல்லது ஒரு பரிவர்த்தனை திறக்கப்பட்டுள்ளது, அல்லது "தற்காலிக அட்டவணை மேலாளர்" பொருள் வைக்கப்பட்டுள்ளது, அதில் குறைந்தபட்சம் ஒரு தற்காலிக அட்டவணை உருவாக்கப்பட்டுள்ளது.

SPID ஐ வைத்திருப்பதற்கான செயலாக்கத்தை எழுதுவோம், அதில் ஒரு செயல்முறை இருக்கும்:

வைத்திருக்கும் இணைப்பு பொருள், எங்கள் விஷயத்தில் தற்காலிக அட்டவணை மேலாளர், செயலாக்க மாறியாக வரையறுக்கப்படுவது முக்கியம். நாங்கள் செயலாக்கத்தைத் திறக்கிறோம், செயல்முறையை இயக்குகிறோம், அது திறந்திருக்கும் வரை, SPID சரி செய்யப்படும். 1C சர்வர் நிர்வாக கன்சோலைத் திறக்கவும்:

எனவே, SPID பெறப்பட்டது, அதன் மதிப்பை வடிகட்டியில் உள்ளிட்டு, எங்கள் அமர்வுக்கான தற்போதைய வேலை தரவுத்தளத்திலிருந்து ஒரு தடயத்தைப் பெறுவோம். தடயத்தை பகுப்பாய்வு செய்யும் போது, ​​ஒரு அறுவை சிகிச்சை கண்டுபிடிக்கப்பட்டது, அது முடிக்க 11 வினாடிகள் எடுத்தது:

என் கண்ணில் பட்டது வாசிப்புகளின் எண்ணிக்கை - 1872578 , ஆனால் நான் உடனடியாக இதற்கு எந்த முக்கியத்துவத்தையும் இணைக்கவில்லை, மேலும் இங்கே என்ன செய்யப்படுகிறது, எந்த அட்டவணையில் உள்ளது என்பதைக் கண்டுபிடிக்க ஆரம்பித்தேன்.

exec sp_executesql <= @P2) AND (T1._Fld1466RRef = @P3)) OR ((T1._Period <= @P4) AND (T1._Fld1466RRef = @P5))) OR ((T1._Period <= @P6) AND (1=0)))’,N’@P1 varbinary(16),@P2 datetime2(3),@P3 varbinary(16),@P4 datetime2(3),@P5 varbinary(16),@P6 datetime2(3)’,0x8A2F00155DBF491211E87F56DD1A416E,’4018-05-31 23:59:59′,0x00000000000000000000000000000000,’4018-05-31 23:59:59′,0x9A95A0369F30F8DB11E46684B4F0A05F,’4018-05-31 23:59:59"

SQL வினவலில் இருந்து நீங்கள் பார்க்க முடியும் என, அட்டவணை செயலாக்கப்படுகிறது "AccRg1465"இது சுய-ஆதரவு கணக்கியல் பதிவேட்டில் உள்ள அட்டவணை. வினவல் செயல்படுத்தும் திட்டத்தின் உரை பிரதிநிதித்துவம்:

SQL வினவலின் செயலாக்கத் திட்டத்திலிருந்து நீங்கள் பார்க்க முடியும், மோசமான எதுவும் நடக்காது, அட்டவணை " ஏசிஆர்ஜி1465", க்ளஸ்டர்டு இன்டெக்ஸ் தேடல் எல்லா இடங்களிலும் பயன்படுத்தப்படுகிறது.

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

மேலே குறிப்பிட்டுள்ளபடி, தரவுத்தளத்தின் புதிய நகலில் சிக்கல் மீண்டும் உருவாக்கப்படவில்லை, அதில் சிக்கல் தோன்றிய பிறகு நகல் வேலை செய்யும் தரவுத்தளத்திலிருந்து எடுக்கப்பட்டது, எனவே அதே ஆவணத்தில் SQL சர்வர் சுயவிவரத்தில் அதன் நடத்தையை பகுப்பாய்வு செய்ய முடிவு செய்யப்பட்டது.
முடிவுகள் இதோ:

SQL இல் வினவல் உரை:

EXEC sp_executesql N"தேர்வு TOP 1 0x01 இலிருந்து dbo._AccRg1465 T1 எங்கே<= @P2) AND (T1._Fld1466RRef = @P3)) OR ((T1._Period <= @P4) AND (T1._Fld1466RRef = @P5))) OR ((T1._Period <= @P6) AND (1=0)))" , N"@P1 varbinary(16),@P2 datetime2(3),@P3 varbinary(16),@P4 datetime2(3),@P5 varbinary(16),@P6 datetime2(3)", 0x8A2F00155DBF491211E87F56DD1A416E, "4018-05-31 23:59:59" ,00, "4018-05-31 23:59:59" , 0x80DB60 401 8-05-31 23:59:59"

வினவல் திட்டத்தின் வரைகலை பிரதிநிதித்துவம்:

கோரிக்கை உரைகள் ஒரே மாதிரியானவை, செயல்படுத்தும் திட்டங்கள் முற்றிலும் வேறுபட்டவை. என்ன விஷயம் இருக்க முடியும்? SQl இல் உள்ள புள்ளிவிவரங்களைப் பற்றி நான் தவறாகப் புரிந்துகொண்டேன், ஆனால் அவை வேலை செய்வதற்கும் தரவுத்தளத்தின் நகலுக்கும் இடையில் ஒரே மாதிரியானவை, மேலும் புள்ளிவிவரங்கள் ஒவ்வொரு அட்டவணைக்கும் தரவுத்தளத்தில் சேமிக்கப்படுகின்றன:

மேலும் பகுப்பாய்வு செய்வோம்: புள்ளிவிவரங்கள் ஒரே மாதிரியாக இருந்தால், ஆனால் வினவல் திட்டங்கள் வேறுபட்டால், உகப்பாக்கி ஒரு வினவல் திட்டத்தை உருவாக்க புள்ளிவிவரங்களை அணுகவில்லை என்று அர்த்தம், ஆனால் அது ஒரு தற்காலிக சேமிப்பு திட்டத்தை கொண்டுள்ளது, அது பயன்படுத்துகிறது. எங்கள் தரவுத்தளத்தில் உள்ள நடைமுறை தற்காலிக சேமிப்பை அழிக்கிறோம், இதற்காக நாங்கள் கட்டளையைப் பயன்படுத்துகிறோம்

DBCC ஃப்ளஷ்ப்ரோசிண்ட்பி(< database_id >)

எங்கே< database_id >தரவுத்தள அடையாளங்காட்டி ஆகும். தரவுத்தள ஐடியைக் கண்டுபிடிக்க நீங்கள் ஸ்கிரிப்டை இயக்க வேண்டும்

sys இலிருந்து பெயர், database_id ஐ தேர்ந்தெடுக்கவும். தரவுத்தளங்கள்

இது தரவுத்தளங்களின் பட்டியலையும் அவற்றின் அடையாளங்காட்டிகளையும் நமக்குத் தரும்.

நாங்கள் மீண்டும் தடயத்தைப் பெறுகிறோம்:

வினவல் திட்டத்தின் உரை பிரதிநிதித்துவம்:

வினவல் திட்டத்தின் வரைகலை பிரதிநிதித்துவம்:

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

உங்கள் கவனத்திற்கு நன்றி!

இந்தக் கட்டுரை உங்களுக்கு உதவியதா?

6 பதில்கள்

செயல்படுத்தும் திட்டத்தைப் பெற பல வழிகள் உள்ளன, இது உங்கள் சூழ்நிலையைப் பொறுத்தது. திட்டத்தைப் பெற பொதுவாக நீங்கள் SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோவைப் பயன்படுத்தலாம், இருப்பினும், சில காரணங்களால் உங்கள் வினவலை SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோவில் இயக்க முடியவில்லை என்றால், SQL சர்வர் ப்ரொஃபைலர் மூலம் அல்லது திட்டத்தைச் சரிபார்ப்பதன் மூலம் திட்டத்தைப் பெறுவது பயனுள்ளதாக இருக்கும். தற்காலிக சேமிப்பு.

முறை 1 - SQL சர்வர் மேலாண்மை ஸ்டுடியோவைப் பயன்படுத்துதல்

செயல்படுத்தும் திட்டத்தைச் சேகரிப்பதை எளிதாக்கும் சில நேர்த்தியான அம்சங்களை SQL சேவையகம் கொண்டுள்ளது, "உண்மையான செயலாக்கத் திட்டத்தைச் சேர்" மெனு உருப்படி (வினவல் மெனுவில் உள்ளது) சரிபார்க்கப்பட்டு, உங்களுடையது வழக்கம் போல் இயங்கும்.

நீங்கள் ஒரு சேமிக்கப்பட்ட நடைமுறையில் அறிக்கைகளுக்கான செயலாக்கத் திட்டத்தைப் பெற முயற்சிக்கிறீர்கள் என்றால், சேமிக்கப்பட்ட செயல்முறையை நீங்கள் செயல்படுத்துவீர்கள்:

Exec p_Example 42

உங்கள் வினவல் முடிந்ததும், முடிவுகள் பலகத்தில் கூடுதல் செயல்படுத்தல் திட்ட தாவல் தோன்றுவதைக் காண்பீர்கள். நீங்கள் பல அனுமதிகளை இயக்கியிருந்தால், இந்தத் தாவலில் பல திட்டங்கள் காட்டப்படுவதைக் காணலாம்.

இங்கே நீங்கள் SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோவில் செயல்படுத்தும் திட்டத்தைச் சரிபார்க்கலாம் அல்லது திட்டத்தின் மீது வலது கிளிக் செய்து, XML கோப்பில் திட்டத்தைச் சேமிக்க, "செயல்படுத்தும் திட்டத்தை இவ்வாறு சேமி..." என்பதைத் தேர்ந்தெடுக்கவும்.

முறை 2 - SHOWPLAN விருப்பங்களைப் பயன்படுத்துதல்

இந்த முறை முறை 1 க்கு மிகவும் ஒத்திருக்கிறது (உண்மையில் இது SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோ உள்நாட்டில் செய்கிறது), இருப்பினும் முழுமைக்காக அல்லது உங்களிடம் SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோ கிடைக்கவில்லை என்றால் நான் அதைச் சேர்த்துள்ளேன்.

வினவலை இயக்குவதற்கு முன், இயக்கவும் ஒன்றுபின்வரும் ஆபரேட்டர்கள். அறிக்கையானது தொகுப்பில் உள்ள ஒரே அறிக்கையாக இருக்க வேண்டும், அதாவது. நீங்கள் ஒரே நேரத்தில் மற்றொரு அறிக்கையை செயல்படுத்த முடியாது:

SET SHOWPLAN_TEXT ஐ செட் SHOWPLAN_ALL ON SET SHOWPLAN_XML இல் செட் ஸ்டாடிஸ்டிக்ஸ் ப்ரொஃபைலில் செட் ஸ்டாடிஸ்டிக்ஸ் எக்ஸ்எம்எல் ஆன் -- இது பயன்படுத்த பரிந்துரைக்கப்பட்ட விருப்பம்

இவை இணைப்பு அளவுருக்கள், எனவே ஒவ்வொரு இணைப்பிற்கும் ஒருமுறை மட்டுமே இதை இயக்க வேண்டும். இனிமேல், தொடங்கப்பட்ட அனைத்து அறிக்கைகளும் அதனுடன் இணைக்கப்படும் கூடுதல் முடிவுகளின் தொகுப்புதேவையான வடிவமைப்பில் உங்கள் செயல்படுத்தல் திட்டம் உள்ளது - திட்டத்தைப் பார்க்க உங்கள் வினவலை வழக்கம் போல் இயக்கவும்.

நீங்கள் முடித்ததும், பின்வரும் அறிக்கையுடன் இந்த விருப்பத்தை முடக்கலாம்:

அமைக்கவும்<

செயல்படுத்தல் திட்ட வடிவங்களின் ஒப்பீடு

உங்களுக்கு வலுவான விருப்பம் இருந்தால், STATISTICS XML விருப்பத்தைப் பயன்படுத்த பரிந்துரைக்கிறேன். இந்த விருப்பம் SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோவில் உள்ள "உண்மையான செயலாக்கத் திட்டத்தைச் சேர்" விருப்பத்திற்குச் சமமானது மற்றும் மிகவும் பயனுள்ள வடிவமைப்பில் பெரும்பாலான தகவல்களை வழங்குகிறது.

  • SHOWPLAN_TEXT - வினவலைச் செயல்படுத்தாமல் அடிப்படை உரை அடிப்படையிலான மதிப்பிடப்பட்ட செயலாக்கத் திட்டத்தைக் காட்டுகிறது
  • SHOWPLAN_ALL - வினவலைச் செயல்படுத்தாமல் செலவு மதிப்பீட்டுடன் மதிப்பிடப்பட்ட உரை அடிப்படையிலான செயலாக்கத் திட்டத்தைக் காட்டுகிறது
  • SHOWPLAN_XML - வினவலைச் செயல்படுத்தாமல் செலவு மதிப்பீடுகளுடன் XML அடிப்படையிலான மதிப்பிடப்பட்ட செயல்படுத்தல் திட்டத்தைக் காட்டுகிறது. இது SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோவில் உள்ள "காட்சி எடுத்துக்காட்டு செயல்படுத்தல் திட்டம்..." விருப்பத்திற்கு சமம்.
  • புள்ளிவிவரச் சுயவிவரம் - வினவலை இயக்குகிறது மற்றும் உரையின் அடிப்படையில் உண்மையான செயல்படுத்தல் திட்டத்தைக் காட்டுகிறது.
  • புள்ளியியல் எக்ஸ்எம்எல் - வினவலைச் செயல்படுத்துகிறது மற்றும் எக்ஸ்எம்எல் அடிப்படையில் உண்மையான செயல்படுத்தல் திட்டத்தைக் காட்டுகிறது. இது SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோவில் உள்ள "உண்மையான செயலாக்கத் திட்டத்தைச் சேர்" விருப்பத்திற்குச் சமம்.

முறை 3 - SQL சர்வர் சுயவிவரத்தைப் பயன்படுத்துதல்

உங்களால் வினவலை நேரடியாக இயக்க முடியாவிட்டால் (அல்லது நீங்கள் அதை நேரடியாக இயக்கும்போது உங்கள் வினவல் மெதுவாக இயங்காது - வினவல் திட்டம் மோசமாக இயங்க வேண்டும் என்பதை நினைவில் கொள்ளுங்கள்), பின்னர் நீங்கள் SQL சர்வர் ப்ரொஃபைலரைப் பயன்படுத்தி திட்டத்தைப் பிடிக்கலாம். "ஷோபிளான்" நிகழ்வுகளில் ஒன்றைப் பிடிக்கும் ட்ரேஸ் இயங்கும்போது உங்கள் வினவலை இயக்குவதே யோசனை.

உங்கள் சுமையை பொறுத்து என்பதை நினைவில் கொள்ளவும் உன்னால் முடியும்உற்பத்தி சூழலில் இந்த முறையைப் பயன்படுத்தவும், இருப்பினும் நீங்கள் வெளிப்படையாக எச்சரிக்கையுடன் பயன்படுத்த வேண்டும். SQL சர்வரின் விவரக்குறிப்பு வழிமுறைகள் தரவுத்தளத்தில் தாக்கத்தை குறைக்க வடிவமைக்கப்பட்டுள்ளன, ஆனால் இது செயல்திறன் தாக்கம் இருக்காது என்று அர்த்தமல்ல. உங்கள் தரவுத்தளம் அதிக பயன்பாட்டில் இருந்தால், உங்கள் ட்ரேஸில் சரியான திட்டத்தை வடிகட்டுவதில் மற்றும் தீர்மானிப்பதில் சிக்கல் இருக்கலாம். உங்கள் விலைமதிப்பற்ற தரவுத்தளத்தில் இதைச் செய்வதில் அவர்கள் மகிழ்ச்சியடைகிறார்கள் என்பதை உறுதிப்படுத்த உங்கள் DBA உடன் நீங்கள் வெளிப்படையாகச் சரிபார்க்க வேண்டும்!

  • SQL சர்வர் ப்ரொஃபைலரைத் திறந்து, நீங்கள் ட்ரேஸைப் பதிவுசெய்ய விரும்பும் தரவுத்தளத்துடன் இணைக்கும் புதிய ட்ரேஸை உருவாக்கவும்.
  • நிகழ்வுத் தேர்வு தாவலில், எல்லா நிகழ்வுகளையும் காண்பி தேர்வுப்பெட்டியைச் சரிபார்த்து, செயல்திறன் -> ஷோபிளான் எக்ஸ்எம்எல் வரியைச் சரிபார்த்து, ட்ரேஸை இயக்கவும்.
  • ட்ரேஸ் இயங்கும் போது, ​​மெதுவான வினவல் இயங்குவதற்கு நீங்கள் செய்ய வேண்டியதைச் செய்யுங்கள்.
  • கோரிக்கை முடிவடையும் வரை மற்றும் தடமறிதல் நிறுத்தப்படும் வரை காத்திருக்கவும்.
  • ட்ரேஸைச் சேமிக்க, SQL சர்வர் சுயவிவரத்தில் உள்ள xml திட்டத்தை வலது கிளிக் செய்து, XML கோப்பில் திட்டத்தைச் சேமிக்க, "நிகழ்வுத் தரவைப் பிரித்தெடுக்க..." என்பதைத் தேர்ந்தெடுக்கவும்.

நீங்கள் பெறும் திட்டம், SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோவில் உள்ள "உண்மையான செயலாக்கத் திட்டத்தைச் சேர்" விருப்பத்திற்குச் சமமானது.

முறை 4 - வினவல் தற்காலிக சேமிப்பை சரிபார்க்கிறது

உங்களால் உங்கள் வினவலை நேரடியாக இயக்க முடியாவிட்டால், மேலும் உங்களால் ஒரு ப்ரொஃபைலர் ட்ரேஸைப் பிடிக்க முடியாவிட்டால், SQL வினவலின் கேச் திட்டத்தைச் சரிபார்ப்பதன் மூலம் உங்களால் மதிப்பிடப்பட்ட திட்டத்தைப் பெற முடியும்.

SQL சர்வர் DMVகளை வினவுவதன் மூலம் திட்ட தற்காலிக சேமிப்பை நாங்கள் சரிபார்க்கிறோம். கீழே ஒரு அடிப்படை வினவல் உள்ளது, இது அனைத்து தற்காலிக சேமிப்பு வினவல் திட்டங்களையும் (xml ஆக) அவற்றின் SQL உரையுடன் பட்டியலிடுகிறது. பெரும்பாலான தரவுத்தளங்களில், நீங்கள் விரும்பும் திட்டங்களுக்கு முடிவுகளை வடிகட்ட கூடுதல் வடிகட்டி நிபந்தனைகளையும் சேர்க்க வேண்டும்.

sys.dm_exec_cached_plans இலிருந்து Usecounts, Cacheobjtype, Objtype, TEXT, query_plan ஐ தேர்ந்தெடு CROSS விண்ணப்பிக்கவும் sys.dm_exec_sql_text(plan_handle) CROSS APPLY sys.dm_hanplandle(pquery_handle)

இந்த வினவலை இயக்கி, புதிய சாளரத்தில் திட்டத்தைத் திறக்க, XML திட்டத்தைக் கிளிக் செய்யவும் - வலது கிளிக் செய்து, XML வடிவத்தில் ஒரு கோப்பில் திட்டத்தைச் சேமிக்க, "செயல்படுத்தும் திட்டத்தை இவ்வாறு சேமி..." என்பதைத் தேர்ந்தெடுக்கவும்.

குறிப்புகள்:

பல காரணிகள் இருப்பதால் (அட்டவணை மற்றும் குறியீட்டு திட்டம் முதல் சேமிக்கப்பட்ட தரவு மற்றும் அட்டவணை புள்ளிவிவரங்கள் வரை), நீங்கள் கண்டிப்பாக எப்போதும்நீங்கள் ஆர்வமுள்ள தரவுத்தளத்தில் இருந்து செயல்படுத்தல் திட்டத்தைப் பெற முயற்சிக்கவும் (பொதுவாக செயல்திறன் சிக்கலை எதிர்கொள்கிறது).

மறைகுறியாக்கப்பட்ட சேமிக்கப்பட்ட நடைமுறைகளுக்கான செயல்படுத்தல் திட்டத்தை நீங்கள் செய்ய முடியாது.

"உண்மையான" மற்றும் "மதிப்பிடப்பட்ட" செயல்படுத்தல் திட்டங்கள்

உண்மையான செயலாக்கத் திட்டம் என்பது SQL சர்வர் உண்மையில் வினவலை இயக்கும் ஒன்றாகும், அதேசமயம் SQL சர்வர் வினவலை இயக்காமல் என்ன செய்ய முடியும் என்பதில் மதிப்பிடப்பட்ட செயல்படுத்தல் திட்டம் செயல்படுகிறது. தர்க்கரீதியாக சமமானதாக இருந்தாலும், உண்மையான செயலாக்கத் திட்டம் மிகவும் பயனுள்ளதாக இருக்கும், ஏனெனில் வினவல் செயல்படுத்தப்பட்டபோது உண்மையில் என்ன நடந்தது என்பது பற்றிய கூடுதல் தரவு மற்றும் புள்ளிவிவரங்கள் இதில் உள்ளன. SQL சேவையக மதிப்பீடுகள் முடக்கப்பட்டிருக்கும் போது (உதாரணமாக, புள்ளி விவரங்கள் காலாவதியானால்) சிக்கல்களைக் கண்டறியும் போது இது முக்கியமானது.

வினவல் செயல்படுத்தும் திட்டத்தை எவ்வாறு விளக்குவது?

இது ஒரு இலவச புத்தகத்திற்கு தகுதியான தலைப்பு.

ஏற்கனவே சில சமயங்களில் வெளியிடப்பட்ட விரிவான பதிலைத் தவிர, தகவலைப் பிரித்தெடுக்க நிரல் ரீதியாக செயல்படுத்தும் திட்டத்தை அணுகுவது பயனுள்ளதாக இருக்கும். இதற்கான மாதிரி குறியீடு கீழே உள்ளது.

@TraceID INT EXEC StartCapture<-- Call your stored proc of interest here.*/ EXEC StopCapture @TraceID

வினவல் செயல்படுத்தல் திட்டங்களைப் பெறுவதற்கும் ஆழமான பகுப்பாய்வு செய்வதற்கும் எனக்குப் பிடித்த கருவி SQL சென்ட்ரி பிளான் எக்ஸ்ப்ளோரர். SSMS ஐ விட இது மிகவும் வசதியானது, பயனர் நட்பு மற்றும் விரிவான பகுப்பாய்வு மற்றும் செயல்படுத்தல் திட்டங்களை காட்சிப்படுத்துவதற்கு முழுமையானது.

கருவியால் என்ன செயல்பாடு வழங்கப்படுகிறது என்பதைப் புரிந்துகொள்வதற்கான எடுத்துக்காட்டுத் திரை இங்கே:

கருவியில் கிடைக்கும் காட்சிகளில் இதுவும் ஒன்று. பயன்பாட்டுச் சாளரத்தின் கீழே உள்ள தாவல்களின் தொகுப்பைக் கவனியுங்கள், இது பல்வேறு வகையான செயல்படுத்தல் திட்டக் காட்சிகள் மற்றும் பயனுள்ள கூடுதல் தகவல்களைப் பெற உங்களை அனுமதிக்கிறது.

கூடுதலாக, அதன் இலவசப் பதிப்பில் உள்ள எந்த வரம்புகளையும் நான் கவனிக்கவில்லை, அது உங்களை தினசரி அடிப்படையில் பயன்படுத்துவதைத் தடுக்கிறது அல்லது இறுதியில் புரோ பதிப்பை வாங்கும்படி கட்டாயப்படுத்துகிறது. எனவே, நீங்கள் இலவச பதிப்பில் ஒட்டிக்கொள்ள விரும்பினால், எதுவும் தடைசெய்யப்படவில்லை.

முந்தைய பதில்களில் விவரிக்கப்பட்ட முறைகள் தவிர, நீங்கள் இலவச செயல்படுத்தல் திட்ட பார்வையாளர் மற்றும் வினவல் தேர்வுமுறை கருவியான ApexSQL திட்டம் (நான் சமீபத்தில் பார்த்தேன்) ஆகியவற்றையும் பயன்படுத்தலாம்.

நீங்கள் ApexSQL திட்டத்தை SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோவில் நிறுவி ஒருங்கிணைக்கலாம், எனவே செயல்படுத்தும் திட்டங்களை SSMS இலிருந்து நேரடியாகப் பார்க்கலாம்.

ApexSQL திட்டத்தில் முன்னறிவிக்கப்பட்ட செயல்படுத்தல் திட்டங்களைப் பார்க்கவும்

  • பொத்தானை கிளிக் செய்யவும் புதிய கோரிக்கை SSMS இல் வினவல் உரை பெட்டியில் வினவல் உரையை ஒட்டவும். வலது கிளிக் செய்து சூழல் மெனுவிலிருந்து "காட்சி மாதிரி செயல்படுத்தல் திட்டம்" என்பதைத் தேர்ந்தெடுக்கவும்.

  1. செயலாக்கத் திட்ட வரைபடம் முடிவுகள் பிரிவில் செயல்படுத்தல் திட்டமிடல் தாவலைக் காண்பிக்கும். பின்னர் செயல்படுத்தும் திட்டத்தில் வலது கிளிக் செய்து சூழல் மெனுவிலிருந்து "ApexSQL திட்டத்தில் திற" விருப்பத்தைத் தேர்ந்தெடுக்கவும்.

  1. மதிப்பிடப்பட்ட செயல்படுத்தல் திட்டம் ApexSQL திட்டத்தில் திறக்கப்படும் மற்றும் வினவல்களை மேம்படுத்த பகுப்பாய்வு செய்யலாம்.

ApexSQL திட்டத்தில் உண்மையான செயல்படுத்தல் திட்டங்களைப் பார்க்கிறது

உண்மையான வினவல் செயலாக்கத் திட்டத்தைப் பார்க்க, முன்னர் குறிப்பிடப்பட்ட இரண்டாவது படிக்குச் செல்லவும், ஆனால் இப்போது, ​​மதிப்பிடப்பட்ட திட்டம் தோன்றியவுடன், ApexSQL திட்டத்தில் பிரதான ரிப்பன் பட்டியில் உள்ள "உண்மையான" பொத்தானைக் கிளிக் செய்யவும்.

உண்மையான பொத்தானைக் கிளிக் செய்த பிறகு, பிற செயல்படுத்தல் திட்டத் தரவுகளுடன் செலவு அளவுருக்களின் விரிவான மாதிரிக்காட்சியுடன் உண்மையான செயல்படுத்தல் திட்டம் காண்பிக்கப்படும்.

இந்த இணைப்பைப் பின்தொடர்வதன் மூலம் செயல்படுத்தல் திட்டங்களைப் பார்ப்பது பற்றிய கூடுதல் தகவலைக் காணலாம்.

வினவல் திட்டங்களை query_post_execution_showplan நிகழ்வு மூலம் நீட்டிக்கப்பட்ட நிகழ்வுகள் அமர்விலிருந்து பெறலாம். இங்கே ஒரு எடுத்துக்காட்டு XEvent அமர்வு:

/* "வினவல் விவரம் கண்காணிப்பு" டெம்ப்ளேட் மூலம் உருவாக்கப்பட்டது. */ சர்வரில் நிகழ்வு அமர்வை உருவாக்கவும். _text,sqlserver.tsql_ frame,sqlserver.tsql_stack)), / * விரும்பியபடி பின்வரும் நிகழ்வுகளில் ஏதேனும் ஒன்றை அகற்றவும் (அல்லது கூடுதல் நிகழ்வுகளைச் சேர்க்கவும்). */ நிகழ்வுகளைச் சேர்க்கவும். l_text,sqlserver.t sql_frame,sqlserver.tsql_stack ) எங்கே (.(.,(4)) மற்றும் .(.,(0)))), நிகழ்வைச் சேர் sqlserver.module_end(SET collect_statement=(1) ACTION(package0.event_sequence,sqlserver.client_app_name,sqlserver.database_id . plan_handle,sqlserver.query_hash,sqlserver.query_plan_hash,sqlserver.session_id,sqlserver.sql_text,sqlserver.tsql_frame,sqlserver.tsql_stack) எங்கே (., AD.,(4.)) sqlserver.rpc_completed(ACTION(package0.event_sequence,sqlserver.client_app_name,sqlserver.database_id,sqlserver. plan_handle,sqlserver.query_hash,sqlserver.query_plan_server.sqlserver_sqlserver .tsql_ frame,sqlserver.tsql_stack) எங்கே (. (.,(4)) மற்றும் .(.,(0))), நிகழ்வைச் சேர் query_hash,sqlserver.query_plan_hash,sqlserver.session_id,sqlserver.sql_text,sqlserver.tsql_frame,sqlserver.tsql_stack) எங்கே (.(.,(4)) மற்றும் .(., ADQL நடவடிக்கை ack) எங்கே (.(.,(4 )) ​​மற்றும் .(.,(0)))), நிகழ்வைச் சேர் .query_hash,sqlserver.query_plan_hash,sqlserver.session_id, sqlserver.sql_text,sqlserver.tsql_frame,sqlserver.tsql_stack) எங்கே (.(.,(4)) மற்றும் .(.(.,(4)) மற்றும் .(.தொகுப்பு T.0 MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_L ATENCY =30 வினாடிகள்,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_SIZE=0 KB,MEMORY_PARTITION_MODE=STARTUP_OFTEKON

அமர்வு உருவாக்கப்பட்டவுடன் (SSMS இல்), ஆப்ஜெக்ட் பிரவுசருக்குச் சென்று நிர்வகி | என்பதற்குச் செல்லவும் விரிவாக்கப்பட்ட நிகழ்வுகள் | அமர்வுகள். "GetExecutionPlan" அமர்வை வலது கிளிக் செய்து அதை இயக்கவும். அதை வலது கிளிக் செய்து, "நேரடி தரவைப் பார்க்கவும்" என்பதைத் தேர்ந்தெடுக்கவும்.

பின்னர் புதிய வினவல் சாளரத்தைத் திறந்து ஒன்று அல்லது அதற்கு மேற்பட்ட வினவல்களை இயக்கவும். அட்வென்ச்சர்வொர்க்குகளுக்கான ஒன்று இங்கே:

AdventureWorks பயன்படுத்தவும்; GO P.ProductName, NonDiscountSales = (OrderQty * UnitPrice), Discounts = ((OrderQty * UnitPrice) * UnitPriceDiscount) உற்பத்தியில் இருந்து தேர்வு செய்யவும் ER மூலம் தயாரிப்பு பெயர் DESC; போ

ஓரிரு நிமிடங்களுக்குப் பிறகு, "GetExecutionPlan: Live Data" தாவலில் சில முடிவுகளைப் பார்ப்பீர்கள். கட்டத்தில் உள்ள query_post_execution_showplan நிகழ்வுகளில் ஒன்றைத் தேர்ந்தெடுத்து, கட்டத்தின் கீழே உள்ள வினவல் திட்டம் தாவலைக் கிளிக் செய்யவும். இது இப்படி இருக்க வேண்டும்:

தொகு: XEvent குறியீடு மற்றும் ஸ்கிரீன்ஷாட் SQL/SSMS 2012 w/SP2 இலிருந்து உருவாக்கப்பட்டது. நீங்கள் SQL 2008/R2 ஐப் பயன்படுத்தினால், அதை இயக்க ஸ்கிரிப்டை அமைக்கலாம். ஆனால் இந்த பதிப்பில் GUI இல்லை, எனவே நீங்கள் showplan XML கோப்பை பிரித்தெடுக்க வேண்டும், அதை *.sqlplan கோப்பாக சேமித்து SSMS இல் திறக்க வேண்டும். சிரமமாக இருக்கிறது. XEvents SQL 2005 அல்லது அதற்கு முந்தைய காலத்தில் இல்லை. எனவே, நீங்கள் SQL 2012 அல்லது அதற்குப் பிறகு இல்லை என்றால், இங்கே இடுகையிடப்பட்ட மற்ற பதில்களில் ஒன்றை நான் மிகவும் பரிந்துரைக்கிறேன்.

பகிர்

SQL சர்வர் 2005, SQL சர்வர் 2005 தரவுத்தளப் புள்ளிவிவரங்களில் வினவல் மேம்படுத்தல், புள்ளிவிவரங்களை உருவாக்குதல், புதுப்பிப்பு புள்ளிவிவரங்கள், செட் NOCOUNT, வினவல் செயல்படுத்தல் திட்டங்கள், லாஜிக்கல் ரீட்களின் எண்ணிக்கை, ஆப்டிமைசர் குறிப்புகள், எஃப்.டி.ஐ.எஸ்.டி.ஓ.பி. உருவாக்க_திட்டம்_வழிகாட்டி

செயல்திறனை மேம்படுத்துவதற்கான மற்ற அனைத்து முறைகளும் ஏற்கனவே தீர்ந்துவிட்டால், SQL சர்வர் டெவலப்பர்கள் மற்றும் நிர்வாகிகள் தங்கள் வசம் ஒரு கடைசி இருப்பு உள்ளது - தனிப்பட்ட வினவல்களை செயல்படுத்துவதை மேம்படுத்துகிறது. எடுத்துக்காட்டாக, உங்கள் பணிக்கு ஒரு குறிப்பிட்ட அறிக்கையை உருவாக்குவதை விரைவுபடுத்துவது அவசியமானால், இந்த அறிக்கையை உருவாக்கப் பயன்படுத்தப்படும் வினவலை நீங்கள் பகுப்பாய்வு செய்யலாம் மற்றும் அது உகந்ததாக இல்லாவிட்டால் அதன் திட்டத்தை மாற்ற முயற்சி செய்யலாம்.

பல வல்லுநர்கள் வினவல் தேர்வுமுறையில் தெளிவற்ற அணுகுமுறையைக் கொண்டுள்ளனர். ஒருபுறம், வினவல் செயல்படுத்தல் திட்டங்களை உருவாக்கும் Query Optimizer மென்பொருள் தொகுதியின் செயல்பாடு, SQL Server 2000 மற்றும் SQL Server 2005 ஆகிய இரண்டிலும் பல நியாயமான விமர்சனங்களை ஏற்படுத்துகிறது. Query Optimizer பெரும்பாலும் மிகவும் உகந்த வினவல் செயலாக்கத் திட்டங்களைத் தேர்ந்தெடுப்பதில்லை மற்றும் சில சூழ்நிலைகளில் இழக்கிறது. Oracle மற்றும் Informix இலிருந்து ஒத்த தொகுதிகள். மறுபுறம், கைமுறை வினவல் தேர்வுமுறை என்பது மிகவும் உழைப்பு மிகுந்த செயல்முறையாகும். அத்தகைய தேர்வுமுறைக்கு நீங்கள் அதிக நேரம் செலவிடலாம், இறுதியில், எதுவும் உகந்ததாக இல்லை என்பதைக் கண்டறியலாம்: வினவல் ஆப்டிமைசரால் முதலில் முன்மொழியப்பட்ட திட்டம் மிகவும் உகந்ததாக மாறியது (பெரும்பாலான சந்தர்ப்பங்களில் இது நிகழ்கிறது). கூடுதலாக, சிறிது நேரத்திற்குப் பிறகு நீங்கள் கைமுறையாக உருவாக்கிய வினவல் செயல்படுத்தல் திட்டம் (தரவுத்தளத்தில் புதிய தகவலைச் சேர்த்த பிறகு) துணை உகந்ததாக மாறும் மற்றும் வினவல்களை இயக்கும் போது செயல்திறனைக் குறைக்கும்.

சிறந்த வினவல் திட்டங்களைத் தேர்ந்தெடுக்க, Query Optimizerக்கு சரியான புள்ளிவிவரத் தகவல் தேவை என்பதையும் கவனத்தில் கொள்ளவும். ஆசிரியரின் அனுபவத்தின்படி, எல்லா நிர்வாகிகளுக்கும் அது என்னவென்று தெரியாது என்பதால், புள்ளிவிவரங்களைப் பற்றி நாங்கள் உங்களுக்கு மேலும் கூறுவோம்.

புள்ளிவிவரங்கள்- இது அட்டவணை நெடுவரிசைகளில் தரவு விநியோகம் பற்றிய சிறப்பு சேவைத் தகவல். உதாரணமாக, செயின்ட் பீட்டர்ஸ்பர்க் நகரத்தில் வசிக்கும் அனைத்து இவானோவ்களையும் திருப்பி அனுப்ப வேண்டும் என்று ஒரு வினவல் செயல்படுத்தப்படுகிறது என்று கற்பனை செய்து கொள்வோம். இந்த அட்டவணையில் உள்ள 90% பதிவுகள் நெடுவரிசையில் ஒரே மதிப்பைக் கொண்டுள்ளன என்று வைத்துக்கொள்வோம் நகரம் - "செயிண்ட் பீட்டர்ஸ்பர்க்". நிச்சயமாக, வினவல் செயலாக்கத்தின் பார்வையில், அட்டவணையில் உள்ள அனைத்து இவானோவ்களையும் தேர்ந்தெடுப்பது முதலில் அதிக லாபம் தரும் (அவை வெளிப்படையாக 90% ஆக இருக்காது), பின்னர் நெடுவரிசையின் மதிப்பைச் சரிபார்க்கவும். நகரம்தேர்ந்தெடுக்கப்பட்ட ஒவ்வொரு பதிவுக்கும். இருப்பினும், ஒரு நெடுவரிசையில் உள்ள மதிப்புகள் எவ்வாறு விநியோகிக்கப்படுகின்றன என்பதைக் கண்டறிய, நீங்கள் முதலில் வினவலை இயக்க வேண்டும். எனவே, SQL சர்வர் சுயாதீனமாக அத்தகைய வினவல்களை செயல்படுத்துவதைத் தொடங்குகிறது, பின்னர் தரவுத்தள சேவை அட்டவணையில் தரவு விநியோகம் (புள்ளிவிவரங்கள் என்று அழைக்கப்படுகிறது) பற்றிய தகவல்களை சேமிக்கிறது.

SQL சர்வர் 2005 தரவுத்தளங்களுக்கு, இயல்புநிலை அமைப்புகள் AUTO_CREATE_STATISTICSமற்றும் AUTO_UPDATE_STATISTICS. இந்த வழக்கில், தரவுத்தள நெடுவரிசைகளுக்கான புள்ளிவிவரங்கள் உருவாக்கப்பட்டு தானாகவே புதுப்பிக்கப்படும். மிகப்பெரிய மற்றும் மிக முக்கியமான தரவுத்தளங்களுக்கு, புள்ளிவிவரங்களை உருவாக்க மற்றும் புதுப்பிக்கும் செயல்பாடுகள் தற்போதைய பயனர் அனுபவத்தில் குறுக்கிடலாம். எனவே, அத்தகைய தரவுத்தளங்களுக்கு, சில நேரங்களில் இந்த அளவுருக்கள் முடக்கப்படும், மேலும் புள்ளிவிவரங்களை உருவாக்க மற்றும் புதுப்பிக்கும் செயல்பாடுகள் இரவில் கைமுறையாக செய்யப்படுகின்றன. இதற்குப் பயன்படுத்தப்படும் கட்டளைகள் புள்ளிவிவரங்களை உருவாக்கவும்மற்றும் புள்ளிவிவரங்களைப் புதுப்பிக்கவும்.

இப்போது வினவல் தேர்வுமுறை பற்றி பேசலாம்.

முதலில் செய்ய வேண்டியது, தேர்வுமுறைக்கு உட்பட்ட கேள்விகளைக் கண்டறிவதாகும். இதைச் செய்வதற்கான எளிதான வழி, ஒரு சுயவிவரத்தின் உதவியுடன், கோரிக்கையின் காலத்திற்கு ஒரு வடிப்பானை அமைப்பதாகும் (வடிப்பான் கால அளவுசாளரத்தில் தொகுவடிகட்டி(வடிப்பானை திருத்து), பொத்தானைப் பயன்படுத்தி திறக்க முடியும் நெடுவரிசைவடிப்பான்கள்தாவலில் நிகழ்வுகள்தேர்வுசுவடு அமர்வு பண்புகள் சாளரம்). எடுத்துக்காட்டாக, தேர்வுமுறைக்கான விண்ணப்பதாரர்கள் 5 வினாடிகளுக்கு மேல் செயல்படும் நேரம் கொண்ட வினவல்களை உள்ளடக்கியிருக்கலாம். டேட்டாபேஸ் டியூனிங் ஆலோசகர் வழங்கிய வினவல் தகவலையும் நீங்கள் பயன்படுத்தலாம்.

உங்கள் இணைப்புகள், சேமிக்கப்பட்ட நடைமுறைகள் மற்றும் செயல்பாடுகளுக்கு அளவுரு அமைக்கப்பட்டுள்ளதா என்பதை அடுத்து நீங்கள் சரிபார்க்க வேண்டும் NOCOUNT. கட்டளையைப் பயன்படுத்தி அதை நிறுவலாம் எண்ணை அமைக்கவும். இந்த அளவுருவை அமைக்கும் போது, ​​முதலில், சேவையகத்திலிருந்து திரும்புதல் மற்றும் வினவல் முடிவுகளில் உள்ள வரிசைகளின் எண்ணிக்கை பற்றிய தகவல்களின் காட்சி முடக்கப்படும் (அதாவது வரிசை "N வரிசை(கள்) பாதிக்கப்பட்டது"தாவலில் செய்திகள்(சி செய்திகள்) மேனேஜ்மென்ட் ஸ்டுடியோவில் கோரிக்கையை செயல்படுத்தும் போது குறியீட்டுடன் பணிபுரியும் சாளரங்கள்). இரண்டாவதாக, ஒரு சிறப்பு சேவையக செய்தியின் பரிமாற்றம் முடக்கப்பட்டுள்ளது DONE_IN_PROC, இது ஒவ்வொரு சேமிக்கப்பட்ட செயல்முறை படிக்கும் முன்னிருப்பாகத் திரும்பும். பெரும்பாலான சேமிக்கப்பட்ட நடைமுறைகளை அழைக்கும்போது, ​​அவற்றின் செயல்பாட்டின் முடிவு மட்டுமே உங்களுக்குத் தேவைப்படும், மேலும் ஒவ்வொரு கட்டத்திற்கும் செயலாக்கப்பட்ட வரிசைகளின் எண்ணிக்கையைப் பற்றி யாரும் கவலைப்படுவதில்லை. எனவே, அளவுருவை அமைக்கவும் NOCOUNTசேமிக்கப்பட்ட நடைமுறைகள் அவற்றின் செயல்திறனை தீவிரமாக மேம்படுத்தலாம். வழக்கமான வினவல்களின் செயலாக்க வேகமும் அதிகரிக்கிறது, ஆனால் குறைந்த அளவிற்கு (10% வரை).

இதற்குப் பிறகு, நீங்கள் வினவல் செயல்படுத்தல் திட்டங்களுடன் பணிபுரியத் தொடங்கலாம்.

வினவல் செயலாக்கத் திட்டத்தைப் பார்ப்பதற்கான எளிதான வழி SQL சர்வர் மேலாண்மை ஸ்டுடியோவில் உள்ளது. எதிர்பார்க்கப்படும் வினவல் செயல்படுத்தல் திட்டத்தைப் பற்றிய தகவலைப் பெற, நீங்கள் மெனுவைப் பயன்படுத்தலாம் வினவு(வினவல்) கட்டளையைத் தேர்ந்தெடுக்கவும் காட்சிமதிப்பிடப்பட்டுள்ளதுமரணதண்டனைதிட்டம்(எதிர்பார்க்கப்பட்ட செயல்படுத்தல் திட்டத்தைக் காட்டு). வினவலை செயல்படுத்துவதற்கான உண்மையான திட்டத்தை நீங்கள் அறிய விரும்பினால், அதை இயக்கும் முன் அதே மெனுவில் அளவுருவை அமைக்கலாம் சேர்க்கிறதுஉண்மையானமரணதண்டனைதிட்டம்(உண்மையான செயலாக்கத் திட்டத்தைச் சேர்க்கவும்). இந்த வழக்கில், வினவலை இயக்கிய பிறகு, SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோவில் முடிவுகள் சாளரத்தில் மற்றொரு தாவல் தோன்றும். மரணதண்டனைதிட்டம்(செயல்படுத்தும் திட்டம்), இது உண்மையான வினவல் செயல்படுத்தும் திட்டத்தைக் காண்பிக்கும். உங்கள் சுட்டியை எந்த நிலையிலும் நகர்த்தும்போது, ​​அதைப் பற்றிய கூடுதல் தகவலைப் பெறலாம் (படம் 11.15).

அரிசி. 11.15 SQL சர்வர் மேலாண்மை ஸ்டுடியோவில் வினவல் செயல்படுத்தல் திட்டம்

வினவல் செயல்படுத்தும் திட்டத்தில், படத்தில் நீங்கள் பார்க்க முடியும் என, பல கூறுகள் இருக்கலாம். அவற்றைப் புரிந்துகொள்வதும், வேறுபட்ட செயல்படுத்தல் திட்டத்தை முன்மொழிவதும் மிகவும் கடினமான பணியாகும். சாத்தியமான கூறுகள் ஒவ்வொன்றும் அதன் சொந்த சூழ்நிலையில் உகந்தவை என்று சொல்ல வேண்டும். எனவே, பொதுவாக வினவல் தேர்வுமுறையின் நிலைகள் இப்படி இருக்கும்:

q முதலில், Management Studio சாளரத்தில், கட்டளையை இயக்கவும் புள்ளியியல் IO ஐ அமைக்கவும். இதன் விளைவாக, கோரிக்கையின் ஒவ்வொரு செயல்பாட்டிற்கும் பிறகு, கூடுதல் தகவல்கள் காண்பிக்கப்படும். அதில் ஒரே ஒரு அளவுருவின் மதிப்பில் நாங்கள் ஆர்வமாக உள்ளோம் - தர்க்கரீதியான வாசிப்புகள். இந்த அளவுரு என்பது வினவல்களை இயக்கும் போது தருக்க வாசிப்புகளின் எண்ணிக்கை, அதாவது, கேச் (கேச் மற்றும் டிஸ்க் இரண்டிலிருந்தும் படிக்கும் எண்ணிக்கை) கொடுக்கப்பட்ட வினவலைச் செயல்படுத்தும்போது எத்தனை வாசிப்பு செயல்பாடுகளைச் செய்ய வேண்டும். இது மிக முக்கியமான அளவுரு. இயற்பியல் வாசிப்புகளின் எண்ணிக்கை (வட்டில் இருந்து மட்டுமே படிக்கிறது) மிகவும் பிரதிநிதித்துவ தகவல் அல்ல, ஏனெனில் இது இந்த அட்டவணைகளுக்கு முந்தைய அணுகல்கள் இருந்ததா இல்லையா என்பதைப் பொறுத்தது. நேரப் புள்ளிவிவரங்களும் மாறுபடும் மற்றும் அந்த நேரத்தில் சேவையகம் செயல்படும் பிற செயல்பாடுகளைச் சார்ந்தது. ஆனால் தர்க்கரீதியான வாசிப்புகளின் எண்ணிக்கை மிகவும் புறநிலை குறிகாட்டியாகும், இது கூடுதல் காரணிகளால் குறைவாக பாதிக்கப்படுகிறது;

q வினவல் செயலாக்கத் திட்டத்தை மாற்ற முயற்சிக்கவும், மேலும் ஒவ்வொரு திட்டத்திற்கும் உள்ள லாஜிக்கல் ரீட்களின் மொத்த எண்ணிக்கையைக் கண்டறியவும். பொதுவாக, உகப்பாக்கி குறிப்புகளைப் பயன்படுத்தி வினவல் செயலாக்கத் திட்டம் மாற்றப்படும். எந்த செயல்படுத்தல் திட்டத்தைப் பயன்படுத்த வேண்டும் என்பதை அவர்கள் வெளிப்படையாக ஆப்டிமைசருக்குச் சொல்கிறார்கள்.

SQL சர்வர் 2005 இல் பல உகப்பாக்கி குறிப்புகள் உள்ளன. புத்தகங்கள் ஆன்லைனில் அவற்றைப் பற்றிய தகவல்களைப் படிக்கலாம் (தாவலில் உள்ள பட்டியலில் குறியீட்டு(குறியீடு) தேர்ந்தெடுக்கப்பட வேண்டும் வினவுகுறிப்புகள் [SQLசர்வர்](வினவல் குறிப்புகள்), சேருங்கள்குறிப்புகள்(சேர் குறிப்புகள்) அல்லது மேசைகுறிப்புகள் [SQLசர்வர்](அட்டவணை குறிப்புகள்)). மிகவும் பொதுவாக பயன்படுத்தப்படும் குறிப்புகள்:

கே நோலாக், ரவுலாக், பாக்லாக், டேப்லாக், ஹோல்ட்லாக், READCOMMITTEDLOCK, UPDLOCK, எக்ஸ்லாக்- இந்த குறிப்புகள் பூட்டுகளை நிர்வகிக்கப் பயன்படுகின்றன (பிரிவு 11.5.7 பார்க்கவும்);

கே வேகமாக வரிகளின் எண்ணிக்கை - ஒரு வினவல் செயல்படுத்தல் திட்டம் தேர்ந்தெடுக்கப்படும், அதில் குறிப்பிட்ட எண்ணிக்கையிலான வரிசைகள் (பதிவு தொகுப்பின் தொடக்கத்திலிருந்து முதல்) கூடிய விரைவில் காட்டப்படும். பயனருக்கு சரியாக முதல் பதிவுகள் தேவைப்பட்டால் (எடுத்துக்காட்டாக, சமீபத்திய ஆர்டர்கள்), இந்த குறிப்பை முடிந்தவரை விரைவாக பயன்பாட்டு சாளரத்தில் ஏற்றுவதற்குப் பயன்படுத்தலாம்;

கே கட்டாய உத்தரவு- வினவலை இயக்கும் போது அட்டவணையில் இணைவது இந்த அட்டவணைகள் வினவலில் பட்டியலிடப்பட்டுள்ள வரிசையில் சரியாகச் செய்யப்படும்;

கே MAXDOP(அதிகபட்ச இணையான நிலையிலிருந்து - ஒரு கோரிக்கையின் இணைமயமாக்கலின் அதிகபட்ச அளவு) - இந்த குறிப்பைப் பயன்படுத்தி, கோரிக்கையை செயல்படுத்த பயன்படுத்தக்கூடிய அதிகபட்ச செயலிகளின் எண்ணிக்கை குறிக்கப்படுகிறது. பொதுவாக இந்த குறிப்பு இரண்டு சூழ்நிலைகளில் பயன்படுத்தப்படுகிறது:

· செயலிகளுக்கு இடையில் மாறும்போது ( சூழல்மாறுதல்) வினவல் செயல்படுத்தும் வேகம் வெகுவாகக் குறைக்கப்படுகிறது. மல்டிபிராசசர் சிஸ்டங்களில் SQL சர்வர் 2000க்கு இந்த நடத்தை பொதுவானது;

· தற்போதைய பயனர் அனுபவத்தில் குறைந்தபட்ச தாக்கத்தை ஏற்படுத்த சில கனமான கோரிக்கைகளை நீங்கள் விரும்பினால்;

கே உகந்ததாக்கு- இந்தக் குறிப்பு, கோரிக்கைக்கு அனுப்பப்பட்ட அளவுருவின் ஒரு குறிப்பிட்ட மதிப்பிற்கு உகந்ததாக இருப்பதைக் குறிப்பிட உங்களை அனுமதிக்கிறது (உதாரணமாக, இதற்கான வடிகட்டி மதிப்புக்கு எங்கே);

கே திட்டத்தைப் பயன்படுத்தவும்- இது மிகவும் சக்திவாய்ந்த வாய்ப்பு. அத்தகைய குறிப்பைப் பயன்படுத்தி, XML வடிவத்தில் திட்டத்தை ஒரு சர மதிப்பாக அனுப்புவதன் மூலம் வினவல் செயலாக்கத் திட்டத்தை நீங்கள் வெளிப்படையாக வரையறுக்கலாம். குறிப்பு திட்டத்தைப் பயன்படுத்தவும் SQL சர்வர் 2005 இல் மட்டுமே தோன்றியது (முந்தைய பதிப்புகளில் வினவல் செயல்படுத்தல் திட்டங்களை வெளிப்படையாக வரையறுக்க முடிந்தது, ஆனால் இது வேறு வழிகளைப் பயன்படுத்தி செய்யப்பட்டது). எக்ஸ்எம்எல் வடிவத்தில் ஒரு திட்டத்தை கைமுறையாக எழுதலாம் அல்லது தானாக உருவாக்கலாம் (உதாரணமாக, படம் 11.15 இல் காட்டப்பட்டுள்ள செயல்படுத்தல் திட்டத்துடன் வரைகலை திரையில் வலது கிளிக் செய்து சூழல் மெனுவில் கட்டளையைத் தேர்ந்தெடுப்பதன் மூலம் சேமிக்கவும்மரணதண்டனைதிட்டம்என(செயல்படுத்தும் திட்டத்தை இவ்வாறு சேமிக்கவும்)).

SQL சர்வர் 2005 ஒரு முக்கியமான புதிய அம்சத்தை அறிமுகப்படுத்துகிறது, இது வினவல் உரையை சேதப்படுத்தாமல் வினவல் செயல்படுத்தும் திட்டத்தை கைமுறையாக மாற்ற அனுமதிக்கிறது. கோரிக்கைக் குறியீட்டை மாற்ற முடியாது என்பது அடிக்கடி நிகழ்கிறது: இது தொகுக்கப்பட்ட பயன்பாட்டின் குறியீட்டில் கடினமாக உள்ளது. இந்தச் சிக்கலைச் சமாளிக்க, SQL Server 2005 சேமிக்கப்பட்ட செயல்முறையை அறிமுகப்படுத்தியது sp_create_plan_guide. இது என்று அழைக்கப்படுவதை உருவாக்க உங்களை அனுமதிக்கிறது செயல்படுத்தல் திட்ட வழிகாட்டிகள் (திட்டம்வழிகாட்டுகிறது), இது தானாகவே பொருந்தும் கோரிக்கைகளுக்குப் பயன்படுத்தப்படும்.

ஒரு பயன்பாடு மூலம் தரவுத்தளத்திற்கு அனுப்பப்பட்ட வினவல்களை நீங்கள் பகுப்பாய்வு செய்கிறீர்கள் என்றால், முதலில் பின்வரும் புள்ளிகளுக்கு கவனம் செலுத்துவது அர்த்தமுள்ளதாக இருக்கும்:

q வினவல் செயல்படுத்தல் திட்டங்களில் செயல்பாடு எவ்வளவு அடிக்கடி தோன்றும் மேசைஊடுகதிர்(முழு அட்டவணை ஸ்கேன்). அட்டவணையைப் பயன்படுத்தி அட்டவணையை அணுகுவது மிகவும் திறமையானதாக இருக்கும்.

q குறியீட்டில் கர்சர்கள் பயன்படுத்தப்பட்டுள்ளதா. நிரல் தொடரியல் அடிப்படையில் கர்சர்கள் மிகவும் எளிமையானவை, ஆனால் செயல்திறன் அடிப்படையில் மிகவும் திறமையற்றவை. மற்ற தொடரியல் கட்டமைப்புகளைப் பயன்படுத்தி, கர்சர்களைப் பயன்படுத்துவதைத் தவிர்க்கலாம், மேலும் வேகத்தில் பெரிய ஆதாயத்தைப் பெறலாம்;

q குறியீடு தற்காலிக அட்டவணைகளைப் பயன்படுத்துகிறதா அல்லது தரவு வகையைப் பயன்படுத்துகிறதா மேசை. தற்காலிக அட்டவணைகளை உருவாக்குதல் மற்றும் அவர்களுடன் பணிபுரிவதற்கு நிறைய ஆதாரங்கள் தேவைப்படுகின்றன, எனவே முடிந்தால் நீங்கள் அவற்றைத் தவிர்க்க வேண்டும்;

q தற்காலிக அட்டவணைகளை உருவாக்குவதோடு, அவற்றின் கட்டமைப்பை மாற்றுவதற்கும் கணினி வளங்களின் குறிப்பிடத்தக்க நுகர்வு தேவைப்படுகிறது. எனவே, தற்காலிக அட்டவணைகளின் கட்டமைப்பை மாற்றுவதற்கான கட்டளைகள் உடனடியாக உங்கள் கவனத்தை ஈர்க்க வேண்டும். தேவையான அனைத்து நெடுவரிசைகளுடன் ஒரு தற்காலிக அட்டவணையை உடனடியாக உருவாக்குவது வழக்கமாக சாத்தியமாகும்;

q சில நேரங்களில் வினவல்கள் பயன்பாட்டிற்கு உண்மையில் தேவைப்படும் (கூடுதல் நெடுவரிசைகள் அல்லது வரிசைகள்) விட அதிகமான தரவை வழங்கும். நிச்சயமாக, இது உற்பத்தித்திறனை மேம்படுத்தாது;

பயன்பாடு சேவையகத்திற்கு கட்டளைகளை அனுப்பினால் q செயல்படுத்த, பின்னர் அவற்றை சேமிக்கப்பட்ட நடைமுறை அழைப்பு மூலம் மாற்றுவது பற்றி யோசிப்பது அர்த்தமுள்ளதாக இருக்கும் sp_executesql. வழக்கமான கட்டளையை விட இது செயல்திறன் நன்மைகளைக் கொண்டுள்ளது செயல்படுத்த;

q செயல்திறன் மேம்பாடுகள் சில நேரங்களில் சேமிக்கப்பட்ட நடைமுறைகளை மீண்டும் தொகுத்து புதிய வினவல் செயல்படுத்தல் திட்டங்களை உருவாக்குவதன் மூலம் அடையலாம். அளவுருக்களின் பயன்பாட்டிற்கு நீங்கள் கவனம் செலுத்த வேண்டும், சேமிக்கப்பட்ட நடைமுறையின் குறியீட்டில் DML மற்றும் DDL கட்டளைகளை கலக்க முயற்சிக்காதீர்கள், மேலும் இணைப்பு அளவுருக்கள் இருப்பதை உறுதிப்படுத்தவும். ANSI_DEFAULTS ஐ அமைக்கவும், ANSI_NULLS ஐ அமைக்கவும், ANSI_PADDING அமை, ANSI_WARNINGS அமைமற்றும் SET CONCAT_NULL_YIELDS_NULLகோரிக்கைகளுக்கு இடையில் மாறவில்லை (அத்தகைய அளவுருக்களில் எந்த மாற்றமும் பழைய செயல்படுத்தல் திட்டங்களை செல்லாததாக்கும்). பொதுவாக, இந்த அளவுருக்கள் தனிப்பட்ட கோரிக்கை அளவில் அல்லது சேமிக்கப்பட்ட நடைமுறைக் குறியீட்டில் அமைக்கப்படும் போது சிக்கல் எழலாம்.

எவ்வாறாயினும், வினவல் செயலாக்கத் திட்டங்களை கைமுறையாக உருவாக்குவதும் குறிப்புகளைப் பயன்படுத்துவதும் கடைசி முயற்சியாகும், முடிந்தால் தவிர்க்கப்பட வேண்டும்.

SQL வினவல் செயல்படுத்தல் திட்டம்,அல்லது வினவல் திட்டம், ஒரு SQL வினவலைச் செயல்படுத்த தேவையான படிகள் அல்லது DBMS வழிமுறைகளின் வரிசையாகும். ஒவ்வொரு அடியிலும், இந்த SQL வினவல் செயலாக்கப் படியைத் தொடங்கிய செயல்பாடு, இறுதி முடிவை உருவாக்கக்கூடிய அல்லது மேலும் செயலாக்கத்திற்குப் பயன்படுத்தக்கூடிய தரவின் வரிசைகளை மீட்டெடுக்கிறது. SQL வினவல் செயல்படுத்தல் திட்ட வழிமுறைகள், SQL அறிக்கைகள் SELECT, INSERT, DBMS ஆல் செய்யப்படும் செயல்பாடுகளின் வரிசையாக குறிப்பிடப்படுகின்றன. நீக்க மற்றும் மேம்படுத்தல். வினவல் திட்டத்தின் உள்ளடக்கங்கள் பொதுவாக ஒரு மர அமைப்பில் குறிப்பிடப்படுகின்றன மற்றும் பின்வரும் தகவலை உள்ளடக்கியது:

  • தரவு மூலங்களை இணைக்கும் வரிசை (அட்டவணைகள், காட்சிகள், முதலியன);
  • ஒவ்வொரு தரவு மூலத்திற்கும் அணுகல் முறை;
  • தரவு மூலங்களை இணைப்பதற்கான முறைகள்;
  • தரவுத் தேர்வு, வரிசைப்படுத்துதல் மற்றும் திரட்டுதல் ஆகியவற்றைக் கட்டுப்படுத்தும் செயல்பாடுகள்;
  • ஒவ்வொரு செயல்பாட்டின் விலை மற்றும் தீவிரம்;
  • பகிர்வு மற்றும் இணையான சாத்தியமான பயன்பாடு. SQL வினவல் செயலாக்கத் திட்டத்தால் வழங்கப்பட்ட தகவல், SQL செயல்பாடுகளைச் செய்ய மேம்படுத்துபவர் எந்த அணுகுமுறைகள் மற்றும் முறைகளைத் தேர்ந்தெடுக்கிறார் என்பதைப் பார்க்க டெவலப்பரை அனுமதிக்கிறது.

SQL வினவல் செயல்படுத்தல் திட்டத்தை விளக்குகிறது

ஒரு SQL வினவலின் செயலாக்கத் திட்டத்தின் காட்சிப்படுத்தல் கருவிகள் மற்றும் மேம்பாட்டுக் கருவிகளைப் பொறுத்தது, இது DBMS இன் ஒரு பகுதியாக இருக்கலாம், அதன் வினவல் பகுப்பாய்வு ஆர்வமாக இருக்கலாம் அல்லது ஒரு குறிப்பிட்ட DBMS உடன் நேரடியாக தொடர்பில்லாத தனி வணிக அல்லது இலவசமாக விநியோகிக்கப்படும் மென்பொருள் தயாரிப்புகளாக இருக்கலாம். உற்பத்தியாளர். ஒன்று அல்லது மற்றொரு வினவல் திட்ட காட்சிப்படுத்தல் கருவியைப் பயன்படுத்துவது பொதுவாக வழங்கப்பட்ட வினவல் திட்டம் விவரிக்கும் உணர்வை கணிசமாக பாதிக்காது. ஒரு குறிப்பிட்ட வினவலை இயக்கும் போது ஆப்டிமைசர் எந்த பாதையை எடுக்கும் என்பதை பகுப்பாய்வு செய்யும் செயல்பாட்டில் தீர்மானிக்கும் காரணி, வினவல் திட்டத்தில் வழங்கப்பட்ட தகவலை சரியாக விளக்கும் திறன் ஆகும்.

ஏற்கனவே குறிப்பிட்டுள்ளபடி, ஒரு SQL வினவல் திட்டமானது SQL செயல்பாடுகளின் செயல்பாட்டின் வரிசையை மட்டுமல்ல, இந்த செயல்பாடுகளுக்கு இடையிலான உறவுகளையும் விவரிக்கும் ஒரு மர அமைப்பைக் கொண்டுள்ளது. வினவல் திட்ட மரத்தில் உள்ள ஒவ்வொரு முனையும் வரிசைப்படுத்துதல் அல்லது அட்டவணை அணுகல் முறை போன்ற செயல்பாடாகும். முனைகளுக்கு இடையே பெற்றோர்-குழந்தை உறவு உள்ளது. பெற்றோர்-குழந்தை உறவுகள் பின்வரும் விதிகளால் நிர்வகிக்கப்படுகின்றன:

  • ஒரு பெற்றோருக்கு ஒன்று அல்லது அதற்கு மேற்பட்ட குழந்தைகள் இருக்கலாம்;
  • ஒரு குழந்தைக்கு ஒரே ஒரு பெற்றோர்;
  • பெற்றோர் அறுவை சிகிச்சை இல்லாத ஒரு அறுவை சிகிச்சை மரத்தின் மேல்;
  • SQL வினவல் திட்டத்தை காட்சிப்படுத்தும் முறையைப் பொறுத்து, குழந்தை பெற்றோருடன் தொடர்புடைய சில உள்தள்ளலுடன் நிலைநிறுத்தப்படுகிறது. ஒரு பெற்றோரின் சந்ததியினர் தங்கள் பெற்றோரிடமிருந்து அதே தூரத்தில் உள்ளனர்.

SQL வினவல் செயல்படுத்தல் திட்டத்தால் வழங்கப்பட்ட தகவலைக் கூர்ந்து கவனிப்போம். கொடுக்கப்பட்ட உதாரணங்கள் Oracle DBMS சூழலில் நிகழ்த்தப்பட்டன. ஆரக்கிள் SQL டெவலப்பர் வினவல்களைச் செயல்படுத்துவதற்கும் SQL வினவல் திட்டத்தைக் காட்சிப்படுத்துவதற்கும் ஒரு கருவியாகப் பயன்படுத்தப்பட்டது. SQL வினவல் திட்டத்தின் ஒரு பகுதி படம் காட்டப்பட்டுள்ளது. 10.11

ஐ ஐடி ஐ ஆபரேஷன்

  • 0RDER_ITEMS

PR0DUCT_INF0RMATI0N_PK தயாரிப்பு தகவல்

உள்ளமைக்கப்பட்ட சுழல்கள் மூலம் ஸ்டேட்மெண்ட் வரிசையைத் தேர்ந்தெடுக்கவும்.

அரிசி. 10.11 Oracle DBMS சூழலில் ஒரு SQL வினவல் செயல்படுத்தல் திட்டத்தின் துண்டு

வினவல் திட்ட செயல்பாடுகளின் தொடர்பு விதிகளைப் பயன்படுத்தி, அவற்றின் பின்வரும் முறையான விளக்கத்தை நாம் வரையறுக்கலாம்.

ஆபரேஷன் 0 என்பது வினவல் திட்ட மரத்தின் வேர். ரூட்டுக்கு ஒரு குழந்தை உள்ளது: அறுவை சிகிச்சை 1.

ஆபரேஷன் 1 - அறுவை சிகிச்சைக்கு ஒரு குழந்தை உள்ளது: அறுவை சிகிச்சை 2.

ஆபரேஷன் 2 - அறுவை சிகிச்சைக்கு இரண்டு குழந்தைகள் உள்ளனர்: ஆபரேஷன் 3 மற்றும் ஆபரேஷன் 6.

ஆபரேஷன் 3 - அறுவை சிகிச்சைக்கு இரண்டு குழந்தைகள் உள்ளனர்: ஆபரேஷன் 4 மற்றும் ஆபரேஷன் 5.

ஆபரேஷன் 4 - அறுவை சிகிச்சைக்கு குழந்தைகள் இல்லை.

ஆபரேஷன் 5 - அறுவை சிகிச்சைக்கு குழந்தைகள் இல்லை.

ஆபரேஷன் 6 - அறுவை சிகிச்சைக்கு குழந்தைகள் இல்லை.

வினவல் திட்ட செயல்பாடுகளுக்கு இடையிலான பெற்றோர்-குழந்தை தொடர்பு படம். 10.12

வினவல் திட்டத்தில் செய்யப்படும் செயல்பாடுகளை மூன்று வகைகளாகப் பிரிக்கலாம்: தனித்தனி, வரம்பற்ற இணைப்பு செயல்பாடுகள் மற்றும் இணைக்கப்பட்ட கூட்டு செயல்பாடுகள் (படம் 10.13).

தன்னாட்சி

செயல்பாடுகள் தொடர்பில்லாதவை

தொடர்புடைய செயல்பாடுகள்

செயல்பாடுகள்

சங்கங்கள்

சங்கங்கள்

அரிசி. 10.12


அரிசி. 10.13

தன்னாட்சி செயல்பாடுகள் -இவை அதிகபட்சம் ஒரு குழந்தைக்கு அறுவை சிகிச்சை செய்யும் செயல்பாடுகள்.

தன்னாட்சி செயல்பாடுகள் செய்யப்படும் பின்வரும் விதிகளை பின்வருமாறு உருவாக்கலாம்.

  • 2. ஒவ்வொரு குழந்தைக்கும் அறுவை சிகிச்சை ஒரு முறை மட்டுமே செய்யப்படுகிறது.
  • 3. ஒவ்வொரு குழந்தை அறுவை சிகிச்சையும் அதன் முடிவை பெற்றோர் அறுவை சிகிச்சைக்கு திருப்பி அனுப்புகிறது.

படத்தில். படம் 10.14 பின்வரும் வினவிற்கான திட்டத்தைக் காட்டுகிறது:

ஆர்டர்களில் இருந்து o.order_id ,o.order_status ஐ தேர்வு செய்யவும் அல்லது ஆர்டர் மூலம் o.order_status

இந்த வினவல் தனியான செயல்பாடுகளை மட்டுமே கொண்டுள்ளது.

தன்னாட்சி செயல்பாடுகளைப் பின்பற்றுவதற்கான விதிகளை கணக்கில் எடுத்துக்கொள்வதன் மூலம், அவற்றின் செயல்பாட்டின் வரிசை பின்வருமாறு இருக்கும்.

  • 1. பின்வரும் தன்னாட்சி செயல்பாடுகளின் விதிக்கு இணங்க, ஐடி = 2 உடன் செயல்பாடு முதலில் செயல்படுத்தப்படும், ஆர்டர்கள் அட்டவணையின் அனைத்து வரிசைகளும் வரிசையாக படிக்கப்படும்.
  • 2. அடுத்து, ID = 1 உடன் செயல்பாடு செய்யப்படுகிறது, ID = 2 உடன் செயல்பாட்டின் மூலம் திரும்பிய வரிசைகள் வரிசைப்படுத்தல் விதியின் நிபந்தனைகளின்படி வரிசைப்படுத்தப்படுகின்றன.
  • 3. ஐடி = 0 உடன் செயல்பாடு செய்யப்படுகிறது.

வரம்பற்ற யூனியன் செயல்பாடுகள்

வரம்பற்ற யூனியன் செயல்பாடுகள்ஒன்றுக்கு மேற்பட்ட சுதந்திரமாகச் செயல்படும் குழந்தை அறுவை சிகிச்சைகள் ஆகும். உதாரணம்: HASH JOIN, MERGE JOIN, INTERSECTION, MINUS, UNION ALL.

வரம்பற்ற இணைப்புச் செயல்பாடுகள் செயல்படும் பின்வரும் விதிகளை பின்வருமாறு உருவாக்கலாம்.

  • 1. குழந்தை அறுவை சிகிச்சை பெற்றோர் அறுவை சிகிச்சைக்கு முன் செயல்படுத்தப்படுகிறது.
  • 2. இந்த மதிப்புகளின் ஏறுவரிசையில் உள்ள மிகச்சிறிய செயல்பாட்டு ஐடி மதிப்பில் தொடங்கி, குழந்தை செயல்பாடுகள் தொடர்ச்சியாக செயல்படுத்தப்படுகின்றன.
  • 3. ஒவ்வொரு அடுத்தடுத்த குழந்தை அறுவை சிகிச்சை தொடங்கும் முன், தற்போதைய அறுவை சிகிச்சை முழுமையாக முடிக்கப்பட வேண்டும்.
  • 4. மற்ற குழந்தைகளின் செயல்பாடுகள் எதுவாக இருந்தாலும், ஒவ்வொரு குழந்தைக்கும் அறுவை சிகிச்சை ஒருமுறை மட்டுமே செய்யப்படுகிறது.
  • 5. ஒவ்வொரு குழந்தை அறுவை சிகிச்சையும் அதன் முடிவை பெற்றோர் அறுவை சிகிச்சைக்கு திருப்பி அனுப்புகிறது.

படத்தில். படம் 10.15 பின்வரும் வினவிற்கான திட்டத்தைக் காட்டுகிறது:

UNION அனைத்து ஆர்டர்களில் இருந்து o.order_id ஐத் தேர்ந்தெடுக்கவும்

order_items oi இலிருந்து oi.order_id ஐத் தேர்ந்தெடுக்கவும்

இந்த வினவல் வரம்பற்ற இணைப்பின் செயல்பாட்டைக் கொண்டுள்ளது யூனியன் அனைத்தும். மீதமுள்ள இரண்டு செயல்பாடுகள் தன்னாட்சி.

அரிசி. 10.15 வரம்பற்ற இணைப்பு செயல்பாடுகள், வினவல் திட்டம்

1 அறிக்கை ஐ தேர்ந்தெடு

தொடர்பில்லாத கூட்டுச் செயல்பாடுகளைப் பின்பற்றுவதற்கான விதிகளைக் கருத்தில் கொண்டு, அவற்றின் செயல்பாட்டின் வரிசை பின்வருமாறு இருக்கும்.

  • 1. தொடர்பற்ற இணைப்புச் செயல்பாடுகளின் விதிகள் 1 மற்றும் 2 க்கு இணங்க, ஐடி = 2 உடன் செயல்பாடு முதலில் ஆர்டர்கள் அட்டவணையின் அனைத்து வரிசைகளும் படிக்கப்படும்.
  • 2. விதி 5 க்கு இணங்க, ஐடி = 2 உடன் செயல்பாடு, 1 படி 1 ஐடி = 1 உடன் பெற்றோர் செயல்பாட்டின் வரிசைகளை வழங்குகிறது.
  • 3. ID = 2 உடன் செயல்பாடு முடிவடையும் போது மட்டுமே ID = 3 உடன் செயல்படத் தொடங்கும்.
  • 4. ஐடி = 2 உடன் செயல்பாட்டை முடித்த பிறகு, ஐடி = 3 உடன் செயல்பாடு ஆர்டர்_உருப்படிகளின் அட்டவணையின் அனைத்து வரிசைகளும் வரிசையாகப் படிக்கப்படும்.
  • 5. விதி 5 க்கு இணங்க, ஐடி = 3 உடனான செயல்பாடு, ஐடி = 1 உடன் பெற்றோர் செயல்பாட்டின் வரிசைகளை படி 4 இல் படிக்கும்.
  • 6. ஐடி = 1 உடனான செயல்பாடு அதன் அனைத்து குழந்தை செயல்பாடுகளிலிருந்தும் பெறப்பட்ட தரவுகளின் அடிப்படையில் (ஐடி = 2 மற்றும் ஐடி = 3 உடன்) தரவுகளின் முடிவு தொகுப்பை உருவாக்குகிறது.
  • 7. ஐடி = 0 உடன் செயல்பாடு செய்யப்படுகிறது.

எனவே, சுதந்திரமான இணைவு செயல்பாடு அதன் குழந்தை செயல்பாடுகளை வரிசையாக செயல்படுத்துகிறது என்பதைக் குறிப்பிடலாம்.

இணைக்கப்பட்ட கூட்டு செயல்பாடுகள்

இணைக்கப்பட்ட கூட்டு செயல்பாடுகள் -இவை ஒன்றுக்கு மேற்பட்ட குழந்தை அறுவை சிகிச்சைகள் ஆகும், மற்ற செயல்பாடுகளில் ஒன்று மற்றவர்களின் மரணதண்டனையைக் கட்டுப்படுத்துகிறது. எடுத்துக்காட்டு: உள்ளமைக்கப்பட்ட சுழல்கள், புதுப்பித்தல்.

சங்கிலி இணைக்கப்பட்ட செயல்பாடுகள் செயல்படும் பின்வரும் விதிகளை பின்வருமாறு உருவாக்கலாம்.

  • 1. குழந்தை அறுவை சிகிச்சை பெற்றோர் அறுவை சிகிச்சைக்கு முன் செயல்படுத்தப்படுகிறது.
  • 2. குறைந்த செயல்பாட்டு எண் (ஐடி) கொண்ட குழந்தை அறுவை சிகிச்சை மீதமுள்ள குழந்தை செயல்பாடுகளை செயல்படுத்துவதைக் கட்டுப்படுத்துகிறது.
  • 3. பொதுவான பெற்றோர் செயல்பாட்டைக் கொண்ட குழந்தை செயல்பாடுகள், இந்த மதிப்புகளின் ஏறுவரிசையில் செயல்பாட்டு ஐடியின் குறைந்த மதிப்பில் தொடங்கி செயல்படுத்தப்படும். மீதமுள்ள குழந்தை செயல்பாடுகள் தொடர்ச்சியாக செயல்படுத்தப்படுவதில்லை.
  • 4. முதல் குழந்தைக்கு அறுவை சிகிச்சை ஒரு முறை மட்டுமே செய்யப்படுகிறது. மற்ற அனைத்து குழந்தை செயல்பாடுகளும் பல முறை அல்லது இல்லை.

படத்தில். படம் 10.16 பின்வரும் வினவிற்கான திட்டத்தைக் காட்டுகிறது:

ஆர்டர்_ஐட்டெம்ஸ் ஓஐ, ஆர்டர்கள் ஓ

எங்கே o.order_id= oi.order_id

மற்றும் oi.product_id>100

மற்றும் 100 மற்றும் 1000 இடையே o.customer_id

இந்த வினவலில் தொடர்புடைய இணைப்பு செயல்பாடு உள்ளது, NESTED LOOPS.

ஐ ஐடி ஐ ஆபரேஷன்

அறிக்கையைத் தேர்ந்தெடு |

அரிசி. 10.16 இணைக்கப்பட்ட கூட்டு செயல்பாடுகள், வினவல் திட்டம்

சங்கிலி இணைக்கப்பட்ட செயல்பாடுகளைப் பின்பற்றுவதற்கான விதிகளைக் கருத்தில் கொண்டு, அவற்றின் செயல்பாட்டின் வரிசை பின்வருமாறு இருக்கும்.

  • 1. பின்வரும் சங்கிலி இணைப்புச் செயல்பாடுகளின் விதிகள் 1 மற்றும் 2 இன் படி, ஐடி = 2 உடன் செயல்பாடு முதலில் செய்யப்பட வேண்டும், 1D = 2 மற்றும் 1D = 3 உடன் செயல்பாடுகள் தன்னாட்சி பெற்றவை, மேலும் பின்வரும் தன்னாட்சி செயல்பாடுகளின் விதி 1 இன் படி, ஐடி = 2 உடன் செயல்படும் ஐடி = 3. ORDCUSTOMERIX குறியீட்டு வரம்பு நிபந்தனையின் அடிப்படையில் பார்க்கப்படுகிறது. 100 முதல் 1000 வரையிலான வாடிக்கையாளர் ஐடி.
  • 2. ஐடி=3 உடனான செயல்பாடு, படி 1 இல் பெறப்பட்ட ரவுல்ட் வரிசை அடையாளங்காட்டிகளின் பட்டியலை (Ш=2 உடன்) பெற்றோர் செயல்பாட்டிற்குத் திரும்பும்.
  • 3. ஐடி = 2 உடன் செயல்பாடு ஆர்டர்கள் அட்டவணையில் உள்ள வரிசைகளைப் படிக்கிறது, இதில் ரவுல்ட் மதிப்பு படி 2 இல் பெறப்பட்ட ரவுல்ட் மதிப்புகளின் பட்டியலைப் பொருத்துகிறது.
  • 4. ஐடி = 2 உடனான செயல்பாடு, பெற்றோர் செயல்பாட்டின் (ஐடி = 1 உடன்) படிக்கப்பட்ட வரிசைகளை வழங்குகிறது.
  • 5. ஐடி = 2 உடன் செயல்பாட்டின் மூலம் திரும்பிய ஒவ்வொரு வரிசைக்கும், இரண்டாவது குழந்தை செயல்பாடு (ஐடி = 4 உடன்) செயல்பாட்டின் செயல்படுத்தப்படுகிறது உள்ளமைக்கப்பட்ட சுழல்கள். அதாவது, ஐடி = 2 உடன் செயல்பாட்டின் மூலம் திரும்பிய ஒவ்வொரு வரிசைக்கும், சேரும் பண்புக்கூறில் பொருத்தத்தைக் கண்டறிய order_items அட்டவணையின் முழு வரிசைமுறை ஸ்கேன் செய்யப்படுகிறது.
  • 6. ஐடி = 2 உடன் செயல்பாட்டின் மூலம் திரும்பிய வரிசைகளின் எண்ணிக்கையைப் போல படி 5 மீண்டும் மீண்டும் செய்யப்படுகிறது.
  • 7. ஐடி = 1 உடன் ஒரு செயல்பாடு பெற்றோர் செயல்பாட்டின் முடிவுகளை வழங்குகிறது (ஐடி = 0 உடன்).
  • 8. ஐடி = 0 உடன் செயல்பாடு செய்யப்படுகிறது.

பகுப்பாய்வு செய்யப்பட்ட வினவலின் சிக்கலைப் பொறுத்து, அதன் செயலாக்கத் திட்டம் மிகவும் சிக்கலான கட்டமைப்பைக் கொண்டிருக்கலாம், இது முதல் பார்வையில் விளக்குவது கடினம். மேலே விவரிக்கப்பட்ட விதிகளின் முறையான செயலாக்கம் மற்றும் செயல்பாடுகளின் சிதைவு ஆகியவை எந்தவொரு சிக்கலான SQL வினவலையும் செயல்படுத்தும் திட்டத்தை திறம்பட பகுப்பாய்வு செய்ய உங்களை அனுமதிக்கும். வாடிக்கையாளர்களின் பட்டியல், அவர்கள் வாங்கிய பொருட்களின் எண்ணிக்கை மற்றும் அவற்றின் மொத்த விலை ஆகியவற்றை உருவாக்கும் வினவலின் உதாரணத்தைப் பார்ப்போம்:

தேர்வு கள். cust_first_name customer_name,

COUNT(DISTINCT oi.product_id) ஆனது product_qty,

SUM(oi.quantity* oi.unit_price) மொத்த_செலவாக oe.orders அல்லது INNER JOIN வாடிக்கையாளர்கள் c ON

o.customer_id=c.customer_id

உள் சேர் oe.order_items oi ON o.order_id= oi.order_id GROUP BY c. cust_first_name

இந்த வினவல் திட்டத்தின் செயல்பாடுகளின் வரிசை படம் காட்டப்பட்டுள்ளது. 10.17.

அறிக்கை ஐ தேர்ந்தெடு

குழுவை வரிசைப்படுத்தவும் ஒய்.ஜி

அட்டவணை அணுகல் முழுவதும்

இண்டெக்ஸ் ரேஞ்ச் ஸ்கேன்

அட்டவணை அணுகல் அட்டவணை ROWIDd

அட்டவணை அணுகல் முழுவதும்

அரிசி. 10.17. வினவல் திட்டம், செயல்பாடுகளின் வரிசை

படத்தில் வழங்கப்பட்டுள்ள 80b வினவலின் செயலாக்கத் திட்டத்தை விளக்குவதற்கான சாத்தியமான அணுகுமுறையை விவரிப்போம். 10.17. இந்த அணுகுமுறை இரண்டு முக்கிய நிலைகளை உள்ளடக்கியது: செயல்பாடுகளை தொகுதிகளாக சிதைப்பது மற்றும் செயல்பாடுகளின் வரிசையை தீர்மானித்தல்.

முதல் கட்டத்தில், செய்யப்படும் செயல்பாடுகளை தொகுதிகளாக சிதைப்பது அவசியம். இதைச் செய்ய, அனைத்து தொழிற்சங்க செயல்பாடுகளையும் நாங்கள் காண்கிறோம், அதாவது. ஒன்றுக்கு மேற்பட்ட குழந்தை அறுவை சிகிச்சைகள் (படம். 10.17 இல் இவை செயல்பாடுகள் 2, 3 மற்றும் 4), மற்றும் இந்த குழந்தை செயல்பாடுகளை தொகுதிகளாக பிரிக்கவும். இதன் விளைவாக, படத்தில் உள்ள உதாரணத்தைப் பயன்படுத்தவும். 10.17, நாங்கள் மூன்று தொழிற்சங்க செயல்பாடுகளையும் ஏழு தொகுதி செயல்பாடுகளையும் பெறுகிறோம்.

இரண்டாவது கட்டத்தில், செயல்பாடுகளின் தொகுதிகளின் செயல்பாட்டின் வரிசை தீர்மானிக்கப்படுகிறது. இதைச் செய்ய, மேலே விவரிக்கப்பட்ட பின்வரும் செயல்பாடுகளுக்கான விதிகளைப் பயன்படுத்த வேண்டும். ஒவ்வொரு செயல்பாட்டையும் அதன் அடையாள எண்ணுடன் (III) செயல்படுத்துவது தொடர்பான தொடர்ச்சியான பரிசீலனைகளை மேற்கொள்வோம்.

செயல்பாடு Ш = 0 தன்னாட்சி மற்றும் செயல்பாட்டின் பெற்றோர் сШ = 1 ஆகும்.

ஆபரேஷன் யூ = 1 தன்னாட்சியும் கொண்டது; W = 2 செயல்பாட்டின் பெற்றோர் மற்றும் Y = 0 செயல்பாட்டிற்கு முன் செயல்படுத்தப்படும்.

ஆபரேஷன் GO = 2 என்பது தொடர்பில்லாத தொழிற்சங்கச் செயல்பாடாகும், மேலும் இது யூ = 3, யூ = 8 செயல்பாடுகளுக்கான பெற்றோர் செயல்பாடு ஆகும். GO = 2 செயல்பாடு GO = 1 க்கு முன் செய்யப்படுகிறது.

ஆபரேஷன் GO = 3 என்பது இணைக்கப்பட்ட தொழிற்சங்க செயல்பாடாகும், இது GO = 4, GO = 7 செயல்பாடுகளுக்கான பெற்றோர் செயல்பாடு ஆகும். GO = 3 செயல்பாட்டிற்கு முன் GO = 3 செய்யப்படுகிறது.

ஆபரேஷன் GO = 4 என்பது இணைக்கப்பட்ட தொழிற்சங்க செயல்பாடாகும், இது GO = 5, GO = 6 செயல்பாடுகளுக்கான பெற்றோர் செயல்பாடு ஆகும். GO = 4 செயல்பாட்டிற்கு முன் GO = 4 செய்யப்படுகிறது.

ஆபரேஷன் GO = 5 என்பது ஒரு தன்னாட்சி செயல்பாடாகும், இது GO = 4 செயல்பாட்டிற்கு முன் செய்யப்படுகிறது.

ஆபரேஷன் GO = 6 என்பது ஒரு தன்னாட்சி செயல்பாடாகும், இது GO = 5 செயல்பாட்டிற்கு முன் செய்யப்படுகிறது.

ஆபரேஷன் GO = 7 என்பது ஒரு தன்னாட்சி செயல்பாடாகும், இது "C" செயல்பாடுகளின் தொகுதியை செயல்படுத்திய பிறகு செய்யப்படுகிறது.

ஆபரேஷன் GO = 8 என்பது ஒரு தன்னாட்சி செயல்பாடாகும், இது "E" செயல்பாடுகளின் தொகுதிக்குப் பிறகு செய்யப்படுகிறது.

மேலே உள்ள பகுத்தறிவு மற்றும் பின்வரும் விதிகளின் அடிப்படையில், நிகழ்த்தப்பட்ட செயல்பாடுகளின் வரிசையை நாங்கள் உருவாக்குகிறோம்:

  • 1. தன்னாட்சி செயல்பாடு GO = 5 முதலில் செய்யப்படுகிறது, தொடர்புடைய கூட்டு செயல்பாடுகளின் வரிசைக்கான விதிகளைப் பார்க்கவும். முழு அட்டவணையும் தொடர்ச்சியாக படிக்கப்படுகிறது.
  • 2. செயல்பாட்டின் முடிவு GO = 5 - வாசிப்பு அட்டவணை வரிசைகள் - செயல்பாடு GO = 4 க்கு மாற்றப்படும்.
  • 3. செயல்பாடு GO = 4 செய்யப்படுகிறது: GO = 5 செயல்பாட்டின் மூலம் திரும்பிய ஒவ்வொரு வரிசைக்கும், GO = 6 ஆனது, சேரும் பண்புக்கூறுக்கு எதிராக ஸ்கேன் செய்யப்படுகிறது. Yaou1s1 வரிசை அடையாளங்காட்டிகளின் பட்டியலைப் பெறுதல்.
  • 4. GO = 4 செயல்பாட்டின் முடிவு GO = 3 செயல்பாட்டிற்கு மாற்றப்பட்டது. அதாவது, வரிசை அடையாளங்காட்டிகளின் பட்டியல் Kosh1s1 மாற்றப்படுகிறது.
  • 5. செயல்பாடு GO = 3 செய்யப்படுகிறது: செயல்பாடுகளின் தொகுதி "C" செயல்பாட்டின் விளைவாக 11оу1с1 திரும்பிய ஒவ்வொரு மதிப்புக்கும், GO = 7 செயல்பாடு செய்யப்படுகிறது, அதாவது. அட்டவணை வரிசைகள் ITMI வரிசை அடையாளங்காட்டிகளின் கொடுக்கப்பட்ட பட்டியலிலிருந்து படிக்கப்படுகின்றன, Ш = 4 செயல்பாட்டைச் செய்த பிறகு பெறப்பட்டது.
  • 6. தன்னாட்சி செயல்பாடு GO = 8 செய்யப்படுகிறது - முழு அட்டவணையின் தொடர்ச்சியான வாசிப்பு.
  • 7. தொடர்பில்லாத இணைத்தல் செயல்பாடு GO = 2 செய்யப்படுகிறது: "E" மற்றும் "E" ஆகிய செயல்பாட்டுத் தொகுதிகளின் முடிவுகளை ஹாஷ் செய்வதன் மூலம் ஒரு இணைப்பு செய்யப்படுகிறது.
  • 8. GO = 2 செயல்பாட்டின் முடிவு GO = 1 க்கு மாற்றப்படுகிறது.
  • 9. தொடர்பில்லாத ஒன்றிணைப்பு செயல்பாடு GO = 1 செய்யப்படுகிறது: GO = 2 செயல்பாட்டின் விளைவாக பெறப்பட்ட தரவு ஒருங்கிணைக்கப்பட்டு வரிசைப்படுத்தப்படுகிறது.
  • 10. செயல்பாடு GO = 0 செய்யப்படுகிறது.

BSGO வினவலைச் செயல்படுத்துவதற்கான பெரும்பாலான திட்டங்களுக்கு முக்கிய வகை செயல்பாடுகளுக்காக வடிவமைக்கப்பட்ட பின்வரும் விதிகள் பொருந்தும். இருப்பினும், BSGO வினவல்களில் பயன்படுத்தப்படும் கட்டுமானங்கள் உள்ளன, அவை பின்வரும் விதிகளில் விவரிக்கப்பட்டுள்ள செயல்பாடுகளின் வரிசையை மீறுவதாகக் குறிக்கின்றன. இத்தகைய சூழ்நிலைகள், எடுத்துக்காட்டாக, துணை வினவல்கள் அல்லது இணைவு எதிர்ப்பு முன்னறிவிப்புகளைப் பயன்படுத்துவதன் விளைவாக எழலாம். எவ்வாறாயினும், BSGO வினவலின் செயலாக்கத் திட்டத்தை விளக்கும் செயல்முறையானது, BSGO வினவலைச் செயல்படுத்தும் போது, ​​ஆப்டிமைசர் என்ன செய்யப் போகிறது என்பதற்கான மிகத் துல்லியமான பகுப்பாய்வை உறுதிசெய்யும் பல விதிகளைப் பயன்படுத்துவதை மட்டும் குறிக்காது. மற்றொரு BSGO கோரிக்கை எப்போதும் தனிப்பட்ட வழக்கு; மற்றும் DBMS இல் அது எவ்வாறு செயல்படுத்தப்படும் என்பது DBMS இன் பதிப்பு, DBMS நிகழ்வு பயன்படுத்தப்படும் இயக்க முறைமையின் பதிப்பு மற்றும் வகை, பயன்படுத்தப்படும் வன்பொருள், 80b வினவலின் ஆசிரியரின் தகுதிகள் உட்பட பல காரணிகளைப் பொறுத்தது. முதலியன

1 msdevcon.ru #msdevcon

3 Olontsev Sergey SQL சர்வர் MCM, MVP Kaspersky Lab

4 கட்டமைக்கப்பட்ட வினவல் மொழி

5 எடுத்துக்காட்டு வினவல் மனித வளங்களிலிருந்து pers.firstname, pers.lastname, emp.jobtitle, emp.nationalidnumber ஐத் தேர்ந்தெடுக்கவும். Employee என emp inner join Person.Person pers on pers.businessentityid = emp.businessentityid அங்கு pers.firstname ="NFirstohnem emp.hiredate >= " "

6 தருக்க வினவல் மரம் திட்டம் pers.firstname, pers.lastname, emp.jobtitle, emp.nationalidnumber D A T A Filter Join pers.firstname = N"John" மற்றும் emp.hiredate >= " " pers.businessentityid = emp.business. pers தரவைப் பெறுங்கள் தரவு மனித வளங்களைப் பெறுங்கள். Employee as emp

7 வினவல் திட்டம் T-SQL வினவல் எவ்வாறு இயற்பியல் மட்டத்தில் செயல்படுத்தப்படுகிறது என்பதைக் காட்டுகிறது.

8 பல வழிகள்

9 டெமோ எளிய திட்டம் ஒரு அட்டவணையில் இருந்து அனைத்து தரவையும் தேர்ந்தெடுப்பது, வினவல் திட்டத்தை எவ்வாறு பெறுவது

11 Init() ஆபரேட்டர் முறைகள் Init() முறையானது இயற்பியல் ஆபரேட்டரைத் தன்னைத்தானே துவக்கி, தேவையான தரவு கட்டமைப்புகளைத் தயாரிக்கிறது. ஒரு இயற்பியல் ஆபரேட்டர் Init() க்கு பல அழைப்புகளைப் பெற முடியும், இருப்பினும் அது வழக்கமாக ஒன்றை மட்டுமே பெறுகிறது. GetNext() GetNext() முறையானது ஃபிசிக்கல் ஆபரேட்டருக்கு முதல் அல்லது அடுத்தடுத்த தரவை பெறுவதற்கு காரணமாகிறது. ஒரு இயற்பியல் ஆபரேட்டர் பல GetNext() அழைப்புகளைப் பெறலாம் அல்லது எதுவுமில்லை. GetNext() முறையானது ஒரு வரிசை தரவை வழங்குகிறது, மேலும் அது எத்தனை முறை அழைக்கப்படும் என்பது ஷோப்ளான் அறிக்கையின் வெளியீட்டில் உள்ள ActualRows மதிப்பால் குறிக்கப்படுகிறது. மூடு() மூடு() முறை அழைக்கப்படும் போது, ​​இயற்பியல் ஆபரேட்டர் சில சுத்தம் செய்து மூடுகிறார். மூடு() க்கு இயற்பியல் ஆபரேட்டர் ஒரே ஒரு அழைப்பைப் பெறுகிறார்.

12 ஆபரேட்டர்களுக்கு இடையேயான தொடர்பு ஆபரேட்டர் 1 ஆபரேட்டர் 2 ஆபரேட்டர் 3

13 ஆபரேட்டர்களுக்கிடையேயான தொடர்பு 1. ரோ ஆபரேட்டர் 1 ஆபரேட்டர் 2 ஆபரேட்டர் 3 கோரிக்கை

14 ஆபரேட்டர்களுக்கிடையேயான தொடர்பு 1. கோரிக்கை வரிசை 2. கோரிக்கை வரிசை ஆபரேட்டர் 1 ஆபரேட்டர் 2 ஆபரேட்டர் 3

15 ஆபரேட்டர்களுக்கிடையேயான தொடர்பு 1. கோரிக்கை வரிசை 2. கோரிக்கை வரிசை ஆபரேட்டர் 1 ஆபரேட்டர் 2 ஆபரேட்டர் 3 3. வரிசையை அனுப்பு

16 ஆபரேட்டர்களுக்கிடையேயான தொடர்பு 1. கோரிக்கை வரிசை 2. கோரிக்கை வரிசை ஆபரேட்டர் 1 ஆபரேட்டர் 2 ஆபரேட்டர் 3 4. வரிசையை அனுப்பு 3. வரிசையை அனுப்பு

17 ஆபரேட்டர்களுக்கு இடையேயான தொடர்பு 1. கோரிக்கை வரிசை 2. கோரிக்கை வரிசை ஆபரேட்டர் 1 ஆபரேட்டர் 2 ஆபரேட்டர் 3 4. வரிசையை அனுப்பு 3. வரிசையை அனுப்பு

18 டெமோ ஆபரேட்டர் டாப் அல்லது ஏன் ஒரு ஆபரேட்டரை இடிரேட்டர் என்று அழைப்பது நல்லது

19 அட்டவணைகள் இல்லை!

20 HoBT பக்கம் 1 பக்கம் 2 பக்கம் 3 பக்கம் 4 வரிசை 1 வரிசை 3 வரிசை 5 வரிசை 7 வரிசை 2 வரிசை 4 வரிசை 6 வரிசை 8

21 HoBT பக்கம் பக்கம் பக்கம் பக்கம் பக்கம் பக்கம் பக்கம் பக்கம் பக்கம்

22 டெமோ தரவு அணுகல் ஆபரேட்டர்கள் ஸ்கேன், தேடுதல், தேடுதல்

23 தரவுத்தளத்தில் ஒரே ஒரு அட்டவணை யாரிடம் உள்ளது?

24 நெஸ்டெட் லூப்ஸ், ஹாஷ் ஜாயின் மற்றும் மெர்ஜ் ஜாயின்

25 ஆபரேட்டர்களுடன் இணையும் நெஸ்டட் லூப்கள் உள் இணைப்பு, இடது புற இணைப்பு, இடது அரை இணைப்பு, இடது எதிர்ப்பு அரை இணை ஒன்றிணைத்தல் உள் இணைப்பு, இடது புற இணைப்பு, இடது அரை இணைப்பு, இடது எதிர்ப்பு அரை இணைப்பு, வலது புற இணைப்பு, வலது அரை இணைப்பு, வலது எதிர்ப்பு அரை இணைப்பு , யூனியன் ஹாஷ் அனைத்து வகையான தருக்க செயல்பாடுகளிலும் சேரவும்

26 டெமோ சேரவும், வரிசைப்படுத்தவும் மற்றும் முதல் ஆபரேட்டர் நெஸ்டட் லூப்ஸ், மெர்ஜ் ஜாயின், ஹாஷ் ஜாயின், வரிசைப்படுத்தவும், முதல் ஆபரேட்டர்

27 எச்சரிக்கைகள்

28 டெமோ வினவல் திட்டங்களில் பிழைகள் மற்றும் எச்சரிக்கைகள்

29 எனக்கு எதுவும் தெரியாது என்பது எனக்குத் தெரியும். சாக்ரடீஸ்

30 டெமோ தெளிவற்ற ஒன்றின் சிறிய உதாரணம்

31 வினவல் திட்டங்களைக் கண்டறிதல் -- அதிக CPU ஐப் பயன்படுத்தும் முதல் 10 வினவல்கள் மற்றும் அவற்றின் திட்டங்கள் மேல்(10) சப்ஸ்ட்ரிங் (t.text, qs.statement_start_offset / 2, கேஸ் போது qs.statement_end_offset = -1 பிறகு len(t.text) ஐத் தேர்ந்தெடுக்கவும். (qs.statement_end_offset - qs.statement_start_offset) / 2 end), qs.execution_count, cast(qs.total_worker_time / as decimal(18, 2)) total_worker_time_ms, cast(qs.total_worker_time_scount. / decimal 1. / (18, 2)) avg_worker_time_ms ஆகவும், sys.dm_exec_query_stats இலிருந்து query_plan ஆகவும் (p.query_plan) sys.dm_exec_sql_text(qs.sql_handle) sys.dm_exec_sql_text(qs.sql_handle) ss.p.sql_handle , qs statement_start_offset , qs.statement_end_offset) p வரிசைப்படி qs.total_worker_time desc; போ

32 பெரிய வினவல் திட்டங்களைப் படிப்பதற்கான நுட்பங்கள் அவற்றை தருக்கத் தொகுதிகளாகப் பிரித்து படிப்படியாக பகுப்பாய்வு செய்ய முயற்சிக்கவும். SSMS இல், திட்டம் வரைபடமாகக் காட்டப்படும் போது, ​​வினவல் திட்டத்தின் மூலம் எளிதாக வழிசெலுத்துவதற்கு கீழ் வலது மூலையில் ஒரு பொத்தான் தோன்றும். நீங்கள் XQuery\XPath ஐப் பயன்படுத்தலாம்.

33 டெமோ பெரிய வினவல் திட்டம்

35 டெமோ SQL சென்ட்ரி பிளான் எக்ஸ்ப்ளோரர்

36 முதல் ஆபரேட்டர் ஆப்டிமைசேஷன் நிலை தொகுக்க நேரத்தின் அளவு கேச் அளவுருக்கள், தொகுத்தல் மதிப்புகள் ஆரம்பகால நிறுத்தத்திற்கான காரணங்களைச் சுருக்கமாகக் கூறுவோம், அதிக விலை கொண்ட ஆபரேட்டர்களை முதலில் பார்க்கவும். இவை வெறும் மதிப்பிடப்பட்ட மதிப்புகள் (உண்மையான செயல்படுத்தல் திட்டங்களில் கூட) என்பதை நினைவில் கொள்ளவும்.

37 புக்மார்க்\கீ லுக்அப்பை சுருக்கமாகக் கூறுவோம், அவற்றில் சில இருந்தால், பெரும்பாலும் எந்த பிரச்சனையும் இல்லை. அவற்றில் நிறைய இருந்தால், ஒரு மூடிமறைப்பு குறியீட்டை உருவாக்குவது அவற்றை அகற்ற உதவும். எச்சரிக்கைகள் இது ஏன் நிகழ்கிறது என்பதை நீங்கள் சரிபார்த்து, தேவைப்பட்டால் நடவடிக்கை எடுக்க வேண்டும்.

38 ஆபரேட்டர்களுக்கிடையேயான இணைப்புகளை சுருக்கமாகக் கூறுவோம் (தரவு ஓட்டங்கள்) தடிமனான இணைப்பு, இந்த ஆபரேட்டர்களிடையே அதிக தரவு அனுப்பப்படுகிறது. சில கட்டத்தில் தரவு ஓட்டம் கூர்மையாக அதிகரித்தால் குறிப்பாக கவனம் செலுத்துவது மதிப்பு. டேபிள்களை இணைக்கும் வரிசை சிறிய தரவு ஸ்ட்ரீம்கள், அவற்றை இணைப்பது எளிதாகும். எனவே, முதலில், நீங்கள் அந்த அட்டவணையில் சேர வேண்டும், அதன் விளைவாக தரவு ஓட்டம் சிறியதாக இருக்கும்.

39 சுருக்கம் ஸ்கேன்கள் ஸ்கேன் என்றால் சிக்கல் இருப்பதாக அர்த்தமில்லை. மிகவும் திறமையான தேடலை மேற்கொள்வதற்கு, அட்டவணையில் போதுமான குறியீடு இல்லாதிருக்கலாம். மறுபுறம், நீங்கள் அட்டவணையின் அனைத்து அல்லது பெரிய பகுதியையும் தேர்ந்தெடுக்க வேண்டும் என்றால், ஸ்கேனிங் மிகவும் திறமையானதாக இருக்கும். தேடுவது எல்லாம் நன்றாக இருக்கிறது என்று அர்த்தமல்ல. க்ளஸ்டர்டு அல்லாத குறியீடுகளில் அதிக எண்ணிக்கையிலான தேடல்கள் சிக்கலாக இருக்கலாம். திட்டத்தைப் பற்றி உங்களுக்குத் தெரியாத எதுவும் சிக்கலாக இருக்கலாம்.

40 கேள்விகள்

41 தொடர்புகள் Olontsev Sergey Kaspersky Lab

42 2013 மைக்ரோசாப்ட் கார்ப்பரேஷன். அனைத்து உரிமைகளும் பாதுகாக்கப்பட்டவை. மைக்ரோசாப்ட், விண்டோஸ், விண்டோஸ் விஸ்டா மற்றும் பிற தயாரிப்புப் பெயர்கள் அமெரிக்காவில் பதிவுசெய்யப்பட்ட வர்த்தக முத்திரைகள் மற்றும்/அல்லது வர்த்தக முத்திரைகளாக இருக்கலாம். மற்றும்/அல்லது பிற நாடுகள். இங்குள்ள தகவல் தகவல் நோக்கங்களுக்காக மட்டுமே மற்றும் இந்த விளக்கக்காட்சியின் தேதியின்படி Microsoft Corporation இன் தற்போதைய பார்வையை பிரதிபலிக்கிறது. மைக்ரோசாப்ட் மாறும் சந்தை நிலைமைகளுக்கு பதிலளிக்க வேண்டும் என்பதால், இது மைக்ரோசாஃப்ட் தரப்பில் உள்ள உறுதிமொழியாக கருதப்படக்கூடாது, மேலும் இந்த விளக்கக்காட்சியின் தேதிக்குப் பிறகு வழங்கப்படும் எந்த தகவலின் துல்லியத்திற்கும் மைக்ரோசாப்ட் உத்தரவாதம் அளிக்க முடியாது. இந்த விளக்கக்காட்சியில் உள்ள தகவலின்படி மைக்ரோசாஃப்ட் எந்த உத்தரவாதமும், வெளிப்படையானது, மறைமுகமாக அல்லது சட்டப்பூர்வமாக எதையும் செய்யாது.