Cum ne curatam baza de date ?

Friday, 08 July, Year 3 d.Tr. | Author: Mircea Popescu

Problema e destul de simplu de explicat : sa zicem ca adaugam 50 de articole de cite 2-3-5 MB bucata in wordpress. Ca asa avem noi chef.

Cum wordpress obisnuieste sa salveze "revizii" ale articolelor, vom avea fiecare chestie salvata si de cite 2-3-5 ori, vorba ceea, sa fie. Nu-i ca si cum resursele sunt limitate pe lumea asta. Moment in care, luind asa estimativ niste medii, 3 Mb x 3 exemplare x 50 bucati = 450 MB.

Problem ? Pai depinde. Precum probabil ati observat serverele mele n-au ciriit, Trilema servindu-se in continuare fara mari probleme. Apropo de care chestie :

polimedia_trafic

Mnoa, lasind la o parte ca "serveru' mediu" nu-i capabil sa sustina GBps ore in sir (ati vazut ce lejer livra pagini, apropo ? tucu-le tati pe ele de mumoase si daastepte), ramine problema ca daca incerci sa rulezi un shared cu juma' de giga-n mysql ai bune sanse sa n-ai nici o sansa.

Ce-i de facut ?

Una dintre solutii ar fi sa curatati baza de date de "revisions", acele versiuni mai vechi ale articolelor publicate, salvate ca sa fie. Chestia asta se realizeaza destul de simplu, din PhpMyAdmin. Introduceti in cutiuta de-i zice SQL urmatoarea dispozitie :

DELETE a,b,c FROM prefix_posts a
LEFT JOIN prefix_term_relationships b ON ( a.ID = b.object_id)
LEFT JOIN prefix_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN prefix_term_taxonomy d ON ( b.term_taxonomy_id = d.term_taxonomy_id)
WHERE a.post_type = 'revision' AND d.taxonomy != 'link_category';

inlocuind bineinteles "prefix_" cu prefixul folosit de instalarea dvs. (in general, "wp_").

Ce face chestia asta ? Pai, sterge toate articolele care-s revizii, precum si toate mentiunile referitoare la ele (si numai la ele) din alte tabele in care wordpress isi tine matele.

Dupa care

polimedia_mysql

Pai ca din tabela cu articole am scapat de 100Mb, adica aproximativ jumatate, si din tabela cu taxonomie de inca vreo suta sau asa de kb, diverse rahaturi si mizerii. Moment la care dam un "select all tables with overhead" si apoi "with selection optimize table". Chestia asta prinde bine din cind in cind oricum, e un fel de defrag pentru mysql, sa zicem asa.

Inainte de-a sari careva expert cu intrebari ca de ce-am scris chestia asta, ca cum imi permit io sa scriu chestii la mine pe blog si-asa mai departe, precizez c-am scris-o ca sa nu mai trebuiasca sa compun query-ul data viitoare cind am nevoie de el, ci sa-l iau pur si simplu cu copy/paste. Ceea ce va doresc si dumneavoastra.

Category: 3 ani experienta
Comments feed : RSS 2.0. Leave your own comment below, or send a trackback.

