Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 6.04.2002 Skąd: Gliwice Ostrzeżenie: (0%)
|
Witam,
Mam pewien problem z pobieraniem danych z MYSQL. W jednej tabeli mam jakies 180 000 rekordow, codziennie jest dopisywane po kilkaset, w sezonie nawet po kilka tysiecy. W tej chwili musze zrobic raporty finansowe oparte na tych danych. Problem jest taki, ze jak proboje pobrac wieksza ilosc danych MySQL "siada". Zmienilem czas wykonywania skryptu, pamiec dla PHP, niestety nie wiem ktore jakie ustawienia MYSQL powienienem zmienic aby za 1 razem udalo sie pobrac np. 180 000 rekordow. Jednym z rozwiazan jest porcjowanie danych i dzielenie na pliki (w tej chwili wszystkie dane sa konwertowane do Excela), niestety nie wiem jak to teraz polaczyc w jeden plik:/ Czy ktos spotkal sie z podobnym problemem? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 7 Dołączył: 26.03.2004 Skąd: Opole Ostrzeżenie: (0%)
|
Tak. Ja sie spotkałem. Ja mam miliony rekordów w bazie i moje sposoby optymalizacji to:
1) - szybkie tabele (te do analiz) myisam 2) - przemyślana struktura tabel i ich optymalizacja (indeksy) 3) - konstruowanie optymalnych zapytań - INNER JOINS są szybsze niż podzapytania. Zapytania do tabel są szybsze niż zapytania do widoków itd. 4) - skomplikowane zapytania można rozbić na kilka mniejszych (wynik wczesniejszego w tymczasowej tabeli) 5) - w przypadku analiz sprawozdawczych w firmie, które mają zazwyczaj miejsce w określonych dniach miesiąca/tygodnia można wykonać wstępne przygotowanie danych. Robi tak wiele komercyjnych systemów CRM - po zamknięciu kolejnych okresów sprzedaży tworzone są z nich statystyki, wystarczające już potem do większości analiz, chodzi o to by zbędnie nie męczyć engine bazy danych. Aplikacje są tak przemyślane aby zamknięte okresy sprzedażowe nie mogły już zmieniać swoich danych, a ewentualne korekty doliczają się do aktualnego okresu. Raz wyliczone uproszczone statystyki są już niezmienne do końca świata. Zatem jeśli Twoje wyliczenia są złożone jako zapytania bo np. łączą kilka tabel można je przyspieszyć wykonując po zamknięciu jakiegoś okresu (albo raz dziennie) zrzut wyniku zapytania z łączonych tabel do jednej tabeli. Mógłby to być widok tylko tu chodzi o gotową tabele a nie każdorazowe składanie wszystkiego do kupy. Tabela oczywiście musi nieć odpowiednie indeksy do wyszukiwania (do łączenia już nie bo wszystkie dane są w jednej tabeli) |
|
|
|
dcooper Duza ilosc danych 3.12.2007, 12:25:27
dcooper Witam, dzieki za odpowiedz.
Mam kilka problemow z ... 4.12.2007, 13:47:45 
sethir Cytat(dcooper @ 4.12.2007, 13:47:45 )... 5.12.2007, 14:19:22
dcooper Witam, czym powinienem sie kierowac? Na co powinie... 5.12.2007, 15:06:21 
sethir Cytat(dcooper @ 5.12.2007, 15:06:21 )... 5.12.2007, 15:14:29
Indeo Indeksy zakładasz na wszystkich punktach, w któryc... 6.12.2007, 08:29:49
dcooper A wiec tak:
1) zamowienia - 180 000 rek.
2) klien... 12.12.2007, 17:59:44
Indeo A pokaż no to zapytanie 12.12.2007, 18:46:28
dcooper Tu nie chodzi o zapytanie. Przy nawet prostym SELE... 14.12.2007, 14:42:55
Indeo Bazy danych posiadają pewne mechanizmy chroniące p... 16.12.2007, 02:30:33 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 21:06 |