Brzi pristup bazi podataka

Brzi pristup bazi podataka

offline
  • 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.
offline
  • 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.



offline
  • Emil Beli
  • 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.

offline
  • 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.

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Naravno da moze, ali morao bi da prepravis FETCH od komponente koju koristis.

offline
  • 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.

offline
  • 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.

Ko je trenutno na forumu
 

Ukupno su 834 korisnika na forumu :: 8 registrovanih, 2 sakrivenih i 824 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: ILGromovnik, ivicasimo, Kriglord, Leonov, mane123, milenko crazy north, nebidrag, SR-3m