MySQL databáze nad 500 MB

Jaroslav

MySQL databáze nad 500 MB
« kdy: 12. 06. 2014, 22:16:50 »
Ahoj,
udelal jsem ti takovej jednoduchej php script pro ukladani PNG do DB jenomze, ted mi databaze s obrazky zabere asi 500 Mb a casto se mi stava ze php se proste "zasekne" a data z DB mi nezobrazi (misto toho mam jenom bilou stranku). Uloziste v DB je zvoleno INODB. Obrazky se ukladaji pomoci base64...
Muze prosim nekdo poradit?

« Poslední změna: 12. 06. 2014, 22:51:10 od Petr Krčmář »


Zopper

  • *****
  • 665
    • Zobrazit profil
Re:MYSQL data > 500 Mb
« Odpověď #1 kdy: 12. 06. 2014, 22:22:15 »
Neukládat obrázky do DB, ale jako soubory, a v DB mít jen meta informace? Jako klíč/jméno může posloužit třeba hash toho obrázku. To pořeší i duplicity (pokud to budou totožné soubory, ne jen podobné obrázky).

Jaroslav

Re:MYSQL data > 500 Mb
« Odpověď #2 kdy: 12. 06. 2014, 22:24:41 »
Pozde prave ... ja uz tam ma naukladano hromadu obrazku ... jenomze nemuzu prijit na to proc pri generovani PDF nedostanu soubor, ale jenom prazdnou stranku. Driv jak tam bylo malo obrazku, tak to slo ... ale ted je s tim problem, tak nevim jestli staci jenom zmenit promenou v php, kvuli nejake odezve nebo tak neco

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:MYSQL data > 500 Mb
« Odpověď #3 kdy: 12. 06. 2014, 22:29:29 »
Pozde prave ... ja uz tam ma naukladano hromadu obrazku ... jenomze nemuzu prijit na to proc pri generovani PDF nedostanu soubor, ale jenom prazdnou stranku.

Začal bych tím, že si zjistím, co je to za chybu. To znamená nastavit si php na dev mód aby ti vypisoval všechny chyby i noticky. Podobně tak i MySQL (což mimochodem hodně štěstí). A podle té chyby zjistíš, jak dál.

Ukládat obrázky do databáze není vysloveně blbej nápad, ačkoliv má svá úskalí.

Co bych zvážil, je to ukládání pomocí base64. To mi přijde jako dosti plítvání místem, a nevidím v tom přínos. Ale to už je mimo tvou otázku.

Jaroslav

Re:MYSQL data > 500 Mb
« Odpověď #4 kdy: 12. 06. 2014, 22:36:42 »
base64 se mi prave zdal driv jako vyhodny v jednoduchosti...
no budu se muset hrabat v logu apache ... ja jenom jestli s tim nema nekdo nejaky zkusennosti


Jaroslav

Re:MYSQL data > 500 Mb
« Odpověď #5 kdy: 12. 06. 2014, 22:38:31 »
Prave na generovani pdf pouzivam mpdf v php. Mam tlacitko nahled a tlacitko na generovani PDF. Pokud dam nahled tak ten obrazek dostanu v pohode. Jak dam to pdf, tak konec. Pokud ale v pdf necham jenom text a nenecham nacist obrazek, pak se pdf vygeneruje ...

David1234

Re:MYSQL data > 500 Mb
« Odpověď #6 kdy: 12. 06. 2014, 22:45:44 »

VojtaB

Re:MYSQL data > 500 Mb
« Odpověď #7 kdy: 12. 06. 2014, 22:48:29 »
Takže generuješ ty PDF pomocí mPDF nebo je bereš z DB?

Jestli generuješ, tak bych to viděl na time limit nebo spíš memory limit. mPDF je dost nenažranej na paměť.

Jaroslav

Re:MySQL databáze nad 500 MB
« Odpověď #8 kdy: 12. 06. 2014, 23:03:07 »
Tak max execution time sem dal na pet minut ... nahled se mi zobrazi do 7 vterin ... a stejne to freezne a zustane bila stranka ...
Memory limit na proces sem dal 300 Mb a stejne dostava v prohlizeci hlasu "cekani na server"

