БпСстСтС 15% ΠΎΡ‚ всички хостинг услуги

ВСствай умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠžΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄: Skills Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ
Заглавия
Администрация Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ

MySQL Π’Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° оптимизация Π½Π° заявки: Пълно Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ Π·Π° ΠΏΠΎ-Π±ΡŠΡ€Π·Π° производитСлност Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ уСбсайтовС ΠΈ ΡƒΠ΅Π± прилоТСния зависят ΠΎΡ‚ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ всякога. НСзависимо Π΄Π°Π»ΠΈ управляватС малък Π±Π»ΠΎΠ³ ΠΈΠ»ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π·Π° Π΅Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Π° Ρ‚ΡŠΡ€Π³ΠΎΠ²ΠΈΡ с висок Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, MySQL остава Π΅Π΄Π½Π° ΠΎΡ‚ Π½Π°ΠΉ-ΡˆΠΈΡ€ΠΎΠΊΠΎ разпространСнитС Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π² свСта β€” ΠΈ ΠΏΠΎ Π΄ΠΎΠ±Ρ€Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°. Π’ΠΎΠ²Π° Π΅ ΠΌΠΎΡ‰Π½ΠΎ, гъвкаво ΠΈ Π±ΠΎΠ΅Π²ΠΎΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ. Но ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π²Π°ΡˆΠΈΡΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ сС Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°, слабо ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΈ заявки ΠΌΠΎΠ³Π°Ρ‚ ΠΌΡŠΠ»Ρ‡Π°Π»ΠΈΠ²ΠΎ Π΄Π° ΡƒΠ½ΠΈΡ‰ΠΎΠΆΠ°Ρ‚ производитСлността, Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Ρ‚ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΈ Π΄Π° Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΡƒΠ²Π°Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ с Π±Π°Π²Π½ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π½Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅.

Π’ Ρ‚ΠΎΠ·ΠΈ всСобхватСн Π½Π°Ρ€ΡŠΡ‡Π½ΠΈΠΊ Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ ΠΏΡ€Π΅Π· Π΄ΠΎΠΊΠ°Π·Π°Π½ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° оптимизация Π½Π° MySQL заявки, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΡ‚ ΠΎΠΏΠΈΡ‚Π½ΠΈ администратори Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ DevOps ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈ. НСзависимо Π΄Π°Π»ΠΈ управляватС срСда Π½Π° VPS Hosting, високопроизводитСлСн Dedicated Server, ΠΈΠ»ΠΈ сподСлСна срСда, Ρ‚Π΅Π·ΠΈ стратСгии Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚ Π΄Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Ρ‚Π΅ максимална производитСлност ΠΎΡ‚ Π²Π°ΡˆΠ°Ρ‚Π° MySQL конфигурация.

Π—Π°Ρ‰ΠΎ оптимизацията Π½Π° MySQL заявки Π΅ Π²Π°ΠΆΠ½Π°

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° сС ΠΏΠΎΡ‚ΠΎΠΏΠΈΠΌ Π² Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈΡ‚Π΅, си струва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Π½Π° ΠΊΠ°Ρ€Ρ‚Π°. Π•Π΄Π½Π° Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° заявка Π²ΡŠΡ€Ρ…Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π° с ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π°:

  • ΠšΠΎΠ½ΡΡƒΠΌΠΈΡ€Π° ΠΏΡ€Π΅ΠΊΠΎΠΌΠ΅Ρ€Π½ΠΈ CPU ΠΈ ΠΏΠ°ΠΌΠ΅Ρ‚ рСсурси
  • Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π° Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ
  • ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΈ каскадни забавяния ΠΏΠΎ цялото Π²ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
  • Π£Π²Π΅Π»ΠΈΡ‡ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° инфраструктура, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ сС Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Ρ‚Π΅ Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ, Π·Π° Π΄Π° компСнсиратС

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡΡ‚Π° Π½Π° заявки Π½Π΅ Π΅ Π΅Π΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Π° Π·Π°Π΄Π°Ρ‡Π° β€” Ρ‚ΠΎΠ²Π° Π΅ постоянна дисциплина, която Π΄Π°Π²Π° ΡΡŠΡΡ‚Π°Π²Π½ΠΈ Π΄ΠΈΠ²ΠΈΠ΄Π΅Π½Ρ‚ΠΈ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π²Π°ΡˆΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ растат.

1. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ индСкситС Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ

