„MySQL“ optimizavimo būdai: padidinkite našumą ir greitį

SELECT Užklausose nurodykite būtinus laukus

Užuot pasirinkę visus užklausos laukus SELECT, pasirinkite tik būtinus laukus, kad sumažintumėte apkrovą ir pagerintumėte užklausos greitį.

Pavyzdžiui, jei jums rūpi tik kliento vardas ir adresas, pakeiskite užklausą:

SELECT * FROM customers;

su

SELECT name, address FROM customers;

 

Sukurti indeksus

Index padėti MySQL greičiau ieškoti ir gauti duomenų. Nustatykite laukus, kurie dažnai naudojami WHERE, JOIN, arba ORDER BY sąlygose, ir sukurkite jiems indeksus.

Pavyzdžiui, lentelėje „ orders “, jei „ customer_id “ laukas dažnai naudojamas WHERE arba JOIN užklausose, indeksą galite sukurti taip:

CREATE INDEX idx_customer_id ON orders(customer_id);

 

Naudokite atitinkamų tipų indeksus

MySQL pateikia įvairių tipų indeksus, tokius kaip B-tree, maiša ir full-text. Pasirinkite tinkamą indekso tipą pagal užklausos reikalavimus, kad užtikrintumėte optimalų našumą.

Pavyzdžiui, jei reikia ieškoti teksto duomenų lauke, indeksą galite sukurti full-text taip:

CREATE FULLTEXT INDEX idx_description ON products(description);

 

Optimizuokite užklausas

Naudokite EXPLAIN norėdami peržiūrėti užklausos vykdymo planą ir analizuoti, kaip MySQL jis veikia. Tai padeda nustatyti našumo problemas ir optimizuoti užklausas naudojant indeksus arba perrašant užklausas.

Pavyzdžiui, norėdami pamatyti užklausos užklausos planą SELECT, paleiskite šią komandą:

EXPLAIN SELECT * FROM orders WHERE customer_id = 123;

 

Apribokite grąžinamų rezultatų skaičių

Kai užklausa pateikia daug rezultatų, apribokite pateiktų rezultatų skaičių naudodami sąlygą LIMIT. Tai padeda sumažinti apkrovą ir pagerinti užklausos greitį.

Pavyzdžiui, norėdami pateikti tik 10 rezultatų iš lentelės „produktai“, galite naudoti šią užklausą:

SELECT * FROM products LIMIT 10;

 

Naudokite INNER JOIN vietoj JOIN

INNER JOIN veikia geriau nei įprastai JOIN. Naudokite INNER JOIN, kai rūpinatės tik įrašais, kurie atitinka abiejose lentelėse.

Pavyzdžiui, norėdami sujungti lenteles " orders " ir " customers " pagal customer_id lauką " ", galite naudoti šią užklausą:

SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;

 

Laikinąsias lenteles naudokite atsargiai

Tam tikrais atvejais galima naudoti laikinąsias lenteles, tačiau jas reikia naudoti atsargiai, nes jos gali sulėtinti užklausas. Apsvarstykite galimybę optimizuoti užklausas, kad nenaudotumėte laikinų lentelių, jei įmanoma.

Pavyzdžiui, užuot naudoję laikiną lentelę šioje užklausoje:

CREATE TEMPORARY TABLE temp_table SELECT * FROM products;

galite pabandyti optimizuoti užklausą, kad būtų galima tiesiogiai užklausti duomenis iš pradinės lentelės.

 

Tiksliai sureguliuokite MySQL konfigūraciją

Apsvarstykite galimybę iš naujo sukonfigūruoti MySQL, kad maksimaliai išnaudotumėte sistemos išteklius ir atitiktumėte programos reikalavimus. Tai apima atminties, buferio dydžių, ryšio apribojimų ir kitų parametrų konfigūravimą. Peržiūrėkite MySQL dokumentaciją ir sužinokite, kaip pritaikyti konfigūraciją, kad ji atitiktų jūsų konkrečią aplinką.

 

Ištrinkite nereikalingus duomenis

Ištrinkite nereikalingus duomenis arba sukurkite atsargines senų duomenų kopijas, kad sumažintumėte duomenų bazės dydį ir pagerintumėte užklausos greitį.

Pavyzdžiui, jei turite lentelę, logs kurioje saugomi seni žurnalo įrašai, galite ištrinti senesnius nei metų įrašus naudodami šią užklausą:

DELETE FROM logs WHERE created_at < '2022-01-01';

 

Naudokite atmintį cache

Sukonfigūruokite MySQL atmintį cache, kad būtų saugomos dažnai vykdomos užklausos ir neseniai pasiekti duomenys. Tai padeda sumažinti prieigos prie disko laiką ir pagerinti užklausos greitį.

Pavyzdžiui, norėdami sukonfigūruoti 1 GB talpyklos talpyklą, galite modifikuoti MySQL „my.cnf“ konfigūracijos failą taip:

[mysqld]  
...  
query_cache_type = 1  
query_cache_size = 1G  

 

Atkreipkite dėmesį, kad pirmiau pateikti pavyzdžiai yra iliustratyvūs ir turi būti atitinkamai pakoreguoti pagal faktinės duomenų bazės struktūrą ir reikalavimus. Atidžiai išbandykite ir įvertinkite efektyvumą prieš ir po šių optimizavimo metodų pritaikymo, kad įsitikintumėte, jog jie tinka jūsų konkrečiai aplinkai.