Mbinu za Uboreshaji za MySQL: Ongeza Utendaji na Kasi

Bainisha sehemu zinazohitajika katika SELECT hoja

Badala ya kuchagua sehemu zote kwenye SELECT hoja, chagua sehemu zinazohitajika tu ili kupunguza mzigo na kuboresha kasi ya hoja.

Kwa mfano, ikiwa unajali tu jina na anwani ya mteja, badilisha hoja:

SELECT * FROM customers;

na

SELECT name, address FROM customers;

 

Unda faharasa

Index kusaidia MySQL kutafuta na kurejesha data kwa haraka. Tambua sehemu ambazo hutumiwa mara kwa mara katika WHERE, JOIN, au ORDER BY vifungu na uunde faharasa kwa ajili yao.

Kwa mfano, katika orders jedwali " ", ikiwa customer_id sehemu "" inatumika mara kwa mara katika WHERE au JOIN hoja, unaweza kuunda faharasa kama ifuatavyo:

CREATE INDEX idx_customer_id ON orders(customer_id);

 

Tumia aina zinazofaa za faharasa

MySQL hutoa aina mbalimbali za faharasa kama vile B-tree, heshi, na full-text. Chagua aina inayofaa ya faharasa kulingana na mahitaji ya hoja yako ili kuhakikisha utendakazi bora.

Kwa mfano, ikiwa unahitaji kutafuta maandishi ndani ya uga wa data, unaweza kuunda faharasa full-text kama ifuatavyo:

CREATE FULLTEXT INDEX idx_description ON products(description);

 

Boresha hoja

Tumia EXPLAIN kutazama mpango wa utekelezaji wa hoja na kuchanganua jinsi MySQL inavyotekelezwa. Hii hukusaidia kutambua matatizo ya utendaji na kuboresha hoja kwa kutumia faharasa au kuandika upya hoja.

Kwa mfano, ili kuona mpango wa swala SELECT, endesha amri ifuatayo:

EXPLAIN SELECT * FROM orders WHERE customer_id = 123;

 

Weka kikomo idadi ya matokeo yaliyorejeshwa

Hoja inaporudisha idadi kubwa ya matokeo, punguza idadi ya matokeo yaliyorejeshwa kwa kutumia LIMIT kifungu. Hii husaidia kupunguza mzigo na kuboresha kasi ya hoja.

Kwa mfano, ili kurudisha matokeo 10 pekee kutoka kwa jedwali la "bidhaa", unaweza kutumia hoja ifuatayo:

SELECT * FROM products LIMIT 10;

 

Tumia INNER JOIN badala ya JOIN

INNER JOIN hufanya vizuri zaidi kuliko kawaida JOIN. Tumia INNER JOIN wakati unajali tu rekodi ambazo zina mechi katika jedwali zote mbili.

Kwa mfano, kujiunga na majedwali " orders " na " customers " kulingana na customer_id sehemu "", unaweza kutumia swali lifuatalo:

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

 

Tumia meza za muda kwa uangalifu

Majedwali ya muda yanaweza kutumika katika hali fulani, lakini yanahitaji kutumiwa kwa uangalifu kwani yanaweza kupunguza kasi ya maswali. Zingatia kuboresha hoja ili kuepuka kutumia majedwali ya muda ikiwezekana.

Kwa mfano, badala ya kutumia jedwali la muda katika swali lifuatalo:

CREATE TEMPORARY TABLE temp_table SELECT * FROM products;

unaweza kujaribu kuboresha hoja ili kuuliza data moja kwa moja kutoka kwa jedwali asili.

 

Sanidi usanidi wa MySQL

Fikiria kusanidi upya MySQL ili kutumia vyema rasilimali za mfumo na kuoanisha mahitaji ya programu yako. Hii ni pamoja na kusanidi kumbukumbu, saizi za bafa, vikomo vya muunganisho, na vigezo vingine. Rejelea hati za MySQL na ujifunze jinsi ya kurekebisha usanidi ili kuendana na mazingira yako mahususi.

 

Futa data isiyo ya lazima

Futa data isiyo ya lazima au uhifadhi nakala ya data ya zamani ili kupunguza ukubwa wa hifadhidata na kuboresha kasi ya hoja.

Kwa mfano, ikiwa una logs jedwali "" la kuhifadhi kumbukumbu za kumbukumbu za zamani, unaweza kufuta rekodi za zaidi ya mwaka mmoja kwa kutumia swali lifuatalo:

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

 

Tumia kumbukumbu cache

Sanidi kumbukumbu ya MySQL cache ili kuhifadhi hoja zinazotekelezwa mara kwa mara na data iliyofikiwa hivi majuzi. Hii husaidia kupunguza muda wa kufikia diski na kuboresha kasi ya hoja.

Kwa mfano, ili kusanidi akiba ya kumbukumbu yenye ukubwa wa 1GB, unaweza kurekebisha faili ya usanidi ya MySQL ya "my.cnf" kama ifuatavyo:

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

 

Tafadhali kumbuka kuwa mifano iliyo hapo juu ni ya kielelezo na inahitaji kurekebishwa kulingana na muundo na mahitaji ya hifadhidata yako halisi. Jaribu kwa uangalifu na utathmini ufanisi kabla na baada ya kutumia mbinu hizi za uboreshaji ili kuhakikisha kuwa zinafaa kwa mazingira yako mahususi.