Π˜Π½Π΄Π΅ΠΊΡΠΈΡ‚Π΅ са бСзспорно Π½Π°ΠΉ-мощният инструмСнт Π² вашия арсСнал Π·Π° оптимизация Π½Π° MySQL. Π‘Π΅Π· тях, MySQL ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° пълно сканиранС Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° β€” ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π΅ Π½Π° всСки Ρ€Π΅Π΄ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° β€” Π·Π° Π½Π°ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ΠΈ записи. На Π³ΠΎΠ»Π΅ΠΌΠΈ Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ, Ρ‚ΠΎΠ²Π° Π΅ катастрофално Π±Π°Π²Π½ΠΎ.

Как работят индСкситС

Π˜Π½Π΄Π΅ΠΊΡΡŠΡ‚ създава ΠΎΡ‚Π΄Π΅Π»Π½Π° структура ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ B-Π΄ΡŠΡ€Π²ΠΎ), ΠΊΠΎΠ΅Ρ‚ΠΎ MySQL ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° Π² Π»ΠΎΠ³Π°Ρ€ΠΈΡ‚ΠΌΠΈΡ‡Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ вмСсто Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ Π²Ρ€Π΅ΠΌΠ΅. ΠœΠΈΡΠ»Π΅Ρ‚Π΅ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°Ρ‚ΠΎ Π·Π° индСкса Π² края Π½Π° ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ: вмСсто Π΄Π° Ρ‡Π΅Ρ‚Π΅Ρ‚Π΅ всяка страница Π·Π° Π½Π°ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Π΅ΠΌΠ°, ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π½Π°Ρ‚Π° страница.

Най-Π΄ΠΎΠ±Ρ€ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π·Π° индСксиранС

  • Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² WHERE, JOIN ΠΈ ORDER BY ΠΊΠ»Π°ΡƒΠ·ΡƒΠ»ΠΈ β€” Ρ‚ΠΎΠ²Π° са Π½Π°ΠΉ-чСсто срСщанитС ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° заявки, ΠΊΠΎΠΈΡ‚ΠΎ сС Π²ΡŠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΡ‚ индСкситС
  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½ΠΈ индСкси Π·Π° заявки, ΠΊΠΎΠΈΡ‚ΠΎ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ‚ ΠΏΠΎ мноТСство ΠΊΠΎΠ»ΠΎΠ½ΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ
  • Π˜Π·Π±ΡΠ³Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅ΠΊΠΎΠΌΠ΅Ρ€Π½ΠΎΡ‚ΠΎ индСксиранС β€” всСки индСкс добавя Ρ€Π΅ΠΆΠΈΠΉΠ½ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ към INSERT, UPDATE ΠΈ DELETE ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ MySQL трябва Π΄Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° индСкса Π·Π°Π΅Π΄Π½ΠΎ с Π΄Π°Π½Π½ΠΈΡ‚Π΅
  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΊΡ€ΠΈΠ²Π°Ρ‰ΠΈ индСкси, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΅ възмоТно β€” индСкс, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° всички ΠΊΠΎΠ»ΠΎΠ½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ заявката Π½ΡƒΠΆΠ΄Π°Π΅, Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π° нСобходимостта Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ дСйствитСлнитС Ρ€Π΅Π΄ΠΎΠ²Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: БъздаванС Π½Π° индСкс с Π΅Π΄Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π°

CREATE INDEX idx_email ON users (email);

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: БъздаванС Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π΅Π½ индСкс

CREATE INDEX idx_status_created ON orders (status, created_at);

Π’ΠΎΠ·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π΅Π½ индСкс Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ обслуТва заявки ΠΊΠ°Ρ‚ΠΎ:

SELECT * FROM orders WHERE status = 'pending' ORDER BY created_at DESC;

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ индСкси

SHOW INDEX FROM users;

ΠŸΡ€Π°Π²ΠΈΠ»Π½ΠΎΡ‚ΠΎ индСксиранС само ΠΏΠΎ сСбС си ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π½Π° заявката ΠΎΡ‚ сСкунди Π΄ΠΎ милисСкунди Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ.

2. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ Π²Π°ΡˆΠΈΡ‚Π΅ SELECT изявлСния

