$lang['tuto'] = "பயிற்சிகள்"; ?> SQL சேவையகத்தில்

SQL சேவையகத்தில் மேம்படுத்தல்_ஃபோர்_ வரிசைமுறை_கேயைப் பயன்படுத்தும்போது புரிந்துகொள்ளுங்கள்

Indexing

உயர்-ஒப்பீட்டு அட்டவணைகளுக்கான செயல்திறனை அதிகரிக்கும்

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

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

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

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

கட்டளை பயன்பாட்டின் எடுத்துக்காட்டு
OPTIMIZE_FOR_SEQUENTIAL_KEY கடைசியாக செருகப்பட்ட குறியீட்டு பக்கத்தில் சர்ச்சையை குறைப்பதன் மூலம் உயர்-ஒப்பீட்டு சூழல்களில் குறியீட்டு செயல்திறனை மேம்படுத்துகிறது.
sys.dm_db_index_operational_stats குறியீட்டு செயல்திறன் குறித்த விரிவான புள்ளிவிவரங்களை மீட்டெடுக்கிறது, அதாவது பூட்டு சர்ச்சை மற்றும் பக்க தாழ்ப்பாள் காத்திருப்பு.
sys.dm_exec_requests தடுப்பு அமர்வுகளைக் கண்டறிந்து குறியீட்டு பயன்பாட்டை மேம்படுத்த தற்போது செயல்படுத்தும் வினவல்களைக் கண்காணிக்க அனுமதிக்கிறது.
DbUpdateException சி#இல், தனித்துவமான கட்டுப்பாடுகள் அல்லது முட்டுக்கட்டைகளை மீறுவது போன்ற தரவுத்தள புதுப்பிப்பு தோல்விகளைப் பிடிக்கிறது.
ROW_NUMBER() OVER (ORDER BY NEWID()) சோதனை தரவைச் செருகுவதற்கு தனித்துவமான தொடர்ச்சியான எண்களை தோராயமாக உருவாக்குகிறது, வெளியே-வரிசைக்கு வெளியே செருகல்களை உருவகப்படுத்துகிறது.
ALTER INDEX ... SET (OPTIMIZE_FOR_SEQUENTIAL_KEY = ON) குறியீட்டை மீண்டும் உருவாக்காமல் தொடர்ச்சியான விசை தேர்வுமுறை இயக்க ஏற்கனவே உள்ள குறியீட்டை மாற்றியமைக்கிறது.
SELECT name, optimize_for_sequential_key FROM sys.indexes ஒரு குறிப்பிட்ட குறியீட்டுக்கு தேர்வுமுறை அமைப்பு இயக்கப்பட்டதா என்பதை சரிபார்க்கிறது.
GETDATE() ஒரு பதிவு செருகப்படும்போது தற்போதைய கணினி நேர முத்திரையை குறிக்க மீட்டெடுக்கிறது.
CREATE CLUSTERED INDEX WITH (OPTIMIZE_FOR_SEQUENTIAL_KEY = ON) உருவாக்கும் நேரத்தில் பயன்படுத்தப்படும் தொடர்ச்சியான விசை உகப்பாக்கத்துடன் புதிய கொத்து குறியீட்டை உருவாக்குகிறது.
TRY ... CATCH தரவுத்தள பரிவர்த்தனைகள் தோல்வியடையும் போது, ​​செயலிழப்புகளைத் தடுக்கும் போது SQL சேவையகம் அல்லது C# இல் விதிவிலக்குகளைக் கையாளுகிறது.

அதிக ஒப்பீட்டு செருகல்களுக்கு SQL சேவையகத்தை மேம்படுத்துதல்

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

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

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

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

உயர்-ஒப்பீட்டு செருகல்களுக்கான SQL சேவையக குறியீடுகளை மேம்படுத்துதல்

SQL சேவையகத்தில் T-SQL ஐப் பயன்படுத்தி தரவுத்தள மேலாண்மை

-- Enable OPTIMIZE_FOR_SEQUENTIAL_KEY for a clustered indexALTER INDEX PK_Packages ON PackagesSET (OPTIMIZE_FOR_SEQUENTIAL_KEY = ON);-- Verify if the setting is enabledSELECT name, optimize_for_sequential_keyFROM sys.indexesWHERE object_id = OBJECT_ID('Packages');-- Alternative: Creating a new index with the setting enabledCREATE CLUSTERED INDEX IX_Packages_OrderIDON Packages(OrderID)WITH (OPTIMIZE_FOR_SEQUENTIAL_KEY = ON);

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