28 Responses

  1. Ai curatat toata luna iulie, adica nu mai apar posturile aici http://trilema.com/2011/7/

  2. Ah, de fapt, ai curatat tot :)

  3. Mircea Popescu`s avatar
    3
    Mircea Popescu 
    Friday, 8 July 2011

    Adica ?

  4. Mircea Popescu`s avatar
    4
    Mircea Popescu 
    Friday, 8 July 2011

    Aia moare in chinuri, mi-o atras atentia inca x persoane, e in proces de reparare. N-are legatura cu chestia asta, are legatura cu faptu' ca am prea multe articole si le sortez ineficient in archive.php

  5. si daca scoti reviziile, unde punem baia? pai baia-i baie, nu incape in calorifer.

    o molid frumos, o molid frumos.

  6. Mircea Popescu`s avatar
    6
    Mircea Popescu 
    Friday, 8 July 2011

    Hahahaha.

    Molift, buei.

  7. Pey mah, arhiva aia este modul in care iti folosesc luserii site-ul, ca daca dai click altundeva iti ia credite.

  8. da' explica domle ce-i cu left join-ul ala sa inteleaga tot omu'...

  9. Mircea Popescu`s avatar
    9
    Mircea Popescu 
    Friday, 8 July 2011

    @gheorghe Stai buei c-o dreg acuma. E facuta *TEMBEL* de catre automattic, in sensu' ca orice cerere catre arhiva aduce din mysql tot continutul tuturor articolelor. Si cum eu in luna iunie am jdemega continut, moare scriptu' ca-si intrece limita de memorie.

    M-am apucat sa rescriu chestia sa lucreze corect, va fi gata mintenas si public si rezultatele, bine ?

    @f Pai join e o comparatie de indecsi, practic asta-i marele avantaj al unui sistem sql, ca-ti permite sa faci din doua (sau oricite tabele) una singura. Vezi aici de ex.

    Pe scurt spus, identifica in alte tabele elementele corespondente unui set de elemente alese dintr-o tabela anumita, si le da omoru'.

  10. Critic`s avatar
    10
    Critic 
    Friday, 8 July 2011

    cît iti cantareste tot blogul?

  11. lulwut, de ce ar aduce conţinutul articolelor dacă tu afişezi doar titles fără excerpts?

  12. Mircea Popescu`s avatar
    12
    Mircea Popescu 
    Friday, 8 July 2011

    @Critic Acum in jur de 120mb, precum vezi.

    @dAImon Pentru ca-i gindit cu curu', si pentru ca 4kb ar trebui sa fie suficienti pentru oricine, si asa mai departe. Cica code is poetry da-le-as gauri in chip...

    Intre timp l-am reparat, archive.php functioneaza din nou. Si cu un drum am mai redus consumul de energie electrica al civilizatiei umane cu niste kw acolo.

  13. bun da asta face un plugin gen wp_optimise de ani buni ..tu nu ti-ai facut timp de 3 ani curatenie in baza de date si descoperi acum ca-i util ?

  14. Mircea Popescu`s avatar
    14
    Mircea Popescu 
    Friday, 8 July 2011

    Eu nu folosesc pluginuri, si sunt lenes. Moar questions ?

  15. Mircea Popescu`s avatar
    15
    Mircea Popescu 
    Friday, 8 July 2011

    Mnoa, arhivele dupa luni si dupa categorii fura reparate. Traiasca!

  16. arhiva pe ani nu
    http://polimedia.us/dtng/c/src/131016304128.jpg

    sau asta-i de aia not a bug but a feature?

  17. Mircea Popescu`s avatar
    17
    Mircea Popescu 
    Saturday, 9 July 2011

    Sincer acuma nu cred ca are sens/utilitate arhiva pe ani. La ce sa te uiti la o mie de de-astea, cu ce-ti ajuta ?

  18. cautare in-page dupa titlu in loc sa dau pe google, spre exemplu.

    poti gasi motive daca te apuci sa cauti.

  19. Mircea Popescu`s avatar
    19
    Mircea Popescu 
    Saturday, 9 July 2011

    Hm. Mbine, hai sa zic ca implementez, doara ce ma costa ?

  20. Mircea Popescu`s avatar
    20
    Mircea Popescu 
    Saturday, 9 July 2011

    Done.

  21. Critic`s avatar
    21
    Critic 
    Saturday, 9 July 2011

    si unde e?

  22. Mircea Popescu`s avatar
    22
    Mircea Popescu 
    Saturday, 9 July 2011

    Not for newfagz.

  23. Critic`s avatar
    23
    Critic 
    Saturday, 9 July 2011

    eu intelesesem o casuta de search pe aici pe undeva,imi scapa ceva? cache?

  24. Mircea Popescu`s avatar
    24
    Mircea Popescu 
    Saturday, 9 July 2011

    http://trilema.com/2009/cautare-pe-blog/
    Semneaza de luare la cunostiinta.

  25. Critic`s avatar
    25
    Critic 
    Saturday, 9 July 2011

    gtfo

  1. [...] Cum ne curatam baza de date ? [...]

  2. [...] Nu-i prima data cind is deosebit de idioti, de altfel. Sa reamintim numa' faza precedenta de-o imbecilitate sideranta, descoperita tot asa, la un moment de [...]

  3. [...] nu-s capabili sa scrie cod nu ca la nivel de poezie, da' macar la nivel de proza asa... medie, de absolvent recent de calculatoare nu ma mira. Pina la [...]

Add your cents! »
    If this is your first comment, it will wait to be approved. This usually takes a few hours. Subsequent comments are not delayed.