Π•Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°ΠΉ-чСститС ΠΈ Π²Ρ€Π΅Π΄Π½ΠΈ Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΈ Π² SQL Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° SELECT *. ИзглСТда ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π½ΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠΆΠ΄Π°Π²Π° MySQL Π΄Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ всяка ΠΊΠΎΠ»ΠΎΠ½Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° β€” Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ TEXT ΠΈΠ»ΠΈ BLOB ΠΏΠΎΠ»Π΅Ρ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ са Π²ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ β€” ΠΈ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Ρ Π½Π΅Π½ΡƒΠΆΠ½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΏΡ€Π΅Π· ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ Π½Π° оптимизацията

  • Π˜Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ само ΠΊΠΎΠ»ΠΎΠ½ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ наистина Π²ΠΈ трябват β€” Ρ‚ΠΎΠ²Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ LIMIT Π·Π° Ρ€Π°Π·Π±ΠΈΠ²Π°Π½Π΅ Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ Π½Π° страници β€” Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ Π²Ρ€ΡŠΡ‰Π°ΠΉΡ‚Π΅ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π²ΠΈ трябва само подмноТСство
  • ΠŸΡ€ΠΈΠ»Π°Π³Π°ΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Π°Π³Ρ€Π΅Π³ΠΈΡ€Π°Π½Π΅ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ β€” COUNT(), SUM() ΠΈ AVG() са Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ, Π½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ с нСиндСксирани ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС скъпо
  • Π˜Π·Π±ΡΠ³Π²Π°ΠΉΡ‚Π΅ DISTINCT освСн Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ β€” добавя ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΈ, която ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС скъпа ΠΏΡ€ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ

ΠŸΡ€Π΅Π΄ΠΈ оптимизацията

SELECT * FROM users WHERE status = 'active';

Π‘Π»Π΅Π΄ оптимизацията

SELECT user_id, name, email FROM users WHERE status = 'active' LIMIT 100;

Π’Π°Π·ΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ΄Π½ΠΎ ΠΌΠ°Π»ΠΊΠ° промяна ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° изпълнСниС Π½Π° заявката Π΄Ρ€Π°ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ, особСно ΠΏΡ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ с дСсСтки ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΈΠ»ΠΈ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅.

3. АнализирайтС заявки с EXPLAIN ΠΈ EXPLAIN ANALYZE

Π˜Π·ΡΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ EXPLAIN Π΅ Π²Π°ΡˆΠΈΡΡ‚ Π½Π°ΠΉ-ΠΌΠΎΡ‰Π΅Π½ диагностичСн инструмСнт. Π’ΠΎΠΉ Ρ€Π°Π·ΠΊΡ€ΠΈΠ²Π° ΠΏΠ»Π°Π½Π° Π·Π° изпълнСниС Π½Π° заявката Π½Π° MySQL β€” Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° стратСгия, която MySQL ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ β€” Π±Π΅Π· дСйствитСлно Π΄Π° изпълнява заявката.

Какво ви казва EXPLAIN

КолонаКакво ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°
typeΠ’ΠΈΠΏ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ β€” ALL ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° пълно сканиранС Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° (лошо); ref ΠΈΠ»ΠΈ eq_ref Π΅ Π΄ΠΎΠ±Ρ€ΠΎ
keyКой индСкс използва MySQL (или NULL ако няма)
rowsΠŸΡ€ΠΎΠ³Π½ΠΎΠ·Π΅Π½ Π±Ρ€ΠΎΠΉ Ρ€Π΅Π΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ MySQL Ρ‰Π΅ ΠΏΡ€Π΅Π³Π»Π΅Π΄Π°
ExtraΠ”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° информация β€” Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°ΠΉΡ‚Π΅ Π·Π° Using filesort ΠΈΠ»ΠΈ Using temporary

ОсновСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° EXPLAIN

EXPLAIN SELECT address FROM employees WHERE status = 'active';

EXPLAIN ANALYZE (MySQL 8.0+)

EXPLAIN ANALYZE SELECT address FROM employees WHERE status = 'active';

EXPLAIN ANALYZE дСйствитСлно изпълнява заявката ΠΈ Π²Ρ€ΡŠΡ‰Π° Ρ€Π΅Π°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π°Ρ€Π΅Π΄ с прогнозния ΠΏΠ»Π°Π½ Π·Π° изпълнСниС β€” Π±Π΅Π·Ρ†Π΅Π½Π½ΠΎ Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ²Π° къдС дСйствитСлно сС Ρ…Π°Ρ€Ρ‡ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ.

Π§Π΅Ρ€Π²Π΅Π½ΠΈ Ρ„Π»Π°Π³ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Ρ‚Π΅

  • type: ALL β€” пълно сканиранС Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° Π½Π° голяма Ρ‚Π°Π±Π»ΠΈΡ†Π°
  • key: NULL β€” Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° индСкс
  • Extra: Using filesort β€” MySQL сортира Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ Π½Π° диска вмСсто Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° индСкс
  • Extra: Using temporary β€” MySQL създава Π²Ρ€Π΅ΠΌΠ΅Π½Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΈΠ½Ρ‚Π΅Π½Π·ΠΈΠ²Π½ΠΎ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ CPU

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅ Ρ‚Π΅Π·ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚Π΅Π»Π½ΠΈ Π·Π½Π°Ρ†ΠΈ, Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ индСкси, Π΄Π° ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ заявката ΠΈΠ»ΠΈ Π΄Π° прСструктуриратС Π²Π°ΡˆΠ°Ρ‚Π° схСма.

4. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° JOIN ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

JOINs са ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ΠΈ Π·Π° Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Π½ΠΎ Ρ‚Π΅ ΡΡŠΡ‰ΠΎ са чСсто срСщан ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с производитСлността. НСоптимизиран JOIN ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²Π΅ Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π° Π΄ΠΎ колапс.

Най-Π΄ΠΎΠ±Ρ€ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° JOIN

  • Π’ΠΈΠ½Π°Π³ΠΈ индСксирайтС ΠΊΠΎΠ»ΠΎΠ½ΠΈΡ‚Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² JOIN условия β€” Ρ‚ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-Π²Π°ΠΆΠ½Π°Ρ‚Π° оптимизация Π½Π° JOIN
  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ INNER JOIN ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° само ΠΎΡ‚ ΡΡŠΠ²ΠΏΠ°Π΄Π°Ρ‰ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ β€” Ρ‚ΠΎΠ²Π° Π΅ ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΎΡ‚ LEFT JOIN ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π΅ сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅ ΠΎΡ‚ NULL-попълнСни Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ
  • Π€ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ€Π°Π½ΠΎ с WHERE ΠΊΠ»Π°ΡƒΠ·ΡƒΠ»ΠΈ β€” Π½Π°ΠΌΠ°Π»Π΅Ρ‚Π΅ броя Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅, участващи Π² join, възмоТно Π½Π°ΠΉ-Ρ€Π°Π½ΠΎ
  • ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ€Π΅Π΄Π° Π½Π° join β€” ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° заявки Π½Π° MySQL ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС справя с Ρ‚ΠΎΠ²Π°, Π½ΠΎ Π² слоТни заявки, ΠΏΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΈ Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΏΡŠΡ€Π²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ производитСлността

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° JOIN

SELECT c.name, o.order_date, o.total_amount
FROM customers c
INNER JOIN orders o ON c.id = o.customer_id
WHERE c.country = 'Germany'
  AND o.status = 'completed'
ORDER BY o.order_date DESC
LIMIT 50;

Π’ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • И Π΄Π²Π°Ρ‚Π° c.id ΠΈ o.customer_id трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ индСксирани (Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ Π½Π° Ρ‡ΡƒΠΆΠ΄ΠΈ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ сС справят с Ρ‚ΠΎΠ²Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π² InnoDB)
  • c.country ΠΈ o.status сС Π²ΡŠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΡ‚ индСкси
  • LIMIT 50 прСдотвратява Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ

Π˜Π·Π±ΡΠ³Π²Π°ΠΉΡ‚Π΅ нСявни JOINs

Π‘Ρ‚Π°Ρ€ΠΎΠΌΠΎΠ΄Π½ΠΈΡ‚Π΅ join-ΠΎΠ²Π΅, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈ със Π·Π°ΠΏΠ΅Ρ‚Π°ΠΈ, са ΠΏΠΎ-Ρ‚Ρ€ΡƒΠ΄Π½ΠΈ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅:

-- Avoid this
SELECT * FROM customers, orders WHERE customers.id = orders.customer_id;

-- Prefer this
SELECT * FROM customers INNER JOIN orders ON customers.id = orders.customer_id;

5. ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΎΠ±Π΅ΠΌΠ° Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ

ОсвСн оптимизацията Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ заявки, намаляванСто Π½Π° количСството Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ MySQL трябва Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π΅ стратСгия с висок Π΅Ρ„Π΅ΠΊΡ‚.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ

  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ WHERE Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ агрСсивно β€” всСки Ρ€Π΅Π΄, ΠΊΠΎΠΉΡ‚ΠΎ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ‚Π΅, Π΅ Ρ€Π΅Π΄, ΠΊΠΎΠΉΡ‚ΠΎ MySQL Π½Π΅ трябва Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°, сортира ΠΈΠ»ΠΈ Π²Ρ€ΡŠΡ‰Π°
  • Π˜Π·Π±ΡΠ³Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΡ€Π΅Π»ΠΈΡ€Π°Π½ΠΈ подзаявки β€” Ρ‚Π΅ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ вСднъТ Π·Π° всСки Ρ€Π΅Π΄ във Π²ΡŠΠ½ΡˆΠ½Π°Ρ‚Π° заявка ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ катастрофално Π±Π°Π²Π½ΠΈ; ΠΏΡ€Π΅Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π³ΠΈ ΠΊΠ°Ρ‚ΠΎ JOINs, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΅ възмоТно
  • Π’Π½Π΅Π΄Ρ€Π΅Ρ‚Π΅ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β€” инструмСнти ΠΊΠ°Ρ‚ΠΎ Redis ΠΈΠ»ΠΈ Memcached ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° обслуТват чСсто Π΄ΠΎΡΡ‚ΡŠΠΏΠ²Π°Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π±Π΅Π· Π΄Π° удрят Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ
  • Π Π°Π·Π΄Π΅Π»Π΅Ρ‚Π΅ Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ β€” функцията Π·Π° раздСлянС Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Π½Π° MySQL позволява заявкитС Π΄Π° сканират само ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ Ρ€Π°Π·Π΄Π΅Π», вмСсто цялата Ρ‚Π°Π±Π»ΠΈΡ†Π°
  • АрхивирайтС стари Π΄Π°Π½Π½ΠΈ β€” прСмСстванСто Π½Π° историчСски записи Π² Π°Ρ€Ρ…ΠΈΠ²Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ стройни ΠΈ Π±ΡŠΡ€Π·ΠΈ

