Możesz używać tabel scalania, jednak są one bardziej przestarzałe od wersji 4.x. Biorąc pod uwagę, że twoja aplikacja jest ręcznie podzielona na partycje, ponieważ albo a) używasz naprawdę starej wersji, albo b) pierwotny programista nie wiedział o partycjach tabel.
Krótko mówiąc, jeśli korzystasz z wersji 5.1+, możesz pozwolić mysql wykonać tę partycjonowanie za ciebie. Zobacz
http://dev.mysql.com/doc/refman/5.1/en/partitioning.html Jeśli używasz wersji 5.5, powinieneś sprawdzić te konkretne dokumenty, ponieważ zauważysz pewne różnice.
Partycjonowanie ma wiele zalet. Jednak tak naprawdę zależy to od zestawu danych, wzorców dostępu i sposobu jego indeksowania. Pamiętaj też, że moje poniższe komentarze są w kontekście partycjonowania mysql 5+, a NIE starszych tabel mysql Merge; chociaż czasem są one omawiane w kategoriach partycji.
Kilka przykładów:
- Prosty segment (lub skrót) oparty na często dostępnym kluczu wyszukiwania. Jeśli prawie zawsze patrzysz na klucz podstawowy lub inny unikalny klucz, mysql może zmniejszyć przestrzeń wyszukiwania o współczynnik, ile razy masz partycje. Należy jednak pamiętać, że może to być szkodliwe, jeśli partycjonujesz według jednego klucza, a następnie często wyszukujesz według innego klucza. Jeśli wyszukujesz według klucza, dane nie są podzielone na partycje, to musi WIĘCEJ wyszukiwań podczas wyszukiwania (jedno dla każdej partycji, b / c szczerze mówiąc, nie wie, gdzie są dane)
- Rozważmy sytuacje, w których masz tymczasowy zestaw rekordów rosnących według daty i okresowo przycinasz poprzedni miesiąc. Jeśli partycjonujesz według daty, możesz po prostu usunąć partycję, która jest tak samo szybka jak upuszczenie tabeli, bez względu na to, jak duża. Jeśli przycinasz taką tabelę według dat, musisz wydać jedno lub więcej zapytań DELETE, w których usuwany jest każdy wiersz. Wadą tego jest to, że mysql nie tworzy automatycznie nowych partycji po osiągnięciu maksymalnej daty uwzględnionej w tym scenariuszu; potrzebujesz dodatkowych skryptów konserwacyjnych zbudowanych z twojej strony, aby dodawać partycje według potrzeb.
- Jeśli korzystasz z usługi myisam, kontrole i odzyskiwanie są znacznie szybsze. Zastanów się nad stołem myisam 100G. Jeśli chcesz odzyskać zepsuty stół, potrzebujesz co najmniej 100 G wolnego miejsca na dysku. Jeśli został on podzielony na 10 różnych części o równej wielkości, potrzebujesz tylko 10 G miejsca (i mniej pamięci buforowej key_sort_buffer do szybkiego odzyskiwania); ale musiałby wykonać iterację dla każdej partycji.
Podsumowując, ogólne podejście do partycjonowania tabel może przynieść wiele korzyści. Jednak nie jest to magiczna kula stosowana na ślepo, bez uwzględnienia wzorów dostępu i tego , jak dokładnie dzielisz.
Mogę sobie wyobrazić sytuacje, w których pożądane partycjonowanie jest bardzo specyficzne dla aplikacji i lepiej by było, gdyby logika ta znajdowała się w warstwie aplikacji. Jednak biorąc pod uwagę opis modułu prostego 10, nie wygląda to na taki przypadek.
EDYTOWAĆ
Pisząc mój opis, zapomniałem, że podałeś, że twoja tabela ma 100 tysięcy wierszy. Bez pełnego schematu tabeli i średniej długości wiersza trudno jest z całą pewnością stwierdzić, ale ogólnie rzecz biorąc, to brzmi średniej wielkości, nawet w przypadku skromnego sprzętu. Jednocześnie, jeśli nie powoduje problemów tak, jak jest teraz lub w dającej się przewidzieć przyszłości, nie marnuj czasu i nie narażaj się na ryzyko, zmieniając je.