Tôi đang tạo một cơ sở dữ liệu trong đó sẽ có khoảng 30 bảng, với mỗi bảng chứa hàng chục triệu hàng và mỗi bảng chứa một cột quan trọng duy nhất và cột khóa chính / ngoại khóa để tối đa hóa hiệu quả truy vấn khi đối mặt với nặng cập nhật và chèn thêm và sử dụng nhiều các chỉ mục được nhóm. Hai trong số các bảng sẽ chứa dữ liệu văn bản có độ dài thay đổi, với một trong số chúng chứa hàng trăm triệu hàng nhưng phần còn lại sẽ chỉ chứa dữ liệu số.
Vì tôi thực sự muốn vắt kiệt mọi hiệu năng cuối cùng ra khỏi phần cứng tôi có (khoảng 64GB RAM, SSD rất nhanh và 16 lõi), tôi đã nghĩ đến việc cho phép mỗi bảng có tệp riêng để không có vấn đề gì Tôi đang tham gia vào 2, 3, 4, 5 hoặc nhiều bảng, mỗi bảng sẽ luôn được đọc bằng một luồng riêng biệt và cấu trúc của mỗi tệp sẽ được liên kết chặt chẽ với nội dung của bảng, hy vọng sẽ giảm thiểu sự phân mảnh và làm cho nó nhanh hơn cho SQL Server để thêm vào nội dung của bất kỳ bảng nào.
Một cảnh báo, tôi bị kẹt trên SQL Server 2008 R2 Phiên bản web . Điều đó có nghĩa là tôi không thể sử dụng phân vùng ngang tự động, quy định đó là sự tăng cường hiệu suất.
Việc sử dụng một tệp trên mỗi bảng có thực sự tối đa hóa hiệu suất hay tôi đang xem xét các đặc điểm động cơ SQL Server tích hợp sẽ khiến việc này trở nên dư thừa?
Thứ hai, nếu sử dụng một tệp cho mỗi bảng là thuận lợi, tại sao create table
chỉ cung cấp cho tôi tùy chọn phân bổ bảng cho một nhóm tệp chứ không phải cho tệp logic cụ thể? Điều này sẽ yêu cầu tôi tạo một nhóm tệp riêng cho mỗi tệp trong kịch bản của mình, điều này gợi ý cho tôi rằng có lẽ SQL Server không hình dung được những lợi thế mà tôi cho rằng sẽ đến từ việc làm những gì tôi đề xuất.