ΠšΠΎΡ€Π΅Π»ΠΈΡ€Π°Π½Π° подзаявка (Π˜Π·Π±ΡΠ³Π²Π°ΠΉΡ‚Π΅)

SELECT name FROM employees e
WHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id);

ΠŸΡ€Π΅Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΊΠ°Ρ‚ΠΎ JOIN (ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ΠΎ)

SELECT e.name
FROM employees e
INNER JOIN (
    SELECT department_id, AVG(salary) AS avg_salary
    FROM employees
    GROUP BY department_id
) dept_avg ON e.department_id = dept_avg.department_id
WHERE e.salary > dept_avg.avg_salary;

ВСрсията с JOIN изчислява срСднитС стойности Π½Π° ΠΎΡ‚Π΄Π΅Π»Π° вСднъТ, вмСсто вСднъТ Π·Π° всСки Ρ€Π΅Π΄ Π½Π° слуТитСл.

6. Π€ΠΈΠ½Π° настройка Π½Π° конфигурацията Π½Π° MySQL ΡΠ΅Ρ€Π²ΡŠΡ€Π°

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡΡ‚Π° Π½Π° Π½ΠΈΠ²ΠΎ заявки Π΅ само ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°Ρ‚Π° ΠΎΡ‚ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° конфигурацията Π½Π° MySQL ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΈΠΌΠ°Ρ‚ дълбоко влияниС Π²ΡŠΡ€Ρ…Ρƒ производитСлността, Π° настройкитС ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ са ΡƒΠΌΠΈΡˆΠ»Π΅Π½ΠΎ консСрвативни β€” ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ΠΈ Π΄Π° работят Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€, Π° Π½Π΅ Π΄Π° максимизират пропускатСлната способност.

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° конфигурацията

innodb_buffer_pool_size

Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ваТният ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π½Π° конфигурацията Π½Π° InnoDB. Π’ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° ΠΊΠΎΠ»ΠΊΠΎ RAM MySQL ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈ индСкси Π² ΠΏΠ°ΠΌΠ΅Ρ‚. ЧСтСнията ΠΎΡ‚ RAM са с ΠΏΠΎΡ€ΡΠ΄ΡŠΡ†ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΈ ΠΎΡ‚ чСтСнията ΠΎΡ‚ диск.

ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠ°: Π—Π°Π΄Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ²Π° Π½Π° 50–70% ΠΎΡ‚ ΠΎΠ±Ρ‰ΠΎ Π½Π°Π»ΠΈΡ‡Π½Π° RAM Π½Π° спСциализиран ΡΡŠΡ€Π²ΡŠΡ€ Π·Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.

innodb_buffer_pool_size = 4G  # For an 8GB RAM server

innodb_log_file_size

По-Π³ΠΎΠ»Π΅ΠΌΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° подобряват производитСлността ΠΏΡ€ΠΈ запис, ΠΊΠ°Ρ‚ΠΎ позволяват ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½ΠΈ ΠΏΡ€Π΅Π΄ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° диск.

innodb_log_file_size = 512M

query_cache_size (MySQL 5.x)

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠšΠ΅ΡˆΡŠΡ‚ Π½Π° заявкитС Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ Π² MySQL 8.0 ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ със мащабируСмостта. Ако стС Π½Π° MySQL 5.7, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π³ΠΎ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ β€” ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ натоварвания с ΠΌΠ½ΠΎΠ³ΠΎ чСтСния, Π½ΠΎ сС ΠΏΡ€Π΅Π²Ρ€ΡŠΡ‰Π° Π² тСсно място ΠΏΡ€ΠΈ високи натоварвания ΠΏΡ€ΠΈ запис.

