Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  Tabelă cu vreo ...
 Tabelă cu vreo ijdemii de records
 
 2/16/2011 7:40:25 PM
User is offlinealemao
111 posts
5th


Tabelă cu vreo ijdemii de records
 (N/A)
Am o bază de date cu o tabelă ce v-a fi populată cu aproximativ 500.000 înregistrări.
Accesul la această tabelă îl are un nr. de maxim 6 utilizatori.
Ok. Având în vedere regulile privind accesul partajat, am setat bufferul tabelei pe 2 - pessimistic row buffering.
În plus pentru mai multă siguranţă în manipularea datelor am folosit tranzacţiile.
Tabela este indexată după un câmp cu ID unic şi suportă operaţiile obişnuite de actualizare (adăugare, modificare, ştergere şi filtrare) cu accent pe adăugare şi filtrare.
Form-urile utilizare sunt setate pe 2 - private data session.
În prezent sunt aproape 150.000 înregistrări şi parcă se simte o reducere a vitezei de răspuns.

Mă gândesc că viteza de răspuns se v-a reduce binişor când tabela se v-a apropia de nr. maxim de înregistrări.

Ce să fac? Să trec pe 3 - optimistic row buffering?
O să am vreun spor de viteză sau mai există vreo altă metodă?

Ce părere aveţi?
Ce îmi puteţi recomanda?

 2/16/2011 10:25:14 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Tabelă cu vreo ijdemii de records
 (N/A)
Pessimistic row buffering si Optimistic row buffering n-au nici o legatura cu performanta tabelei. Mai citeste o data la ce se folosesc astea - e in help. Si daca le scoti de tot, tot viteza aia o sa o ai.

Performanta depinde de latimea tabelei si de indecsi. Toate campurile care sunt implicate in Where si Join trebuie sa aiba indecsi exact pe expresiile din Where, respectiv Join. Altfel spus, daca o faci cautari de genul Select * from tabela where Upper(Camp) = "VASILE", indexul trebuie facut pe UPPER(camp). Evita Alltrim() in expresiile din Where si Join (sau mai bine zis, evita orice fel de functii in expressile astea).

Secventa asta:
lcTempVar = Upper("SearchString")
Select * From Tabela Where camp = lcTempVar

se va excuta mai repede decat asta:

Select * From tabela Where camp = Upper("SearchString")

Bref, sa conchid: indecsi pe campurile implicate in join si where. Expresiile de indexare trebuie sa fie identice cu cele dupa care cauti. Pune un index pe expresia DELETED(). Foloseste Sys(3054) ca sa vezi cum optimizeaza Rushmore interogarea ta. Nu folosi NOT in clauzele de filtrare.

Cam asta ar fi.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 2/17/2011 8:55:48 PM
User is offlinealemao
111 posts
5th


Re: Tabelă cu vreo ijdemii de records
 (N/A)
"Şi uite aşa îşi seama omul că are pantofi cu încălţare separată". Nu că n-ar merge să bage amândouă picioarele într-un pantof, după ceva eforturi disperate udate din belşug cu transpiraţie.
Mulţumesc pentru sfaturi. Întotdeauna au fost primite cu plăcere.
Una peste alta cu indecşii m-am prins cum stă treaba, doar că am aplicat NOT DELETED().
Celelalte sfaturi o să le pun de urgenţă în aplicare.
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  Tabelă cu vreo ...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement