Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 21.02.2017 Ostrzeżenie: (0%)
|
Witam.
Posiadam następujący problem. Jedna z tabel w mojej bazie danych posiadająca 21 kolumn przechowuje dane statystyczne. Na chwilę obecną posiada około 30 000 rekordów. Wyszukiwanie w tejże tabeli następuje głównie względem kolumny 'domain' (łączna liczba różnych 'domain' to 42 i co jakichś czas się zwiększa). Średni przyrost bazy to około 3000 rekordów miesięcznie - przyrost wykazuje tendencje rosnącą. Oczywiście pojawił się problem wydajności bazy i czasu otrzymywania wyników z zapytań. W związku z powyższym zabieram się za optymalizację mechanizmów obsługi tej bazy. Stąd moja prośba o Wasze opinie, propozycje. Zastanawiam się nad następującymi rozwiązaniami: 1. Tabela przechowuje rekordy tylko z ostatnich 3 miesięcy (mniej więcej tyle muszę mieć "od ręki" dostępne z zapytania do bazy), wszystkie starsze rekordy zrzucane byłyby do archiwum. Jakie to archiwum? pliki xml? Do danych z archiwum też muszę mieć dostęp, choć zakłam, że dane z niego nie będą potrzebne dość często. 2. Każda z 'domain' posiada oddzielną przypisaną tabelę ze statystykami. Liczba tabel zwiększała by się zatem z czasem (jak pisałem wcześniej ilość 'domain' także rośnie) 3. Rezygnacja z tabeli na rzecz przechowywania danych w plikach np xml i parsowania ich w trakcie zapytań (najmniej odpowiadająca mi opcja) Jakie jest Wasze zdanie? Co proponujecie ? Z góry dziękuję za odpowiedzi Wojtek |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 21.02.2017 Ostrzeżenie: (0%)
|
Hej,
Poniżej struktura: CREATE TABLE `test` ( `id` int(255) NOT NULL AUTO_INCREMENT, `name` text NOT NULL, `build` text NOT NULL, `start_date` date NOT NULL, `start_time` time NOT NULL, `duration` text NOT NULL, `pass_ts` int(255) NOT NULL, `fail_ts` int(255) NOT NULL, `pass_tc` int(255) NOT NULL, `fail_tc` int(255) NOT NULL, `file` varchar(255) NOT NULL, `total_tc` int(255) NOT NULL, `total_ts` int(255) NOT NULL, `track` varchar(10) NOT NULL, `comments` text, `group_comments` text, `release` int(10) NOT NULL, `release_name` text, `release_info` text, `release_comments` text, `index_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`execution_id`) ) ENGINE=InnoDB AUTO_INCREMENT=33168 DEFAULT CHARSET=utf8; Zapytania są tylko: "SELECT * FROM test WHERE name=''" |
|
|
|
golytm baza - problem z przyrostem i wydajnością 21.02.2017, 01:17:46
javafxdev 30k rekordów i już problem z wydajnością? Pokaż ja... 21.02.2017, 08:21:13
Pyton_000 1. bez sensu. Zacznij o tym myśleć dopiero jak ilo... 21.02.2017, 08:33:54
Pyton_000 Nie masz żadnego indeksu na "name", załó... 21.02.2017, 10:32:02
javafxdev ogólnie to co wkleiłeś chyba nie zadziała - PRIMAR... 21.02.2017, 12:53:39
golytm Hej,
Dzięki za odpowiedz. Nie ściema, choć faktyc... 21.02.2017, 15:40:42 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 12:54 |