Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalizacja bazy danych
wachcio
post
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.
  1. $temp_raspberry_pi = mysql_query ("SELECT `value`,`time` FROM `Raspberry_Pi` ORDER BY `Raspberry_Pi`.`time` DESC LIMIT 2");
  2. $temp_raspberry_pi = mysql_fetch_assoc($temp_raspberry_pi);

- najwyższy odczyt z dziś
  1. $hi_temp_raspberry_pi = mysql_query ("SELECT `value`,`time` FROM `Raspberry_Pi` WHERE DATE( `time` ) = CURDATE( ) ORDER BY `Raspberry_Pi`.`value` DESC LIMIT 2");
  2. $hi_temp_raspberry_pi = mysql_fetch_assoc($hi_temp_raspberry_pi);

- najniższy odczyt dziś
  1. $low_temp_raspberry_pi = mysql_query ("SELECT `value`,`time` FROM `Raspberry_Pi` WHERE DATE( `time` ) = CURDATE( ) ORDER BY `Raspberry_Pi`.`value` ASC LIMIT 2 ");
  2. $low_temp_raspberry_pi = mysql_fetch_assoc($low_temp_raspberry_pi);


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 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ść?
Go to the top of the page
+Quote Post

Posty w temacie
- 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


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 07:52