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ść? |
|
|
|
wachcio Optymalizacja bazy danych 14.12.2016, 20:49:16
trueblue A jak często wybierasz rekordy z "dziś" ... 14.12.2016, 20:52:42
wachcio Przy każdorazowym uruchomieniu strony. W celach te... 14.12.2016, 21:13:53
trueblue Usuń CURDATE(), a podstaw tam datę z php (date(... 14.12.2016, 21:16:35
wachcio Niestety czas wykonania skryptu bez zmian 14.12.2016, 21:34:41
trueblue 1. Możesz zapisywać wszystkie w jednej tabeli? Pew... 14.12.2016, 21:46:38
wachcio Ad. 1
Niestety nie gdyż jest to kopia danych oprog... 14.12.2016, 21:55:57
trueblue ad.2 Partycjonowanie jest opisane w dokumentacji, ... 14.12.2016, 22:24:27
wachcio Czyli dużo kombinacji a efektu może nie być za wie... 14.12.2016, 22:58:59
trueblue Dlaczego nie za wiele?
Odczyt z małej tabeli czy z... 14.12.2016, 23:04:12
wachcio Dane są dopisywane do tabel co minuta więc jeśli d... 14.12.2016, 23:13:09 
trueblue Cytat(wachcio @ 14.12.2016, 23:13:09 ... 15.12.2016, 08:40:46
viking W jaki sposób założyłeś indeksy? Mają być dokładni... 15.12.2016, 05:51:29
wachcio Indeksy zakładałem klikając w phpMyAdmin. Pojedync... 15.12.2016, 06:07:34
viking Nie chodzi mi w jakim narzędziu tylko czy faktyczn... 15.12.2016, 06:17:47
pmir13 Z tego co autor napisał wynika, że tabele są dla r... 15.12.2016, 09:51:10 
trueblue Cytat(pmir13 @ 15.12.2016, 09:51:10 )... 15.12.2016, 18:04:54 
pmir13 Cytat(trueblue @ 15.12.2016, 19:04:54... 15.12.2016, 19:19:46
trueblue Przeoczyłem fakt, że autor potrzebuje również najw... 15.12.2016, 19:33:58
wachcio Kolega pmir13 bardzo dobrze zrozumiał co miałem na... 16.12.2016, 21:39:19
pmir13 Dla każdej tabeli:
[SQL] pobierz, plaintext UPDATE... 17.12.2016, 06:11:53
wachcio Dziękuję bardzo za pomoc. Po tych zmianach strona ... 17.12.2016, 18:07:16 ![]() ![]() |
|
Aktualny czas: 23.12.2025 - 18:57 |