KB2634571 - Các cải tiến đối với lệnh DBCC CHECKDB có thể giúp bạn tăng hiệu năng khi sử dụng tùy chọn PHYSICAL_ONLY

Áp dụng cho
SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Express with Advanced Services SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Service Pack 3 SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Web SQL Server 2008 Workgroup SQL Server 2008 Service Pack 2 SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Enterprise Core SQL Server 2012 Express SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core

Microsoft phân phối các bản sửa lỗi Microsoft SQL Server 2008 R2, SQL Server 2008 R2 SP1 và SQL Server 2008 như một tệp có thể tải xuống. Vì các bản sửa lỗi được tích lũy, mỗi bản phát hành mới đều chứa tất cả các bản sửa lỗi nóng và tất cả bản sửa lỗi bảo mật đã được tích hợp trong bản phát hành bản sửa lỗi SQL Server 2008 R2, SQL Server 2008 R2 SP1 và SQL Server 2008 trước đó.

Giới thiệu

Lệnh DBCC CHECKDB cân bằng nhu cầu giữa hiệu năng và tài nguyên. Do đó, theo mặc định, lệnh DBCC CHECKDB có thể không tối đa hóa mức sử dụng tài nguyên khi chạy kiểm tra tính nhất quán cho cơ sở dữ liệu.

Ví dụ: lệnh DBCC CHECKDB có thể không tối đa hóa mức sử dụng I/O của đĩa khi chạy kiểm tra tính nhất quán cho cơ sở dữ liệu.

Giải pháp

Thông tin cập nhật tích lũy

SQL Server 2008 Gói Dịch vụ 2

Bản sửa lỗi cho sự cố này được phát hành lần đầu trong Bản cập nhật Tích lũy 9 dành cho SQL Server 2008 Gói Dịch vụ 2. Để biết thêm thông tin về gói cập nhật tích lũy này, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:

2673382 Gói cập nhật tích lũy 9 cho SQL Server 2008 Gói Dịch vụ 2

                 Lưu ý Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả các bản hotfix và tất cả bản sửa lỗi bảo mật có trong bản phát hành sửa lỗi SQL Server 2008 trước đó. Chúng tôi khuyên bạn nên cân nhắc áp dụng bản phát hành bản sửa lỗi gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy xem bài viết sau đây trong Cơ sở Kiến thức Microsoft:

2402659 Các bản dựng SQL Server 2008 được phát hành sau khi SQL Server 2008 Gói Dịch vụ 2 được phát hành

Các hotfix Microsoft SQL Server 2008 được tạo cho các gói dịch vụ SQL Server cụ thể. Bạn phải áp dụng hotfix SQL Server 2008 Gói Dịch vụ 2 cho cài đặt SQL Server 2008 Gói Dịch vụ 2. Theo mặc định, mọi hotfix được cung cấp trong gói dịch vụ SQL Server sẽ được đưa vào gói dịch vụ SQL Server tiếp theo.

SQL Server 2008 Gói Dịch vụ 3

Bản sửa lỗi cho sự cố này được phát hành lần đầu trong Bản cập nhật tích lũy 4 dành cho SQL Server 2008 Gói Dịch vụ 3. Để biết thêm thông tin về gói cập nhật tích lũy này, hãy xem bài viết sau trong Cơ sở Kiến thức Microsoft:

2673383 Gói cập nhật tích lũy 4 cho SQL Server 2008 Gói Dịch vụ 3

                 Lưu ý Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả các bản hotfix và tất cả bản sửa lỗi bảo mật có trong bản phát hành sửa lỗi SQL Server 2008 trước đó. Microsoft khuyên bạn nên cân nhắc áp dụng bản phát hành bản sửa lỗi mới nhất có chứa hotfix này. Để biết thêm thông tin, hãy xem bài viết sau đây trong Cơ sở Kiến thức Microsoft:

2629969 Các bản dựng SQL Server 2008 được phát hành sau khi SQL Server 2008 Gói Dịch vụ 3 được phát hành

Các hotfix Microsoft SQL Server 2008 được tạo cho các gói dịch vụ SQL Server cụ thể. Bạn phải áp dụng hotfix SQL Server 2008 Gói Dịch vụ 3 cho cài đặt SQL Server 2008 Gói Dịch vụ 3. Theo mặc định, mọi hotfix được cung cấp trong gói dịch vụ SQL Server sẽ được đưa vào gói dịch vụ SQL Server tiếp theo.

Gói cập nhật tích lũy 11 cho SQL Server 2008 R2

Bản sửa lỗi cho sự cố này được phát hành lần đầu trong Bản cập nhật tích lũy 11. Để biết thêm thông tin về cách tải gói cập nhật tích lũy này cho SQL Server 2008 R2, hãy xem bài viết sau đây trong Cơ sở Kiến thức Microsoft:

2633145 Gói cập nhật tích lũy 11 cho SQL Server 2008 R2

                 Lưu ý Do các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả các bản sửa lỗi nóng và toàn bộ bản sửa lỗi bảo mật có trong bản phát hành bản sửa lỗi SQL Server 2008 R2 trước đó. Chúng tôi khuyên bạn nên cân nhắc áp dụng bản phát hành bản sửa lỗi gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy xem bài viết sau đây trong Cơ sở Kiến thức Microsoft:

981356 Các bản dựng SQL Server 2008 R2 được phát hành sau khi SQL Server 2008 R2 được phát hành

Gói cập nhật tích lũy 4 cho SQL Server 2008 R2 SP1

Bản sửa lỗi cho sự cố này được phát hành lần đầu trong Cập nhật Tích lũy 4. Để biết thêm thông tin về cách lấy gói cập nhật tích lũy này cho SQL Server 2008 R2 SP1, hãy xem bài viết sau trong Cơ sở Kiến thức Microsoft:

