![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 17.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam bazę danych którą opisałem wcześniej Temat: Wyszukiwanie danych w kilku tabelach Na razie składa się ona z 11 tabel gdzie każda przechowuje w kolumnach numer porządkowy, datę odczytu i wartość odczytu z różnych czujników np temperatury. Dane gromadzone są od maja tego roku a odczyty co minutę. Daje to na tę chwilę ok 250 000 rekordów na każdą tabelę czyli niecałe 3 000 000 rekordów w bazie. Zrobiłem sobie prostą stronę aby wyświetlać jak na razie: - ostatni odczyt np.
- najwyższy odczyt z dziś
- najniższy odczyt dziś
Udało mi się uporać z problemami przedstawionymi w poprzednim poście ale wyświetlanie tych wyników dla wszystkich 11 tabel trwało ok 14 sek (IMG:style_emoticons/default/sad.gif) Poczytałem jak mogę zoptymalizować bazę. Dodałem indeksy na kolumny z datą i wartością odczytu. W zapytaniu SELECT uściśliłem potrzebne mi kolumny oraz dodałem klauzulę LIMIT. Strona wczytuje się teraz ok 6,5 sek czyli sporo mniej ale i tak dość długo. Zauważyłem, że najwięcej czasu zajmują zapytania wybierające rekordy z dziś. Wiadomo, że z czasem problem będzie narastał bo i danych będzie przybywało. Poza tym planuję dodawać nowe czujniki... Co jeszcze mogę zrobić aby poprawić wydajność? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 17.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dane są dopisywane do tabel co minuta więc jeśli dobrze rozumiem to przy każdym odświerzeniu strony musiałbym przepisać część tabel gdzie są odczyty dziś do innych tabel (tabeli) a to chyba też zajmie czas?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dane są dopisywane do tabel co minuta więc jeśli dobrze rozumiem to przy każdym odświerzeniu strony musiałbym przepisać część tabel gdzie są odczyty dziś do innych tabel (tabeli) a to chyba też zajmie czas? Skoro z jednego dnia masz tak dużą liczbę rekordów, to nie ma sensu. Byłem przekonany, że 2 rekordy na 1 dzień. Ale wydaje mi się, że warunek WHERE jest niepotrzebny. Przecież nie ma w tabeli nowszych danych niż z dnia dzisiejszego. Wystarczy więc ORDER BY i LIMIT. Ten post edytował trueblue 15.12.2016, 09:01:29 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 01:33 |