தமிழ்

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

SQL வினவல் மேம்படுத்தும் நுட்பங்கள்: உலகளாவிய தரவுத்தளங்களுக்கான ஒரு விரிவான வழிகாட்டி

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

SQL வினவல் மேம்படுத்தலுக்கான அடிப்படைகளைப் புரிந்துகொள்வது

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

வினவல் செயல்படுத்தும் திட்டம்

வினவல் செயல்படுத்தும் திட்டம் என்பது ஒரு வினவலை எவ்வாறு செயல்படுத்துவது என்பதற்கான ஒரு வழியாகும். செயல்படுத்தும் திட்டத்தைப் புரிந்துகொள்வதும் பகுப்பாய்வு செய்வதும் தடைகளை அடையாளம் காணவும், மேம்படுத்துவதற்கான பகுதிகளைக் கண்டறியவும் முக்கியமானது. பெரும்பாலான தரவுத்தள அமைப்புகள் செயல்படுத்தும் திட்டத்தைப் பார்க்க கருவிகளை வழங்குகின்றன (எ.கா., MySQL மற்றும் PostgreSQL இல் `EXPLAIN`, SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோவில் "மதிப்பிடப்பட்ட செயல்படுத்தும் திட்டத்தைக் காட்டு", Oracle இல் `EXPLAIN PLAN`).

ஒரு செயல்படுத்தும் திட்டத்தில் என்ன பார்க்க வேண்டும்:

தரவுத்தள புள்ளிவிவரங்கள்

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

கீழ்க்கண்ட கட்டளைகளைப் பயன்படுத்தி தரவுத்தள புள்ளிவிவரங்களை தவறாமல் புதுப்பிக்கவும்:

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

முக்கிய SQL வினவல் மேம்படுத்தும் நுட்பங்கள்

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

1. குறியீட்டு உத்திகள்

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

குறியீட்டுக்கான சரியான நெடுவரிசைகளைத் தேர்ந்தெடுப்பது

`WHERE` உட்பிரிவுகள், `JOIN` நிபந்தனைகள் மற்றும் `ORDER BY` உட்பிரிவுகளில் அடிக்கடி பயன்படுத்தப்படும் நெடுவரிசைகளை குறியீடு செய்யுங்கள். பின்வருவனவற்றைக் கவனியுங்கள்:

எடுத்துக்காட்டு: `order_id`, `customer_id`, `order_date` மற்றும் `order_total` நெடுவரிசைகளைக் கொண்ட `orders` அட்டவணையை எடுத்துக் கொள்ளுங்கள். நீங்கள் `customer_id` மற்றும் `order_date` மூலம் அடிக்கடி ஆர்டர்களை வினவினால், `(customer_id, order_date)` இல் ஒரு கூட்டு குறியீடு பயனளிக்கும்.

```sql CREATE INDEX idx_customer_order_date ON orders (customer_id, order_date); ```

குறியீட்டு வகைகள்

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

உள்ளடக்க குறியீடுகள்

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

எடுத்துக்காட்டு: நீங்கள் ஒரு குறிப்பிட்ட `customer_id`-க்காக `order_id` மற்றும் `order_total`-ஐ மீட்டெடுக்க `orders`-ஐ அடிக்கடி வினவினால், `(customer_id, order_id, order_total)` இல் ஒரு உள்ளடக்க குறியீடு சிறந்ததாக இருக்கும்.

```sql CREATE INDEX idx_customer_covering ON orders (customer_id, order_id, order_total); ```

குறியீடு பராமரிப்பு

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

2. வினவல் மறுஎழுத்து நுட்பங்கள்

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

`SELECT *` ஐத் தவிர்க்கவும்

உங்கள் `SELECT` அறிக்கையில் உங்களுக்குத் தேவையான நெடுவரிசைகளை எப்போதும் குறிப்பிடவும். `SELECT *` எல்லா நெடுவரிசைகளையும் மீட்டெடுக்கிறது, அவை உங்களுக்குத் தேவையில்லை என்றாலும், இது I/O மற்றும் நெட்வொர்க் போக்குவரத்தை அதிகரிக்கிறது.

தவறு: `SELECT * FROM orders WHERE customer_id = 123;`

சரி: `SELECT order_id, order_date, order_total FROM orders WHERE customer_id = 123;`

