ब्लॉग पर वापस जाएं
जनवरी 27, 2026गाइड

MySQL प्रदर्शन को कैसे अनुकूलित करें

MySQL डेटाबेस प्रदर्शन को अनुकूलित करने पर पूर्ण गाइड: कॉन्फ़िगरेशन ट्यूनिंग, क्वेरी अनुकूलन, इंडेक्सिंग और निगरानी।

MySQL प्रदर्शन को कैसे अनुकूलित करें

MySQL प्रदर्शन अनुकूलन बड़ी मात्रा में डेटा या उच्च ट्रैफ़िक को संभालने वाले अनुप्रयोगों के लिए महत्वपूर्ण है। यह गाइड कॉन्फ़िगरेशन ट्यूनिंग से लेकर क्वेरी अनुकूलन तक MySQL प्रदर्शन में सुधार के लिए आवश्यक तकनीकों को कवर करता है।

MySQL कॉन्फ़िगरेशन अनुकूलित करना

अपने सर्वर संसाधनों के आधार पर प्रदर्शन को अनुकूलित करने के लिए MySQL कॉन्फ़िगरेशन फ़ाइल संपादित करें:

bash
# MySQL कॉन्फ़िगरेशन संपादित करें (Ubuntu/Debian)
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

# MySQL कॉन्फ़िगरेशन संपादित करें (CentOS/RHEL)
sudo nano /etc/my.cnf

# इन सेटिंग्स को जोड़ें या संशोधित करें:
[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
max_connections = 200
query_cache_size = 64M
query_cache_type = 1
tmp_table_size = 64M
max_heap_table_size = 64M

# MySQL पुनरारंभ करें
sudo systemctl restart mysql  # Ubuntu/Debian
sudo systemctl restart mysqld   # CentOS/RHEL

InnoDB अनुकूलन

InnoDB MySQL का डिफ़ॉल्ट स्टोरेज इंजन है। बेहतर प्रदर्शन के लिए इसे अनुकूलित करें:

bash
# /etc/mysql/mysql.conf.d/mysqld.cnf या /etc/my.cnf में
[mysqld]
# InnoDB बफ़र पूल (उपलब्ध RAM का 70-80% उपयोग करें)
innodb_buffer_pool_size = 2G

# InnoDB लॉग फ़ाइल आकार
innodb_log_file_size = 512M

# InnoDB फ्लश विधि (SSD के लिए)
innodb_flush_method = O_DIRECT

# InnoDB I/O थ्रेड
innodb_read_io_threads = 4
innodb_write_io_threads = 4

# लेनदेन प्रतिबद्धता पर InnoDB फ्लश लॉग
innodb_flush_log_at_trx_commit = 2

क्वेरी कैश कॉन्फ़िगरेशन

क्वेरी कैश पढ़ने-भारी वर्कलोड के लिए प्रदर्शन में सुधार कर सकता है (नोट: MySQL 8.0 में क्वेरी कैश अप्रचलित है):

bash
# MySQL 5.7 और पहले के लिए
[mysqld]
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 2M

# क्वेरी कैश स्थिति जांचें
mysql> SHOW VARIABLES LIKE 'query_cache%';

# क्वेरी कैश आंकड़े जांचें
mysql> SHOW STATUS LIKE 'Qcache%';

इंडेक्स अनुकूलन

क्वेरी प्रदर्शन के लिए उचित इंडेक्सिंग महत्वपूर्ण है:

bash
# इंडेक्स आंकड़े अपडेट करने के लिए टेबल का विश्लेषण करें
ANALYZE TABLE table_name;

# अप्रयुक्त इंडेक्स जांचें
SELECT * FROM sys.schema_unused_indexes;

# इंडेक्स बनाएं
CREATE INDEX idx_column ON table_name(column_name);

# समग्र इंडेक्स बनाएं
CREATE INDEX idx_multi ON table_name(col1, col2, col3);

# इंडेक्स दिखाएं
SHOW INDEXES FROM table_name;

# अप्रयुक्त इंडेक्स हटाएं
DROP INDEX idx_name ON table_name;

क्वेरी अनुकूलन

बेहतर प्रदर्शन के लिए अपनी SQL क्वेरीज़ को अनुकूलित करें:

  • क्वेरी निष्पादन योजनाओं का विश्लेषण करने के लिए EXPLAIN का उपयोग करें: EXPLAIN SELECT * FROM table WHERE column = 'value'
  • SELECT * से बचें - केवल आवश्यक कॉलम चुनें
  • परिणाम सेट को सीमित करने के लिए LIMIT का उपयोग करें
  • इंडेक्स किए गए कॉलम के साथ उचित WHERE क्लॉज़ का उपयोग करें
  • WHERE क्लॉज़ में फ़ंक्शन से बचें (उदाहरण के लिए, WHERE YEAR(date) = 2026 → WHERE date >= '2026-01-01')
  • जब संभव हो तो सबक्वेरीज़ के बजाय JOIN का उपयोग करें
  • जब उपयुक्त हो तो कई शर्तों के लिए OR के बजाय UNION का उपयोग करें

MySQL प्रदर्शन निगरानी

bash
# MySQL स्थिति जांचें
mysql> SHOW STATUS;

# धीमी क्वेरीज़ जांचें
mysql> SHOW VARIABLES LIKE 'slow_query%';

# धीमी क्वेरी लॉग सक्षम करें
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;

# प्रक्रिया सूची जांचें
mysql> SHOW PROCESSLIST;

# टेबल स्थिति जांचें
mysql> SHOW TABLE STATUS LIKE 'table_name';

# InnoDB स्थिति जांचें
mysql> SHOW ENGINE INNODB STATUS;

प्रदर्शन अनुकूलन सुझाव

  • टेबल को डीफ़्रैगमेंट करने के लिए नियमित रूप से OPTIMIZE TABLE चलाएं
  • धीमी क्वेरी लॉग की निगरानी करें और धीमी क्वेरीज़ को अनुकूलित करें
  • कनेक्शन ओवरहेड को कम करने के लिए कनेक्शन पूलिंग का उपयोग करें
  • बेहतर प्रदर्शन के लिए बड़ी टेबल को तारीख या रेंज द्वारा विभाजित करें
  • पढ़ने-भारी वर्कलोड के लिए रीड रेप्लिका का उपयोग करें
  • MySQL को नवीनतम स्थिर संस्करण पर अपडेट रखें
  • डिस्क I/O की निगरानी करें और SSD/NVMe स्टोरेज का उपयोग करने पर विचार करें
  • विस्तृत क्वेरी विश्लेषण के लिए EXPLAIN ANALYZE (MySQL 8.0+) का उपयोग करें