Înapoi

Optimizarea bazelor de date

Folosim serverele MariaDB care este o evolutie foarte buna a serverelor MySQL, si nu schimba nimic in ceea ce priveste compatibilitatea bazelor de date MySQL cu MariaDB. Cu MariaDB, este sugerat să convertiți tabelele MyISAM în noul format Aria, deoarece acesta oferă o rezistență mai bună la crash și puțin mai multă viteză. Convertirea în innoDB este a doua opțiune.

Conversia tabelelor este o sarcină foarte primară a optimizării bazei de date, optimizarea reală constă în a avea indici în baza de date, iar acest lucru este greu de accesat în CMS existent, dar accesibil pentru modulele terțe pe care le-ați achiziționat (sugerați furnizorul să-și optimizeze modulul). Pentru site-urile personalizate, doar un specialist în baze de date sau un webmaster foarte experimentat poate face această muncă dificilă din punct de vedere tehnic... De asemenea, consultați tutorialele online specializate.

Înainte de a converti, încercați funcțiile lui phpmyadmin în această ordine selectând toate tabelele dintr-o bază de date: verificați tabelul, reparați tabelul, optimizați tabelul...

Prima idee este să identificați tabelele mari într-o bază de date, în dimensiunea MB, dar și pe cele care conțin o mulțime de rânduri: sortați tabelele din phpmyadmin ale dvs. cpanel pentru a le identifica.

Dacă dimensiunea sa este justificată, adică nu pentru jurnale/cache sau similare, caz în care acestea trebuie scurse în mod regulat.

Dacă niciunul dintre cazuri nu se referă la baza dvs. de date și problema persistă, atunci problema vine probabil din designul bazei de date sau din unele tabele legate de pluginuri, sau că nici codul dvs. PHP nu este bun...

 

Cum se convertesc tabelele MyISAM în Aria sau InnoDB?

Pentru a converti /ex toate MyISAM existente în InnoDB. Din phpmyadmin, faceți clic stânga pe baza de date, apoi faceți clic pe SQL în partea de sus... Lipiți mai jos, apoi „Run”

SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;') 

FROM INFORMATION_SCHEMA.TABLES

WHERE ENGINE='MyISAM'

 

Rezultatul afișat implicit cu texte scurte, trebuie așadar să mergeți mai sus în „+ Opțiuni”, să faceți clic pe „Texte complete” și să obțineți acest lucru în acest exemplu:

ALTER TABLE ps_carrier ENGINE=InnoDB;

ALTER TABLE ps_expressmailing ENGINE=InnoDB;

ALTER TABLE ps_expressmailing_email ENGINE=InnoDB;

ALTER TABLE ps_expressmailing_email_accountdates ENGINE=InnoDB;

ALTER TABLE ps_expressmailing_email_birthdays ENGINE=InnoDB;

ALTER TABLE ps_expressmailing_email_buyingdates ENGINE=InnoDB;

ALTER TABLE ps_expressmailing_email_categories ENGINE=InnoDB;

ALTER TABLE ps_expressmailing_email_civilities ENGINE=InnoDB;

Acum faceți o copie a setului de mai sus și inserați-l în SQL, apoi Executați și conversia este gata!

 

Recomandat și prioritar:

Dacă sunteți sub MariaDB ca și cu YOORshop, vă sugerăm să convertiți tabelele MyISAM ale unei baze de date în ARIA (acest format este anti-crash și mai eficient):

SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=ARIA;') 

FROM INFORMATION_SCHEMA.TABLES

WHERE ENGINE='MyISAM'

 

Pentru a converti tabelele InnoDB dintr-o bază de date în ARIA:

SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=ARIA;') 

FROM INFORMATION_SCHEMA.TABLES

WHERE ENGINE='InnoDB'

 

Pentru a converti tabele ARIA dintr-o bază de date în InnoDB:

SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;') 

FROM INFORMATION_SCHEMA.TABLES

WHERE ENGINE='ARIA'

 

Pentru Prestashop /ex, dacă baza de date este mare fără niciun motiv, cum ar fi un catalog important, atunci puteți face „gol”, aceste tabele prestashop pot fi golite fără nicio problemă, consultați butonul „gol”:

ps_connections

ps_connections_page

ps_connections_source

ps_guest (acesta este legat de modulul de statistici și va fi completat din nou dacă nu dezactivați modulul)

ps_pagenotfound

ps_page_viewed

ps_referrer_cache

ps_date_range

ps_search_index + ps_search_word + ps_statssearch trebuie efectuate în același timp, apoi reconstruiți indexul de căutare în prestashop

Alte tabele legate sau nu de module și stocarea cache-ului fără a-l goli vreodată pot fi golite, consultați editorul. 

 

NB:

Pentru a migra la un alt server mysql, trebuie să convertiți tabelul aria înapoi în innodb sau myslam

 

Export, opțiuni:

debifați AUTO_INCREMENT

Editați baza de date cu notepad+ și eliminați peste tot TRANSACTIONAL=1

Importați baza de date, nu ar trebui să existe erori... (formatul MYSQL 40 poate ajuta)