2633146 Gói cập nhật tích lũy 4 cho SQL Server 2008 R2 SP1

                 Lưu ý Vì các bản dựng mang tính tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả bản hotfix và toàn bộ bản sửa lỗi bảo mật có trong bản phát hành bản sửa lỗi SQL Server 2008 R2 SP1 trước đó. Chúng tôi khuyên bạn nên cân nhắc áp dụng bản phát hành bản sửa lỗi gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy xem bài viết sau đây trong Cơ sở Kiến thức Microsoft:

2567616 Các bản dựng SQL Server 2008 R2 được phát hành sau khi SQL Server 2008 R2 SP1 được phát hành

SQL Server 2012

SQL Server 2012 chứa các thay đổi về mã cho những bản sửa lỗi này. Cả cờ theo dõi 2562 và 2549 như mô tả bên dưới đều áp dụng cho SQL Server 2012. Tuy nhiên, bản sửa lỗi để giảm sự tranh chấp trên chốt DBCC_MULTIOBJECT_SCANNER không yêu cầu cờ theo dõi 2562 trong SQL Server 2012. Những thay đổi đó đã được đưa vào theo mặc định trong SQL Server 2012.

Xem thêm thông tin

Bản cập nhật tích lũy này giới thiệu hai cờ theo dõi để tối đa hóa tốt hơn mức sử dụng tài nguyên I/O đĩa khi người dùng thực thi lệnh DBCC CHECKDB . Mặc dù những cải tiến này chỉ nhắm đến tùy chọn PHYSICAL_ONLY , nhưng chúng cũng có thể cải thiện hiệu suất tổng thể của các lệnh DBCC CHECKDB không sử dụng tùy chọn PHYSICAL_ONLY .

Cờ theo dõi 2562

Cờ theo dõi này bao gồm các thay đổi sau:

  • Chạy lệnh DBCC CHECKDB trong một "lô" đơn lẻ bất kể số chỉ mục trong cơ sở dữ liệu. Theo mặc định, lệnh DBCC CHECKDB cố gắng giảm thiểu tài nguyên tempdb bằng cách giới hạn số chỉ mục hoặc "dữ kiện" mà nó tạo ra bằng cách sử dụng khái niệm "lô". Cờ theo dõi này buộc tất cả quy trình xử lý vào một lô.
  • Cải thiện quy trình xử lý nội bộ để xác định trang nào cần đọc từ cơ sở dữ liệu. Điều này làm giảm sự tranh chấp trên chốt DBCC_MULTIOBJECT_SCANNER .

Một hiệu ứng của việc sử dụng cờ theo dõi này là yêu cầu dung lượng cho tempdb có thể tăng. Tempdb có thể tăng lên tới 5% hoặc hơn cơ sở dữ liệu người dùng đang được xử lý bằng lệnh DBCC CHECKDB . Do đó, chúng tôi khuyên bạn nên kích cỡ trước tempdb tối thiểu 5 phần trăm kích thước cơ sở dữ liệu khi sử dụng cờ theo dõi này để tránh tăng kích thước tự động, điều này có thể làm chậm hiệu suất của lệnh DBCC CHECKDB .

Lưu ý Cờ theo dõi 2562 là cờ theo dõi cấp phiên. Bạn có thể bật tính năng này ở mức phiên.

Cờ theo dõi 2549

Lệnh DBCC CHECKDB xây dựng một danh sách nội bộ gồm các trang để đọc trên mỗi ổ đĩa duy nhất trên toàn bộ các tệp cơ sở dữ liệu. Logic này xác định các ổ đĩa duy nhất dựa trên tên ổ đĩa của tên tệp vật lý của từng tệp. Nếu các đĩa cơ sở có thực sự là duy nhất khi có tên ổ đĩa hay không, lệnh DBCC CHECKDB sẽ coi các đĩa này như một đĩa. Khi cờ theo dõi này được bật, mỗi tệp cơ sở dữ liệu được giả định nằm trên một ổ đĩa duy nhất. Không sử dụng cờ theo dõi này trừ khi bạn biết rằng mỗi tệp được dựa trên một đĩa vật lý duy nhất.

Lưu ý Cờ theo dõi 2549 là cờ theo dõi toàn cầu. Để bật, bạn phải sử dụng nó làm tham số khởi động hoặc sử dụng DBCC TRACEON (2549,-1).

Mặc dù các cờ theo dõi này cải thiện hiệu năng của các lệnh DBCC CHECKDB vốn nhắm mục tiêu sử dụng tùy chọn DBCC CHECKDB , nhưng một số người dùng có thể không thấy bất kỳ cải tiến nào về hiệu suất. Mặc dù các cờ theo dõi này cải thiện việc sử dụng tài nguyên I/O của ổ đĩa nhưng hiệu suất cơ bản của tài nguyên đĩa có thể giới hạn hiệu suất tổng thể của lệnh DBCC CHECKDB .

Hãy lưu ý những hạn chế sau đây:

  • Những cải tiến hiệu năng không được thiết kế để cải thiện hiệu suất khi bạn sử dụng tùy chọn sửa chữa .
    Ví dụ: những cải tiến về hiệu năng không được thiết kế để cải thiện hiệu suất khi bạn sử dụng tùy chọn REPAIR_ALLOW_DATA_LOSS .
  • Các cải tiến không ảnh hưởng đến lệnh DBCC CHECKALLOC .
  • Những cải tiến này có thể giúp tăng hiệu suất của lệnh DBCC CHECKTABLE cho các chỉ mục có nhiều trang. Tuy nhiên, các cải tiến không nhằm mục đích cải thiện hiệu năng của lệnh DBCC CHECKTABLE .

Trạng thái

Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".