max_connections

Π—Π°Π΄Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ²Π° въз основа Π½Π° конфигурацията Π½Π° Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Π²ΡŠΡ€Π΄Π΅ високо ΠΈ рискуватС ΠΈΠ·Ρ‚ΠΎΡ‰Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚; Ρ‚Π²ΡŠΡ€Π΄Π΅ ниско ΠΈ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ β€žΡ‚Π²ΡŠΡ€Π΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅β€.

max_connections = 200

slow_query_log

АктивирайтС Ρ‚ΠΎΠ²Π°, Π·Π° Π΄Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ рСгистриратС заявки, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°Π΄Π²ΠΈΡˆΠ°Π²Π°Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΡ€Π°Π³ Π½Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС β€” ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ инструмСнт Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ†Π΅Π»ΠΈΡ‚Π΅ Π·Π° оптимизация Π² производство.

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1  # Log queries taking longer than 1 second

ΠšΡŠΠ΄Π΅Ρ‚ΠΎ Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚Π΅ Ρ‚Π΅Π·ΠΈ настройки

Π’Π΅Π·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚ във вашия Ρ„Π°ΠΉΠ» Π½Π° конфигурацията Π½Π° MySQL, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π½Π° /etc/mysql/my.cnf ΠΈΠ»ΠΈ /etc/my.cnf. Π‘Π»Π΅Π΄ Π½Π°ΠΏΡ€Π°Π²Π°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, рСстартирайтС услугата MySQL:

sudo systemctl restart mysql

Ако управляватС собствСното си ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΎ ΠΎΠΊΡ€ΡŠΠΆΠ΅Π½ΠΈΠ΅, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° пълСн root Π΄ΠΎΡΡ‚ΡŠΠΏ β€” ΠΊΠ°ΠΊΡ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ с Dedicated Server β€” Π²ΠΈ Π΄Π°Π²Π° пълСн ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π°Π΄ Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° систСмно Π½ΠΈΠ²ΠΎ.

7. Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Π½Π°ΠΏΡ€Π΅Π΄Π½Π°Π»ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° оптимизация

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ изявлСния

ΠŸΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈΡ‚Π΅ изявлСния позволяват Π½Π° MySQL Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° заявка вСднъТ, Π° слСд Ρ‚ΠΎΠ²Π° Π΄Π° я изпълни ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ. Π’ΠΎΠ²Π° намалява Ρ€Π΅ΠΆΠΈΠΉΠ½ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ Π·Π° Π°Π½Π°Π»ΠΈΠ· ΠΈ ΡΡŠΡ‰ΠΎ Π·Π°Ρ‰ΠΈΡ‚Π°Π²Π° срСщу SQL injection.

PREPARE stmt FROM 'SELECT name, email FROM users WHERE id = ?';
SET @id = 42;
EXECUTE stmt USING @id;

НормализирайтС Π²Π°ΡˆΠ°Ρ‚Π° схСма β€” Π½ΠΎ Π·Π½Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ³Π° Π΄Π° Π΄Π΅Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅

НормализиранСто Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π° ΠΈΠ·Π»ΠΈΡˆΡŠΡ‡Π½ΠΎΡΡ‚Ρ‚Π° ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ‚Π΅Ρ‚Π° Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, силно Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ схСми ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° изискват слоТни ΠΌΠ½ΠΎΠ³ΠΎΡ‚Π°Π±Π»ΠΈΡ‡Π½ΠΈ JOINs Π·Π° ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΈ заявки. Π’ прилоТСния с ΠΈΠ½Ρ‚Π΅Π½Π·ΠΈΠ²Π½ΠΎ Ρ‡Π΅Ρ‚Π΅Π½Π΅, стратСгичСското Π΄Π΅Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ β€” ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° излишни Π΄Π°Π½Π½ΠΈ, Π·Π° Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π°Ρ‚ скъпи JOINs β€” ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π²Π°Π»ΠΈΠ΄Π΅Π½ компромис Π·Π° производитСлност.

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ COUNT(1) ΠΈΠ»ΠΈ COUNT(column) вмСсто COUNT(*)

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡΡ‚ MySQL ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π° COUNT(*) Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π·Π° InnoDB, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° COUNT(1) ΠΈΠ»ΠΈ Π±Ρ€ΠΎΠ΅Π½Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° индСксирана ΠΊΠΎΠ»ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΌΠ°Ρ€Π³ΠΈΠ½Π°Π»Π½ΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ Π² някои сцСнарии ΠΈ ΠΏΠΎ-ясно ΡΡŠΠΎΠ±Ρ‰Π°Π²Π° Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ.

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ€Π°ΠΉΡ‚Π΅ с Performance Schema