`WHERE` உட்பிரிவை திறம்படப் பயன்படுத்தவும்

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

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

முன்னணி வைல்ட் கார்டுகளுடன் `LIKE` ஐத் தவிர்க்கவும்

`LIKE '%pattern%'` ஐப் பயன்படுத்துவது தரவுத்தளம் ஒரு குறியீட்டைப் பயன்படுத்துவதைத் தடுக்கிறது. முடிந்தால், `LIKE 'pattern%'` ஐப் பயன்படுத்தவும் அல்லது முழு-உரை தேடல் திறன்களைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளவும்.

தவறு: `SELECT * FROM products WHERE product_name LIKE '%widget%';`

சரி: `SELECT * FROM products WHERE product_name LIKE 'widget%';` (பொருத்தமானால்) அல்லது முழு-உரை குறியீட்டைப் பயன்படுத்தவும்.

`COUNT(*)` க்குப் பதிலாக `EXISTS` ஐப் பயன்படுத்தவும்

வரிசைகளின் இருப்பைச் சரிபார்க்கும் போது, `EXISTS` பொதுவாக `COUNT(*)` ஐ விட திறமையானது. `EXISTS` ஒரு பொருத்தம் கிடைத்தவுடன் தேடுவதை நிறுத்துகிறது, அதே நேரத்தில் `COUNT(*)` எல்லா பொருத்தமான வரிசைகளையும் எண்ணுகிறது.

தவறு: `SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM orders WHERE customer_id = 123;`

சரி: `SELECT CASE WHEN EXISTS (SELECT 1 FROM orders WHERE customer_id = 123) THEN 1 ELSE 0 END;`

`UNION` க்குப் பதிலாக `UNION ALL` ஐப் பயன்படுத்தவும் (பொருத்தமானால்)

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

தவறு: `SELECT city FROM customers WHERE country = 'USA' UNION SELECT city FROM suppliers WHERE country = 'USA';`

சரி: `SELECT city FROM customers WHERE country = 'USA' UNION ALL SELECT city FROM suppliers WHERE country = 'USA';` (வாடிக்கையாளர்கள் மற்றும் சப்ளையர்கள் இடையே நகரங்கள் வேறுபட்டிருந்தால்)

துணை வினவல்களுக்கு எதிராக இணைப்புகள்

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

எடுத்துக்காட்டு:

துணை வினவல்: `SELECT * FROM orders WHERE customer_id IN (SELECT customer_id FROM customers WHERE country = 'Germany');`

இணைப்பு: `SELECT o.* FROM orders o JOIN customers c ON o.customer_id = c.customer_id WHERE c.country = 'Germany';`

3. தரவுத்தள வடிவமைப்பு பரிசீலனைகள்

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

இயல்பாக்கம்

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

தரவு வகைகள்

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

எடுத்துக்காட்டு: ஒரு நெடுவரிசையில் உள்ள மதிப்புகள் `INT` இன் வரம்பை ஒருபோதும் தாண்டாது என்றால் `BIGINT` க்குப் பதிலாக `INT` ஐப் பயன்படுத்தவும்.

பிரிவினை

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

எடுத்துக்காட்டு: குறிப்பிட்ட தேதி வரம்புகளில் அறிக்கை செய்வதற்கான வினவல் செயல்திறனை மேம்படுத்த, `order_date`-ஆல் `orders` அட்டவணையைப் பிரிக்கவும்.

4. இணைப்பு பூலிங்

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

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

5. கேச்சிங் உத்திகள்

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

பிரபலமான கேச்சிங் தீர்வுகள் Redis, Memcached மற்றும் தரவுத்தள-குறிப்பிட்ட கேச்சிங் வழிமுறைகளை உள்ளடக்கியது.

6. வன்பொருள் பரிசீலனைகள்

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

7. கண்காணிப்பு மற்றும் ட்யூனிங்

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

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

குறிப்பிட்ட தரவுத்தள அமைப்பு பரிசீலனைகள்

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

MySQL

PostgreSQL

SQL சர்வர்

Oracle

உலகளாவிய தரவுத்தள பரிசீலனைகள்

பல புவியியல் பிராந்தியங்களில் பரவியுள்ள தரவுத்தளங்களில் பணிபுரியும் போது, ​​பின்வருவனவற்றைக் கவனியுங்கள்:

முடிவுரை

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