ינואר 27, 2026מדריכים
כיצד לייעל את ביצועי 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 (השתמש ב-70-80% מה-RAM הזמין)
innodb_buffer_pool_size = 2G
# גודל קובץ יומן InnoDB
innodb_log_file_size = 512M
# שיטת שטיפה InnoDB (עבור SSD)
innodb_flush_method = O_DIRECT
# חוטי קלט/פלט InnoDB
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 במקום תת-שאילתות כאשר אפשר
- השתמש ב-UNION במקום OR לתנאים מרובים כאשר מתאים
ניטור ביצועי 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 מעודכן לגרסה היציבה האחרונה
- עקוב אחר קלט/פלט דיסק ושקול שימוש באחסון SSD/NVMe
- השתמש ב-EXPLAIN ANALYZE (MySQL 8.0+) לניתוח מפורט של שאילתות