Pobieranie dużych ilości danych, problem z pamięcią

0

Mam taki problem, że mam do pobrania duże ilości danych, to są dane księgowe, gdzie połączone jest ileś tam tabel, no i jak pobieram sobie dane załóżmy za okres 2 lat. To tych danych wychodzi nawet ponad milion. Postanowiłem, użyć dappera o ile u mnie sobie radzi przy pobieraniu tego miliona, gdzie mam 16 gb ramu, to np u kolegi już nie. Chociaż wcześniej mieliśmy zwykłe ADO to problem z pamięcią też był u niego przy 500k danych. To u klienta, może być jeszcze większy problem, bo pewnie babeczka raczej nie ma tam 16 gb ramu. Aplikacja jest napisana w winformsach. Jak mogę rozwiązać ten problem ?

2

Czy koniecznie potrzebujesz naraz pobierać tyle danych? Nie możesz przetwarzać tego w batchach? Może od złej strony podchodzisz do problemu, a rozwiązanie może być znacznie prostsze niż się wydaje.

0

Chyba żadna komercyjna baza danych nie działa w ten sposób że przechowuje 16 GB danych w pamięci RAM .
Tak pomyśl chłopie na chłopski rozum .ha ha ha

0

Czy koniecznie muszę tego do końca nie wiem, bo ta aplikacje ileś osób pisało A z tego co się orientuję, to dziala Tak że są wykonywane jakieś tam operacje. Wiem, że zrzuceniem tego do Excela nie było takich problemów. Ja dostaje tam zapytanie sql i mam to wyświetlić

1

https://github.com/StackExchange/Dapper#buffered-vs-unbuffered-readers

Dapper's default behavior is to execute your SQL and buffer the entire reader on return. This is ideal in most cases as it minimizes shared locks in the db and cuts down on db network time.
However when executing huge queries you may need to minimize memory footprint and only load objects as needed. To do so pass, buffered: false into the Query method.

1

pobieraj tylko to co widac na ekranie, query w google: c# virtual mode grid winforms
zamiast implementowac to samodzielnie (co jest ciekawym zadaniem), mozesz isc na latwizne + oszczedzic czas/pieniadze i kupic jakies kontrolki wspierajace "leniwe" wczytywanie danych - syncfusion, devexpress, telerik z tego co pamietam maja je calkiem niezle

0
Kubuś Puchatek napisał(a):

Czy koniecznie muszę tego do końca nie wiem, bo ta aplikacje ileś osób pisało A z tego co się orientuję, to dziala Tak że są wykonywane jakieś tam operacje. Wiem, że zrzuceniem tego do Excela nie było takich problemów. Ja dostaje tam zapytanie sql i mam to wyświetlić

Nie masz zadnej mozliwosci wypytania co konkretnie chca osiagnac? Brzmi to troche jak jedna z tych sytuacji kiedy uzytkownik sam do konca nie rozumie czego chce. Warto by sie dowiedziec i zrobic to jak nalezy. Pozniej to docenia.

0

Ten winforms jest oparty o devexpress, szczerze mówiąc nie do końca wiem, co to robi, jedynie, to że jest problem z pamięcią bo za dużo danych jest pobieranych, zrzucono mi to zadanie. Dzięki za podpowiedzi wszystkim, postaram się coś wykombinować.

2

I człowiek niby to ma oglądać? Milion wierszy? Mądre to?
DX Grid w nowszych wersjach ma chyba continous loadimg czy jak to tam się nazywa. Pociąga potrzebne dane przy przemijaniu grida.

2

Ad komentarz. Klient to pewnie chce coś zupełnie innego tylko nikt mu odpowiednich pytań nie zadał. W zyciu nie slyszalem, zeby klient chcial, zeby jakis pracownik przewijal i ogladal 1 mln wierszy w tabeli. I jeszcze 2 lata wstecz. To lo prostu nie ma sensu. Weź telefon i się go zapytaj o co mu chodzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1