Tworzę bazę danych, w której będzie około 30 tabel, z których każda zawiera dziesiątki milionów wierszy, a każda tabela zawiera jedną ważną kolumnę i kolumnę klucza głównego / obcego, aby zmaksymalizować wydajność zapytań w obliczu dużego aktualizacje i wstawienia oraz intensywne wykorzystanie indeksów klastrowych. Dwie tabele będą zawierać dane tekstowe o zmiennej długości, jedna z nich zawiera setki milionów wierszy, a reszta będzie zawierać tylko dane liczbowe.
Ponieważ naprawdę chcę wycisnąć każdą ostatnią kroplę wydajności z dostępnego sprzętu (około 64 GB pamięci RAM, bardzo szybki dysk SSD i 16 rdzeni), zastanawiałem się nad zezwoleniem, aby każda tabela miała własny plik, więc nie ważne, czy Dołączam do 2, 3, 4, 5 lub więcej tabel, każda tabela będzie zawsze czytana za pomocą osobnego wątku, a struktura każdego pliku będzie ściśle dopasowana do zawartości tabeli, co, mam nadzieję, zminimalizuje fragmentację i przyspieszy jej działanie dla SQL Server, aby dodać do zawartości dowolnej tabeli.
Jedno zastrzeżenie, utknąłem na SQL Server 2008 R2 Web Edition . Co oznacza, że nie mogę korzystać z automatycznego partycjonowania poziomego, co wyklucza to zwiększenie wydajności.
Czy użycie jednego pliku na tabelę faktycznie maksymalizuje wydajność, czy też pomijam cechy wbudowanego silnika SQL Server, które spowodowałyby, że byłoby to zbędne?
Po drugie, jeśli korzystanie z jednego pliku na tabelę jest korzystne, dlaczego create table
daje mi tylko opcję przypisania tabeli do grupy plików, a nie do określonego pliku logicznego? Wymagałoby to ode mnie utworzenia osobnej grupy plików dla każdego pliku w moim scenariuszu, co sugeruje mi, że być może SQL Server nie przewiduje korzyści, które, jak zakładam, wynikałyby z robienia tego, co proponuję.