Π’Π³Ρ€Π°Π΄Π΅Π½Π°Ρ‚Π° Performance Schema Π½Π° MySQL осигурява Π΄Π΅Ρ‚Π°ΠΉΠ»Π½Π° видимост Π² ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° заявки, события Π½Π° Ρ‡Π°ΠΊΠ°Π½Π΅ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° рСсурси β€” ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄Π΅Ρ‚Π°ΠΉΠ»Π½Π° ΠΎΡ‚ самия slow query log.

SELECT * FROM performance_schema.events_statements_summary_by_digest
ORDER BY sum_timer_wait DESC
LIMIT 10;

Π˜Π·Π±ΠΎΡ€ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π½Π°Ρ‚Π° хостинг срСда Π·Π° производитСлност Π½Π° MySQL

Π’Π°ΡˆΠΈΡ‚Π΅ усилия Π·Π° оптимизация са Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ инфраструктурата ΠΏΠΎΠ΄ тях. ΠŸΡƒΡΠΊΠ°Π½Π΅Ρ‚ΠΎ Π½Π° силно Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π΅Π½Π° MySQL Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π½Π° слабо Π·Π°Ρ…Ρ€Π°Π½Π²Π°Π½Π° сподСлСна хостинг Π΅ ΠΊΠ°Ρ‚ΠΎ настройка Π½Π° Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» Π½Π° ΡΡŠΡΡ‚Π΅Π·Π°Ρ‚Π΅Π»Π΅Π½ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ» ΠΈ слСд Ρ‚ΠΎΠ²Π° поставянС Π½Π° ΠΏΡ€Π΅Π²ΠΎΠ·Π½ΠΎΡ‚ΠΎ срСдство с спукани Π³ΡƒΠΌΠΈ.

Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ хостинг срСди влияят Π½Π° производитСлността Π½Π° MySQL:

  • Π‘ΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΡƒΠ΅Π± хостинг β€” ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰Π° Π·Π° ΠΌΠ°Π»ΠΊΠΈ уСбсайтовС ΠΈ прилоТСния с нисък Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. MySQL рСсурситС сС сподСлят с Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π° Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Π½Π° Π½ΠΈΠ²ΠΎ ΡΡŠΡ€Π²ΡŠΡ€.
  • VPS хостинг β€” Π˜Π΄Π΅Π°Π»Π½ΠΈΡΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π·Π° растящи прилоТСния. ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ посвСщСни рСсурси, root Π΄ΠΎΡΡ‚ΡŠΠΏ Π·Π° настройка Π½Π° MySQL конфигурация ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° инсталиратС пСрсонализирани MySQL вСрсии ΠΈ приставки. Π—Π° Π΅ΠΊΠΈΠΏΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅Π½ интСрфСйс Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, VPS с cPanel ΠΏΡ€Π°Π²ΠΈ администриранСто Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎ.
  • ΠŸΠΎΡΠ²Π΅Ρ‚Π΅Π½ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ β€” Π—Π° прилоТСния с висок Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, посвСтСният ΡΡŠΡ€Π²ΡŠΡ€ Π²ΠΈ Π΄Π°Π²Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ всички Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ рСсурси, максимална пропускливост Π½Π° I/O ΠΈ пълна свобода Π΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ MySQL Π½Π° всяко Π½ΠΈΠ²ΠΎ.

Π˜Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° правилния инфраструктурСн слой Π΅ основно Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ опрСдСля Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π° Π½Π° производитСлността Π½Π° вашия MySQL, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ²Π° ΠΊΠΎΠ»ΠΊΠΎ Π΄ΠΎΠ±Ρ€Π΅ са написани Π²Π°ΡˆΠΈΡ‚Π΅ заявки.

