Saya membuat basis data di mana akan ada sekitar 30 tabel, dengan setiap tabel berisi puluhan juta baris dan setiap tabel berisi satu kolom penting dan satu kolom kunci asing / utama untuk memaksimalkan efisiensi kueri dalam menghadapi beban berat. pembaruan dan penyisipan dan sangat memanfaatkan indeks berkerumun. Dua tabel akan berisi data tekstual panjang variabel, dengan satu di antaranya berisi ratusan juta baris tetapi sisanya hanya berisi data numerik.
Karena saya benar-benar ingin memeras setiap tetes kinerja terakhir dari perangkat keras yang saya miliki (sekitar 64GB RAM, SSD yang sangat cepat dan 16 core), saya berpikir untuk memungkinkan setiap tabel memiliki file sendiri sehingga tidak masalah jika Saya bergabung di 2, 3, 4, 5 atau lebih tabel, setiap tabel akan selalu dibaca menggunakan utas terpisah dan struktur setiap file akan sangat selaras dengan isi tabel, yang diharapkan akan meminimalkan fragmentasi dan membuatnya lebih cepat untuk SQL Server untuk menambah konten dari tabel yang diberikan.
Satu peringatan, saya terjebak di SQL Server 2008 R2 Web Edition . Yang berarti saya tidak dapat menggunakan partisi horisontal otomatis, yang mengesampingkan itu sebagai peningkatan kinerja.
Apakah menggunakan satu file per tabel benar-benar memaksimalkan kinerja, atau apakah saya mengabaikan karakteristik engine SQL Server bawaan yang akan membuat hal itu berlebihan?
Kedua, jika menggunakan satu file per tabel menguntungkan, mengapa create table
hanya memberi saya opsi untuk mengalokasikan tabel ke grup file dan bukan ke file logis tertentu? Ini akan mengharuskan saya untuk membuat grup file terpisah untuk setiap file dalam skenario saya, yang menunjukkan kepada saya bahwa mungkin SQL Server tidak membayangkan keuntungan yang saya asumsikan berasal dari melakukan apa yang saya usulkan.