Poslao: 21 Feb 2007 07:24
|
offline
- IgorMedo
- Građanin
- Pridružio: 25 Mar 2006
- Poruke: 67
- Gde živiš: Doboj, Republika Srpska
|
Imam jedan problem i on se zove brzina pristupa bazi podataka. Naime na web serveru imam postavljenu bazu na MySQL serveru. Program radi fino dok radi sa bazom koja je na istom racunaru gdje je i aplikacija medjutim kada pocnem da pristupam bazi podataka na udaljenom serveru pojavimi se problem brzine rada aplikacije. Da se uspostavi veza sa serverom i prenesu podatci iz baze traje poprilicno dugo nekih 3-5 min. Sto smatram da nije dobro. Bazi pristupam preko BDE i ODBC-a. Tj. imam napravljen ODBC alijas prema bazi a u delpjiju za rad sa bazom koristim BDE komponente.
Kko da rjesim ovaj problem jer nekako bih to mogao izdrzati da samo jednom uzimam podatke sa servera, jer posle svake izmjene moram da osvjezim sadrzaj baze. A usput mi se ponekad desi da prilikom citanja pojedinih stavki baze dobije odgovor naesto u smislu veza je prekinuta dok je se izvrsavao upit, i posledica ovog je da moram da izadjem potpuno iz aplikacije i ponovo je startujem jer ponovnim pokusajem izvrsavanja istog upita dobijam poruku da BDE nema dovoljno memorije da izvrsi upit.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 21 Feb 2007 11:13
|
offline
- loshmi_sr
- Građanin
- Pridružio: 08 Jan 2007
- Poruke: 279
- Gde živiš: Srbija
|
Strog je pisao o ZeosLib komponentama, koje između ostalog rade sa MySQL -om. probao sam u mreži nad PostgreSQL -om i radi, malo je reći, mnogo brže nego sa ODBC drajverom.
Bitna stavka je i model baze, kao i način upisa i update iste.
|
|
|
|
Poslao: 21 Feb 2007 11:31
|
offline
- beli0135
- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
I ne samo to...
Na tako direktnom pristupu, komanda SELECT * FROM Tabela ce da napravi zadrsku pa cak i do 30 min.
Problem je u kolicini podataka koja se prenosi.
Mi smo napravili shemu da nema veze sta otkucas, dobijas tacno onoliko registara koliko mozes da vidis.
Primera radi, ako je tvoj prozor gde je grid visine 500 px, kad se proracuna sa fontom i svim, dobijes recimo 20 registara. Zasto bi onda doveo 30?
To se zove PAGING on Demand.
|
|
|
|
Poslao: 21 Feb 2007 14:29
|
offline
- IgorMedo
- Građanin
- Pridružio: 25 Mar 2006
- Poruke: 67
- Gde živiš: Doboj, Republika Srpska
|
Hvala na pomoci radi brze ali nito nije dovoljno kada svaku izmjenu cekas da se izvrsi 40 s. Pa mi je palo napomet da li se sadrzaj moze iscitati recimo po 30 zapisa pa ond opet jos 30 itd.
|
|
|
|
Poslao: 21 Feb 2007 15:03
|
offline
- beli0135
- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
Naravno da moze, ali morao bi da prepravis FETCH od komponente koju koristis.
|
|
|
|
Poslao: 21 Feb 2007 15:23
|
offline
- loshmi_sr
- Građanin
- Pridružio: 08 Jan 2007
- Poruke: 279
- Gde živiš: Srbija
|
Ako imaš na milione slogova, glupo je učitati ih sve u dataset. Treba u select iskaz uključiti "where nesto","having ... ", etc.
Probaj postaviti još jednu Query komponentu i na njoj odradi insert / update, a refreshuj drugu Query komponentu sa datasetom, koja ima where_nesto, te ne učitavaš celu tabelu nego samo uslov koji si zadao. Ako treba u dataset da se učita nešto drugo to odradiš pretragom uslova koji zadaješ. U slučaju da si insertovao slog kojeg nema trenutno u select datasetu, ti odradi izmenu tog selecta da bi video vrednost unetog sloga.
|
|
|
|
Poslao: 22 Feb 2007 12:40
|
offline
- IgorMedo
- Građanin
- Pridružio: 25 Mar 2006
- Poruke: 67
- Gde živiš: Doboj, Republika Srpska
|
Hval na trudu rjesio sam problem i sveo sam cekanje na 8 sekundi. Sveo sam broj slogova koje ucitavam na 15. I smatram da mi je ovo odlicno vrijeme 8 s za 15 slika 420*300.
Sve je rjeseno koristenjem limita, prije je SQL upit izgledao:
SELECT Uredjaji.Naziv, Uredjaji.Slika, Uredjaji.Opis, Uredjaji.NazivAGW, Uredjaji.SifraAGW, Uredjaji.CjenaAGW, Marke.Naziv Marka, Grupe.Naziv Grupa, Uredjaji.Bruredjaja
FROM uredjaji Uredjaji, marke Marke, grupe Grupe
WHERE (Uredjaji.Brmarke = Marke.BrMarke)
AND (Uredjaji.Brgrupe = Grupe.BrGrupe)
a sada:
SELECT Uredjaji.Naziv, Uredjaji.Slika, Uredjaji.Opis, Uredjaji.NazivAGW, Uredjaji.SifraAGW, Uredjaji.CjenaAGW, Marke.Naziv Marka, Grupe.Naziv Grupa, Uredjaji.Bruredjaja
FROM uredjaji Uredjaji, marke Marke, grupe Grupe
WHERE (Uredjaji.Brmarke = Marke.BrMarke)
AND (Uredjaji.Brgrupe = Grupe.BrGrupe) Limit :Start,15
I na formu sam dodao dva dugmeta jedno za naprijed a drugo za nazad u navigaciji slogova i to je to.
Hvala na pomoci.
|
|
|
|