MySQL Query Optimization Checklist

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ списък ΠΊΠ°Ρ‚ΠΎ Π±ΡŠΡ€Π·Π° справка ΠΏΡ€ΠΈ ΠΎΠ΄ΠΈΡ‚ Π½Π° производитСлността Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ:

  • [ ] Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€Π°Π½ΠΈ Π»ΠΈ са чСсто заявяванитС ΠΊΠΎΠ»ΠΎΠ½ΠΈ?
  • [ ] Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π»ΠΈ сС ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½ΠΈ индСкси Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ с мноТСство ΠΊΠΎΠ»ΠΎΠ½ΠΈ?
  • [ ] Π—Π°ΠΌΠ΅Π½Π΅Π½ΠΈ Π»ΠΈ са SELECT * изявлСния със спСцифични ΡΠΏΠΈΡΡŠΡ†ΠΈ Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈ?
  • [ ] Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈ Π»ΠΈ са Π½Π°Π±ΠΎΡ€ΠΈΡ‚Π΅ ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ Π½Π° страници с LIMIT?
  • [ ] Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΈ Π»ΠΈ са Π±Π°Π²Π½ΠΈ заявки с Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° Π½Π° Π±Π°Π²Π½ΠΈ заявки?
  • [ ] Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Π½ Π»ΠΈ Π΅ EXPLAIN Π½Π° всички ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ заявки?
  • [ ] Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€Π°Π½ΠΈ Π»ΠΈ са ΠΊΠΎΠ»ΠΎΠ½ΠΈΡ‚Π΅ Π½Π° JOIN?
  • [ ] УстановСн Π»ΠΈ Π΅ innodb_buffer_pool_size Π½Π° 50–70% ΠΎΡ‚ наличния RAM?
  • [ ] Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ Π»ΠΈ Π΅ Π΄Π½Π΅Π²Π½ΠΈΠΊΡŠΡ‚ Π½Π° Π±Π°Π²Π½ΠΈ заявки Π² production?
  • [ ] ΠŸΡ€Π΅ΠΏΠΈΡΠ°Π½ΠΈ Π»ΠΈ са ΠΊΠΎΡ€Π΅Π»ΠΈΡ€Π°Π½ΠΈ подзаявки ΠΊΠ°Ρ‚ΠΎ JOINs, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΅ възмоТно?

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡΡ‚Π° Π½Π° MySQL заявки Π½Π΅ Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” Ρ‚ΠΎΠ²Π° Π΅ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Π° дисциплина, която сС Ρ€Π°Π·Π²ΠΈΠ²Π° Π·Π°Π΅Π΄Π½ΠΎ с Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π°Π½Π½ΠΈ. Π’Π΅Ρ…Π½ΠΈΠΊΠΈΡ‚Π΅, описани Π² Ρ‚ΠΎΠ²Π° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ β€” стратСгичСско индСксиранС, сСлСктивни SELECT изявлСния, EXPLAIN-управлявана Π°Π½Π°Π»ΠΈΠ· Π½Π° заявки, Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ JOIN ΠΌΠΎΠ΄Π΅Π»ΠΈ, намаляванС Π½Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΈ настройка Π½Π° Π½ΠΈΠ²ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ β€” ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‚ всСобхватна Ρ€Π°ΠΌΠΊΠ° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅ Π½Π° високопроизводитСлни срСди Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.

ΠšΡƒΠΌΡƒΠ»Π°Ρ‚ΠΈΠ²Π½ΠΈΡΡ‚ Π΅Ρ„Π΅ΠΊΡ‚ Π½Π° Ρ‚Π΅Π·ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π΅Π½: ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° страницитС, ΠΏΠΎ-ΠΎΡ‚Π·ΠΈΠ²Ρ‡ΠΈΠ²ΠΈ прилоТСния, ΠΏΠΎ-ниски Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ Π·Π° инфраструктура ΠΈ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΎ изТивяванС Π·Π° всСки ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», ΠΊΠΎΠΉΡ‚ΠΎ взаимодСйства с Π²Π°ΡˆΠ°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°.

НСзависимо Π΄Π°Π»ΠΈ Ρ‚Π΅ΠΏΡŠΡ€Π²Π° Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚Π΅ Π½Π° Shared Web Hosting ΠΈΠ»ΠΈ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Ρ‚Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Dedicated Server, инвСстиранСто Π½Π° Π²Ρ€Π΅ΠΌΠ΅ Π² оптимизация Π½Π° MySQL Π΅ Π΅Π΄Π½Π° ΠΎΡ‚ дСйноститС с Π½Π°ΠΉ-висок ROI, Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π·Π° всСки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΠ»ΠΈ систСмСн администратор. Π—Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ с Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° Π½Π° Π±Π°Π²Π½ΠΈΡ‚Π΅ заявки, ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π· вашия EXPLAIN Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΈ Ρ€Π°Π·Π²ΠΈΠΉΡ‚Π΅ Π½Π°Π²ΠΈΠΊΠ° Π΄Π° ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ SQL ΠΎΡ‚ самото Π½Π°Ρ‡Π°Π»ΠΎ β€” Π²Π°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ, Π²Π°ΡˆΠΈΡΡ‚ ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ Π²Π°ΡˆΠ°Ρ‚Π° смСтка Π·Π° инфраструктура Ρ‰Π΅ Π²ΠΈ благодарят.