h7

Re:MySQL databáze nad 500 MB
« Odpověď #9 kdy: 12. 06. 2014, 23:22:49 »
Takto ti těžko někdo řekne, kde máš chybu, když nevidí do tvého kódu, tvé DB apod. Musíš zjistit více informací. Např.:
- povolit zobrazování chyb (error_reporting) a doufat, že se nějaká chyba zobrazí
- vrazit na určité místo nějaký výpis (echo apod.), pokud se to vypíše, tak se dané místo programu ještě vykonalo. Posouváním místa zjistíš, kam až to doběhne

Když tak píšeš o DB a množství dat, máš v DB nějaký rozumný index? Tedy nemusí to procházet celou tabulku (fullscan), aby to našelo příslušný řádek? Pokud si nejsi jist, použij EXPLAIN SELECT ...

Jaroslav

Re:MySQL databáze nad 500 MB
« Odpověď #10 kdy: 12. 06. 2014, 23:33:26 »
Zkusil jsem jeste premistit celou DB na jinej server, pac ten na kterym jede DB instance ma 256 Mb RAM a 866 Mhz cpu  :-\ ted je to na jinym zeleze a cely pdf dostanu do deseti vterin ...

Na to starem serveru vidim Hitrate permanetne 100% a na to novem je to v klidu a ani se to nehne ... ovsem nevim co si mam predstavit pod pojmem hitrate

Re:MySQL databáze nad 500 MB
« Odpověď #11 kdy: 13. 06. 2014, 07:40:48 »
90% to bude memory limit, 9% time limit.

Ovsem ptej se sam sebe jestli jsi spravny clovek na jakekoliv programovani kdyz pises nejdriv dotaz do fora misto abys projel apache log kde bys to nasel a uz davno mel vyresene.
Dale se zamysli nad tim jak se ptas, protoze na podobne hloupe napsane dotazy budes vzdy dostavat hloupe odpovedi.

500MB je prtava DB, tam problem vubec neni.
Děkuji za možnost editace příspěvku.

strepty

Re:MySQL databáze nad 500 MB
« Odpověď #12 kdy: 13. 06. 2014, 07:42:10 »
Zda sa ze je to uz vyriesene. Ale taketo nieco som riesil s PdfCreatorom na Windowse a Mssql, vyzeralo to tak ze pdf creator vyrabal pdf este v dobe ked nemal zdroj dat tak vyrobil prazdne pdf.  Moje riesenie bolo sice riadne ugly ale funfovalo, dal som do skriptu medzi nacitanie obrazka a spustenie pdf creatora pauzu 10 sekund. Ten cas treba zistit experimentalne.   

karel

Re:MySQL databáze nad 500 MB
« Odpověď #13 kdy: 13. 06. 2014, 08:10:21 »
Zkusil jsem jeste premistit celou DB na jinej server, pac ten na kterym jede DB instance ma 256 Mb RAM a 866 Mhz cpu  :-\ ted je to na jinym zeleze a cely pdf dostanu do deseti vterin ...

Na to starem serveru vidim Hitrate permanetne 100% a na to novem je to v klidu a ani se to nehne ... ovsem nevim co si mam predstavit pod pojmem hitrate

Ty si chlape opravdu "vostrej" na stroji s 256MB ram nastavis limit na php 300MB aby si pomohl k dokonceni skryptu, do toho mas minimalne v pulce ram narvanou mysql ktera cast te ram zaplni vysledkem s vyhledavani a na tvorbu pdf i pres tvoje nastaveni proste nezbyde misto, neco proste selhat musi. Samozrejme by se to dalo rozbehat i na teto konfiguraci, jen je nutne jajit presne uzke hrdlo.

e3k

Re:MySQL databáze nad 500 MB
« Odpověď #14 kdy: 13. 06. 2014, 08:27:58 »
ja by som pozrel SHOW VARIABLES LIKE 'max_allowed_packets';