Optimalizace DataGridu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Kenn
Člen | 110
+
0
-

Začal jsem používat DG na docela velké databázi (80k záznamů) a můžu říct, že je nehorázně pomalý. Dotaz se joinuje na tři tabulky a hlavně filtrování je hrozně pomalé. Na localhostu jsem třicetisekundové načítání nějak neřešil, ale na ostrém serveru je i několik sekund moc (a to bych řekl, že má hosting rychlé servery).

Teď jde o to, jestli si udělat vlastní filtrovací formulář bez použití DG, což by mohlo načítání zrychlit, nebo jestli někdo máte nějaké tipy, jak DG zoptimalizovat tak, aby fungoval minimálně 10× rychleji :)

Etch
Člen | 403
+
0
-

Doufám, že to nebude OT a zmiňování už třeba vyřešené věci, ale pokud vím tak DG používá pro dotazy DataSource. A DataSource býval dosti problém ve spojení s MySQL, protože ta měla nějaký bug, že se nepoužíval index na subselecty, ale jak říkám třeba sem úplně mimo a tento problém už se vyřešil.

Editoval Etch (27. 2. 2010 15:09)

Patrik Votoček
Člen | 2221
+
0
-

cca pře 2ma měsíci jsem se o to pokoušel a budu to zkoušet znova. Ale mohl by jsi zkusit vyprofilovat DataGrid kde presneji je to slabe misto?

Honza Kuchař
Člen | 1662
+
0
-

Na 99% je to DataSource. S MySQL se to dá vyřešit tak, že vytvoříte pohled (toho co bylo původně v subselectu). Potom DataSource vytváříte: $ds = Dibi::dataSource("nazevView");

Ola
Člen | 385
+
0
-

Bohužel, MySQL má onen problém s indexy stále (deb****).

Honza Kuchař
Člen | 1662
+
0
-

Přejdi na PgSQL a budeš happy (už jen kvůlu PgAdmin III). Zatím si opravdu nemůžu stěžovat.

Ondřej Mirtes
Člen | 1536
+
0
-

honza: Je nějaký tutoriál, co vše řeší Pg jinak (co se týče syntaxe a rozdílnosti chování) oproti MySQL? Pochybuju, že jen bude stačit přehodit driver dibi v configu :)

pekelnik
Člen | 462
+
0
-

honzakuchar napsal(a):

Přejdi na PgSQL a budeš happy (už jen kvůlu PgAdmin III). Zatím si opravdu nemůžu stěžovat.

Hehe – čekal jsem kdo to řekne první. Přechod je skutečně nejlepší volbou – obzvláště po nedávných událostech kolem Sunu.

pekelnik
Člen | 462
+
0
-

Ondřej Mirtes napsal(a):

honza: Je nějaký tutoriál, co vše řeší Pg jinak (co se týče syntaxe a rozdílnosti chování) oproti MySQL? Pochybuju, že jen bude stačit přehodit driver dibi v configu :)

asi nejmarkatnější rozdíl, který je třeba zažít je absence AUTO_INCREMENTu

postgres však obsahuje daleko mocnější nástroj a tím jsou SEQUENCE

my: CREATE TABLE foo ( id integer not null primary key auto_increment );
pg: CREATE TABLE foo ( id integer not null primary key default nextval('foo_id_seq') );

resp. použít pseudo-typ serial

pg: CREATE TABLE foo ( id serial not null primary key );

Editoval pekelnik (28. 2. 2010 13:47)

Honza Kuchař
Člen | 1662
+
0
-

Nerozepisoval bych tady jak přejít na PgSQL. Je to opravdu dost offtopic. Ale když už jsi to nakousl, tak sem přihodím odkaz na tutoriál, ze kterého jsem se s PgSQL naučil já. http://www.linuxsoft.cz/…cle_list.php?…

Honza Kuchař
Člen | 1662
+
0
-

Ondřej Mirtes napsal(a):

honza: Je nějaký tutoriál, co vše řeší Pg jinak (co se týče syntaxe a rozdílnosti chování) oproti MySQL? Pochybuju, že jen bude stačit přehodit driver dibi v configu :)

Pokud si vytvoříš stejně strukturu tabulek (to se dělá skoro stejně), tak opravdu stačí přehodit driver. (taky mě to překvapilo) Ale dibi má s PgSQL trochu problémy. Konkrétně s používáním polí (naštěstí jsem zatím nepotřeboval) a s přetypováváním. (PgSQL totiž nedovolí srovnat např.: datum a string. Vyhodí chybu. Proto se musí napsat něco ve stylu WHERE "mojeDatum"::STRING LIKE '%99', no a protože pro toho dibi nemá podporu, tak je to problém, naštěstí řešitelný, nicméně pak už app není přenositelná na jinou db)

https://forum.dibiphp.com/…iewtopic.php?…

Editoval honzakuchar (28. 2. 2010 14:04)

Kenn
Člen | 110
+
0
-

Evidentně dobře položený dotaz.

Vrtak: hmm naprofilovat, to bych s tím musel mít zkušenosti. Jisté je, že 95% času renderování zaberou SQL dotazy.

Přechod na PGSQL mě už napadl kdysi dávno. Odradila mě nefunkčnost na Windows (až taková, že jsem obnovoval ze zálohy) a programovat na linuxu jaksi nezvládám. Neodhodlal jsem se přeučit klávesové zkratky na speciální znaky i když to asi jednou budu muset podstoupit.

Vidím to tak, že si holt jedno odpoledne sednu a naprogramuju si tu filtraci sám, což by nemělo zabrat tolik času a jako bonus budu mít výstup plně pod kontrolou a bude vypadat přesně, jak potřebuju.

Patrik Votoček
Člen | 2221
+
0
-

v prubehu tydne se k tomu snad dostanu. Dostal jsem od PetrP upravený DataSource který sice neumí tolik co původní v dibi ale měl by být několika násobě rychlejší. Pak dám vědět jak to dopadlo případně domluvím s petrem ať vám ho taky poskytne… :-)

Honza Kuchař
Člen | 1662
+
0
-

PgSQL mívalo problémy na Windows. Ale já mám PgSQL spuštěné pod Win jak na serveru, tak u sebe na PC a bez problému.

Kenn
Člen | 110
+
0
-

honzakuchar napsal(a):

PgSQL mívalo problémy na Windows. Ale já mám PgSQL spuštěné pod Win jak na serveru, tak u sebe na PC a bez problému.

Potom mu asi dám druhou šanci :)