நிறுவன கட்டமைப்போடு சி# ஐப் பயன்படுத்தி பின்-இறுதி தீர்வு

using (var context = new DatabaseContext()){    var package = new Package     {         OrderID = orderId,         CreatedAt = DateTime.UtcNow     };    context.Packages.Add(package);    try     {         context.SaveChanges();     }    catch (DbUpdateException ex)     {         Console.WriteLine("Insert failed: " + ex.Message);     }}

செயல்திறன் சோதனையுடன் குறியீட்டு செயல்திறனை சரிபார்க்கிறது

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

-- Measure index contention before enabling the settingSELECT * FROM sys.dm_exec_requestsWHERE blocking_session_id <> 0;-- Simulate concurrent insertsINSERT INTO Packages (OrderID, CreatedAt)SELECT TOP 10000 ROW_NUMBER() OVER (ORDER BY NEWID()), GETDATE()FROM master.dbo.spt_values;-- Check performance metrics after enabling the settingSELECT * FROM sys.dm_db_index_operational_stats(DB_ID(), OBJECT_ID('Packages'), , );

குறியீட்டு வடிவமைப்பு உயர்-ஒற்றுமை செருகல்களை எவ்வாறு பாதிக்கிறது

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

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

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

SQL சேவையக குறியீட்டு உகப்பாக்கம் குறித்து அடிக்கடி கேட்கப்படும் கேள்விகள்

  1. என்ன செய்கிறது உண்மையில் செய்யவா?
  2. இது ஒரு குறியீட்டின் கடைசியாக செருகப்பட்ட பக்கத்தில் உள்ள சர்ச்சையை குறைக்கிறது, அதிக ஒற்றுமை செருகும் காட்சிகளில் செயல்திறனை மேம்படுத்துகிறது.
  3. நான் எப்போதும் இயக்க வேண்டுமா குறியீடுகளில்?
  4. இல்லை, ஒரு கொத்து குறியீட்டின் கடைசி பக்கத்தில் குறிப்பிடத்தக்க சர்ச்சை இருக்கும்போது, ​​பொதுவாக அடையாள நெடுவரிசைகளுடன் இது மிகவும் நன்மை பயக்கும்.
  5. நான் பயன்படுத்தலாமா? சர்ச்சையைத் தவிர்க்க அடையாள நெடுவரிசைகளுக்கு பதிலாக?
  6. ஆம், ஆனால் GUID களைப் பயன்படுத்துவது துண்டு துண்டாக வழிவகுக்கும், கூடுதல் குறியீட்டு பராமரிப்பு தேவைப்படுகிறது.
  7. எனது குறியீடு சர்ச்சையை அனுபவிக்கிறதா என்பதை நான் எவ்வாறு சரிபார்க்க முடியும்?
  8. பயன்படுத்தவும் தாழ்ப்பாளை சர்ச்சையை கண்காணிக்கவும், மெதுவாக செயல்படும் குறியீடுகளை அடையாளம் காணவும்.
  9. அதிக ஒற்றுமை செருகல்களுக்கு வேறு என்ன மேம்படுத்தல்கள் உதவுகின்றன?
  10. அட்டவணை பகிர்வு, டியூனிங் ஆகியவற்றைப் பயன்படுத்துதல் , மற்றும் பொருத்தமான குறியீட்டு கட்டமைப்புகளைத் தேர்ந்தெடுப்பது செயல்திறனை மேலும் மேம்படுத்தலாம்.

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

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

  1. அதிகாரப்பூர்வ மைக்ரோசாஃப்ட் ஆவணங்கள் : மைக்ரோசாஃப்ட் SQL சர்வர் டாக்ஸ் .
  2. SQL சேவையகத்திற்கான செயல்திறன் சரிப்படுத்தும் மற்றும் குறியீட்டு உத்திகள்: SQLSHACK INDEXING வழிகாட்டி .
  3. SQL சேவையகத்தில் உயர்-ஒப்பீட்டு செருகல்களைக் கையாள சிறந்த நடைமுறைகள்: ப்ரெண்ட் ஓசரின் SQL செயல்திறன் வலைப்பதிவு .
  4. SQL சர்வர் லாட்ச் சர்ச்சை மற்றும் அதை எவ்வாறு தீர்ப்பது என்பதைப் புரிந்துகொள்வது: ரெட்கேட் எளிய பேச்சு .