Microsoft Office Access
uređuje Branislav Mihaljev, MVP

 Office Praktikum | Mapa sajta 

 
Bookmark and Share
Matična strana sajta
Novo na sajtu
Mapa sajta
Beleške
Knjiga posetilaca
Kontakt

Prethodna stranica
Pretraga sajta
Pretraga MSKB

Blog Praktikuma
RSS feed 
 
Office Praktikum

Još o Accessu
 


Skoro svakodnevno slušamo
  Radio Paradise:
  eklektični muzički online radio bez reklama!
 

   

Sponzori sajta

  Connectivity by SBB
 
Connectivity by SBB

 

Informacije

NOVOSTI
Novi prilog o Wordu
Tri nova autorska članka
Četiri priloga o Accessu
Opis i uputstvo za alatku YuCirLat '08 (Word)

SADRŽAJ ZA PREUZIMANJE
YuCirLat '08 unapređena alatka za konverziju kodnih rasporeda u Wordu

SKREĆEMO PAŽNJU
Beleške: B(l)oga li ti tvoga!- prilog koji će nekog možda čak i da naljuti
Kako pretraživati MSKB
* a pronaći ćete i još mnogo novih sadržaja...

USKORO SERIJA ČLANAKA O OFFICEU 2010

POZIVAMO VAS
* i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.



  (C) 2000-2009 Praktikum na Webu
 

Nedovoljno memorije za transakcije

Nivo:  NIVO 3 - klinite za objašnjenje


Koliko puta ste čuli nečiju izjavu "Access je suviše spor za ozbiljnije transakcije"? Može biti da je tako, ali predlažemo vam da najpre preduzmete neke mere za popravku performansi transakcija i za sprečavanje pojave poruka o grešci "nedovoljno memorije". Tek nakon zahvata koji ovde opisujemo, preispitajte valjanost tvrdnje o sporosti Accessa...

Jedno od često ponavljanih problema (i vaših pitanja) se odnosi na poruku There isn't enough disk space or memory kojom Access obaveštava korisnika da se tražena operacija nad tabelom ne može izvesti jer nema dovoljno memorije, iako u sistemu ima i "viška" memorije i prostora na disku.

Druga poruka o grešci, čiji uzrok je isti kao pri operaciji nad tabelom, je There isn't enough disk space or memory to undo the data changes this action query is about to make koja se javlja ako pokrenemo upit koji modifikuje, kopira, briše ili kreira tabelu (Action Query).

Uzrok pojave greške leži u prevelikom broju transakcija koji je definisan u bazi Registry pod ključem MaxLocksPerFile. Naime, svaki slog baze "troši" po jednu od ove vrednosti i kada pređe otprilike 9.500, Access će prijaviti jednu od dve pomenute greške. Rešenje je povećati ovu vrednost, što se može učiniti na nekoliko načina.

Za upite koji dodaju slogove u tabelu ili menjaju njen sadržaj potrebno je otvoriti karticu osobina upita i vrednost Use Transactions promeniti sa Yes na No.

Izmenom ove vrednosti, sve transakcije koje će upit načiniti svode se na jednu umesto na onoliko slogova koliko se modifikuje. U određenim situacijama čak je preporučljivo ovu osobinu postaviti na No jer se, osim izbegavanja pojave greške, brzina transakcije višestruko povećava, naročito u mrežnom okruženju gde je baza podeljena na FrontEnd i BackEnd delove. JetDatabaseEngine neće kreirati privremenu tabelu sa rezultatima rada upita, već će kompletnu transakciju jednovremeno obaviti direktno nad tabelom. U mrežnom okruženju to znači da će se cela transakcija obaviti u jednom paketu, umesto mnogo malih, koliko slogova transakcija sadrži. Drugim rečima, ovim ćete drastično smanjiti saobraćaj na mreži, a istovremeno drastično povećati performansu aplikacije.

U uslovima gde se po svaku cenu mora održati konzistentnost baze, postoji realna opasnost da će doći do oštećenja tabele ukoliko dođe do prekida napajanja za vreme rada upita, pa savetujemo da ovu osobinu zadržite na vrednosti Yes, odnosno da povećate vrednost MaxLocksPerFile. Ukoliko nešto pođe naopako, Access će zahtevati od vas da se opredelite između snimanja izmena i odustajanja od snimanja. Vrednost izmenjenih tabela se može vratiti na prethodno stanje (pod uslovom da je osobina UseTransaction postavljena na No) korišćenjem ADO metode RollbackTrans, odnosno metode Rollback u DAO biblioteci.

Vrednost MaxLocksPerFile se može povećati direktno u bazi Registry izmenom vrednosti pod ključem

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0

Osnovna vrednost je 9.500, a može se po potrebi povećati na bilo koju. Imajte u vidu da će se promena ove vrednosti odraziti na sve aplikacije koje koriste Jet mašinu.

Treći način predstavlja kompromisno i možda najefikasnije rešenje. Pre pokretanja upita za izmenu tabele, vrednost MaxLocksPerFile ćemo privremeno povećati, a po završetku rada vrednost će biti vraćena na osnovnu. U VBA programu, pre grupe instrukcija za izmenu tabela postavićemo sledeći red:

DBEngine.SetOption dbMaxLocksPerFile, 15000

što će biti dovoljno za približno 15000 transakcija. Brojka se može povećati na vrednost maksimalno očekivanih transakcija.

 

  (C) 2000-2009 Praktikum na Webu

Branislav Mihaljev, Access bajtovi, PC 80


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

Copyright © Praktikum na Webu, 2000-2009; Valinor Design; sva prava pridržana.