SQL Server: filegroup chỉ dành cho bảng hệ thống?


11

Một trong những tiêu chuẩn của công ty chúng tôi là có một tệp / tệp riêng cho các bảng / chỉ mục người dùng. Điều này được đặt làm mặc định, do đó không cần phải đủ điều kiện phát biểu TẠO TABLE.

Nó trông như thế này

  • fileid 1 = bảng hệ thống, ván ép
  • fileid 2 = t-log = LDF
  • fileid 3 = công cụ người dùng = NDF

Bất cứ ai ở đây có thể giúp tôi hiểu lý do ban đầu tại sao điều này là bắt buộc?


Tôi sẽ đến sạch và nói rằng tôi nghĩ đó là voodoo. Am tôi sai ...?

Chỉnh sửa: Tôi biết cách sử dụng filegroups để tách các chỉ mục / phân vùng / lưu trữ, cũng như cách khôi phục từng phần. Câu hỏi này là về việc sử dụng một nhóm fileg riêng trên cùng một âm lượng cho các bảng hệ thống.

Câu trả lời:


9

Sách đào tạo 70-432 của Microsoft cho biết "Lý do chính không đặt bất kỳ đối tượng nào của bạn vào nhóm tệp chính là cung cấp càng nhiều sự cô lập trong I / O càng tốt. Dữ liệu trong các đối tượng hệ thống không thay đổi thường xuyên như dữ liệu Trong các đối tượng của bạn. Bằng cách giảm thiểu hoạt động ghi vào tệp dữ liệu chính, bạn giảm khả năng giới thiệu tham nhũng do lỗi phần cứng. Ngoài ra, vì trạng thái của filegroup chính cũng xác định trạng thái của cơ sở dữ liệu, bạn có thể tăng tính khả dụng trong cơ sở dữ liệu, tôi giảm thiểu các thay đổi được thực hiện cho nhóm chính. "

Vì vậy, hãy làm điều đó như bạn muốn. Những người khác nói rằng điều này là không cần thiết trong một số trường hợp nhất định và tất nhiên là nhiều hơn để duy trì. Chỉ cần nghĩ rằng tôi sẽ cung cấp lý luận của Microsoft.


Hợp lý, một số bằng chứng bằng văn bản cho nó. Tôi sẽ chấp nhận điều này
gbn

1
Một lý do khác là việc khôi phục cơ sở dữ liệu THAM GIA cho phép khôi phục tập tin PRIMARY cộng với các nhóm tập tin khác được chọn cho phép khôi phục nhanh hơn một VLDB được thiết kế chính xác. Cho phép các nhóm lưu trữ / thứ cấp được khôi phục sau đó.
MartinC

@MartinC: Tôi biết về khôi phục một phần, v.v., nhưng tôi chưa bao giờ hiểu logic của việc tách biệt rõ ràng các bảng hệ thống. Filegroups để thực hiện, lưu trữ, bảo trì, phân vùng, vv Nhưng bảng hệ thống? Jared đưa ra lời giải thích tốt nhất cho đến nay ..
gbn

Nếu toàn bộ cơ sở dữ liệu là rất lớn, nhóm chính có thể có một bản sao lưu thường xuyên hơn đó là dữ liệu chính. Việc khôi phục sẽ chỉ yêu cầu sao lưu nhật ký đuôi và khôi phục nhật ký chính và nhật ký giao dịch kể từ khi sao lưu filegroup cộng với đuôi. Vì các bảng hệ thống nhỏ nên đây sẽ là quá trình khôi phục nhanh hơn so với thực hiện điều này cho toàn bộ cơ sở dữ liệu để có thể giảm thời gian chết trong trường hợp xảy ra sự cố.
MartinC

12

Không đạt được hiệu suất cho việc này, có một mức tăng đáng kể được thực hiện. Nếu tham nhũng tệp xảy ra trong các bảng hệ thống thì cơ sở dữ liệu sẽ bị mất. Nếu bạn giữ dữ liệu người dùng trong một nhóm (hoặc nhóm) riêng biệt thì bạn có thể khôi phục chỉ những tệp đó giữ phần còn lại của cơ sở dữ liệu trực tuyến trong quá trình khôi phục (giả sử Enterprise Edition ở đây).

Nếu đây là lý do tại sao họ nêu điều này, tôi không thể nói, nhưng đây sẽ là một lợi ích của việc có nhiều nhóm tệp chỉ với các đối tượng hệ thống trong nhóm tệp PRIMARY.

Tuy nhiên, bạn nên đá vào rác để nói rằng AutoShrink nên được bật.


Để tìm hiểu thêm về điều này, bạn có thể tìm kiếm Khôi phục Piecemeal trực tuyến trong Sách trực tuyến.
Brent Ozar

1
Tôi đã luôn nghĩ rằng điều này là quá tốt khi 2 tập đoàn phim có cùng một tập (trên SAN). Là nguy cơ tham nhũng rất cao? (Các DBA hoạt động thực tế đặt AutoShrink sai)
gbn

Điều lạ lùng là nếu có tham nhũng thì đó sẽ là một trang trong một tệp duy nhất vì bộ lưu trữ sẽ bị cản trở khi ghi trang vào đĩa. Một cái gì đó như 99.9999% tham nhũng cơ sở dữ liệu là một vấn đề lưu trữ. 1/2 vấn đề còn lại là bộ nhớ kém, phần còn lại là lỗi SQL. Khi cơ sở dữ liệu trở nên lớn hơn (đa TB), điều này trở nên quan trọng hơn, vì việc khôi phục cơ sở dữ liệu đa TB sẽ mất vài ngày.
mrdenny

Tôi sẽ không đúng khi nghĩ rằng nếu các đối tượng hệ thống chỉ có trong nhóm chính thì bạn cần trong tương lai bạn sẽ có thể làm như sau. Tạo x tập tin bổ sung trong một nhóm khác. Tỷ lệ lấp đầy các tệp này bằng cách di chuyển dữ liệu của bạn từ tệp dữ liệu hiện tại của bạn?
Ally Reilly

4

Không chắc chắn tôi hiểu, bạn đang yêu cầu ai đó biện minh cho tiêu chuẩn công ty của bạn? Tôi sẽ nghĩ rằng bất cứ ai viết tài liệu tiêu chuẩn cho công ty của bạn sẽ có thể làm sáng tỏ lý do tại sao điều này sẽ được thực hiện.

Điều đó đang được nói, không có gì lạ khi một số cửa hàng muốn tách dữ liệu hệ thống khỏi dữ liệu người dùng. Và nếu được sử dụng cùng với các bộ đĩa chuyên dụng, bạn có thể gặt hái được một số hiệu suất.


Cảm ơn. Không biện minh cho nó, nhưng giải thích nó. Đây là cùng nhóm DB Engineering, người nói AutoShrink trên. Các bảng hệ thống đã cho một vài MB và dù sao cũng sẽ có trong bộ nhớ, bạn có tin vào bất kỳ hiệu suất nào không?
gbn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.