Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 0 Dołączył: 18.07.2008 Ostrzeżenie: (0%)
|
Sprawa wygląda tak, piszę dzienniczek ucznia i jest tam tabela z ocenami (każda ocena oddzielny rekord), przewiduję że może osiągnąć ponad 100 000 000 rekordów.
Przy testowaniu wydajności z ok 1.5 mln ocen, przy pobieraniu oceny ucznia, albo oceny z przedmiotu w danej klasie, zapytania wykonywały się w ok 0.6 sec, często krócej, (0.1 przy 30 tyś ocen) na tabelę są założone 4 indeksy, po ich usunięciu pokazanie ocen jednego ucznia trwało ponad 60 sec :/ Usuwanie, albo edycja pojedynczych rekordów trwa jednak zdecydowanie za długo, raz 0.2 a raz nawet 2 sec. Ale z drugiej strony ta tabela może być często aktualizowana. Tak więc zastanawiam się czy nie dobrym wyjściem było by zamiast jednej dużej tabeli OCENY dla wszystkich szkół w systemie, zrobić automatycznie dla każdej szkoły oddzielną tabelę na oceny, np OCENY_SZKOLA01, OCENY_SZKOLA02 Liczba szkół nie powinna przekroczyć 200, a w jednej tabeli byłby max 1mln rekordów. Serwer to nie dedyk, jakiś współdzielony, nie znam jego parametrów. Tak wiec pytam, jak oceniacie ten pomysł, dobry, zły i czy mogą być jakieś negatywne konsekwencje, a może macie inny pomysł na poprawę wydajności, oczywiście poza budowaniem własnego data center (IMG:style_emoticons/default/questionmark.gif) ? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 0 Dołączył: 18.07.2008 Ostrzeżenie: (0%)
|
hehe
Też bym wolał np PRIMARY KEY (`oceny_id`), ale mam mały problem i nie wiem jak go obejść Gdy podzielę tabelę na partycję wg kolumny 'oceny_szkola' to AUTO_INCREMENT mogę dodać tylko do kolumny 'oceny_szkola', inaczej wywala błąd, ew zrobić PRIMARY KEY tak jak zrobiłem, czyli w dupny sposób. Efekt jest taki że rekordy w tabeli 'oceny_id' są puste i nie można edytować, ani usuwać ocen, bo nie mogę do niej zastosować AUTO_INCREMENT (IMG:style_emoticons/default/sad.gif) Oczywiście problem by znikł gdyby partycje były np typu RANGE i były tworzone wg 'oceny_id', ale w skrajnym przypadku przeszukiwane mogłyby być nawet wszystkie partycje, a raczej byłoby lepiej gdyby przeszukiwana była tylko jedna (tak mi się wydaje, mogę się mylić). Chyba jednak zrobię ten range... P.S. niekoniecznie overkill, 1000 uczniów w 5 lat jest w stanie uzbierać 1 mln ocen, czyli sporo |
|
|
|
modic Kilka mniejszych tabel, czy jedna duuuża 25.02.2010, 02:30:09
Mchl Pomysł zły.
Lepiej partycjonować.
Jakiego typu ta... 25.02.2010, 09:40:51
modic Serwer to maszyna współdzielona, ale stoi na nim k... 25.02.2010, 10:32:06 
Mchl Cytat(modic @ 25.02.2010, 10:32:06 ) ... 25.02.2010, 11:02:56
Pilsener Cytat100 000 000 rekordów - zapomnij. Właściwą wyd... 4.03.2010, 21:46:37
Mchl Sama ilość rekordów o niczym nie mówi. Liczy się o... 4.03.2010, 22:38:12
modic Dzięki za podpowiedzi
sam serwer to dedyk, ale do... 12.03.2010, 21:37:45
Mchl Do duszy taki klucz główny.
Przeczytaj definicję k... 12.03.2010, 21:58:42
Mchl PRIMARY KEY (`oceny_id`,`oceny_szkola... 13.03.2010, 09:30:19
modic faktycznie, PRIMARY KEY (`oceny_id`,`o... 13.03.2010, 14:07:06 ![]() ![]() |
|
Aktualny czas: 10.06.2026 - 13:52 |