KIỂM TRA DBCC mất hơn 15 phút để chạy trên một bảng trống


7

Tôi có một cơ sở dữ liệu trong đó DBCC KIỂM TRA trên một số bảng nhỏ hoặc trống mất hơn 15 phút để chạy. Khi nó kết thúc không có lỗi hoặc lỗi. Hiệu suất trên mọi thứ khác trên máy chủ ở dạng rất chấp nhận được. Không có gì khác chạy cùng một lúc.

Tôi cũng đã thử DBCC CLEANTABLE và cập nhật số liệu thống kê với fullscan.

Tôi đang sử dụng SQL Server 2016 Enterprise Edition (13.0.5201.2)

Bảng ví dụ:

CREATE TABLE [Schema1].[Table1](
    [col1] [int] NOT NULL,
    [col2] [nvarchar](100) NOT NULL,
    [col3] [xml] NOT NULL,
 CONSTRAINT [PK_1] PRIMARY KEY CLUSTERED 
(
    [col1] ASC,
    [col2] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

Câu trả lời:


6

Cuối cùng tôi đã mở một sự cố với Microsoft và nó đã được xác định rằng sys.sysrscols (chỉ có thể được truy cập qua DAC) có hơn 200 triệu hàng. Sau khi họ thực hiện đánh giá, nó đã được tìm thấy như một phần của DBCC SQL Server luôn kiểm tra trên các bảng hệ thống ngay cả đối với DBCC CHECKTABLE. Từ hướng dẫn sử dụng DBCC CHECKTABLE :

Kiểm tra tính toàn vẹn luôn được thực hiện trên tất cả các chỉ mục bảng hệ thống.

Hiểu biết của tôi là sys.sysrscols thực hiện một số theo dõi cột và lý do cho kích thước lớn là một số bảng (200+) chúng tôi có hơn 2.000 phân vùng và 163 cột. Hầu như tất cả chúng đều là các bàn làm việc tạm thời nên bị ứng dụng bỏ nhưng không được. Tôi xóa chúng đi và quá trình trở lại thời gian phản hồi bình thường cho một bảng trống dưới 1 phút.

Họ cũng lưu ý rằng nó được liệt kê trong tài liệu rằng các phân vùng có thể ảnh hưởng đến kiểm tra DBCC. Từ các bảng và chỉ mục được phân vùng :

Các lệnh của DBCC

Với số lượng phân vùng lớn hơn, các lệnh DBCC có thể mất nhiều thời gian hơn để thực thi khi số lượng phân vùng tăng lên.


1
Mã mẫu OP hiển thị bảng là ON [PRIMARY]. Là bảng thực tế trên một sơ đồ phân vùng? Hoặc bạn có thể làm rõ rằng sự tồn tại của bảng phân vùng đã gây ra sự chậm lại CHECKTABLE(tableY)?
Peter Vandivier

@PeterVandivier Ví dụ trên được lấy từ một trong những bảng thực có 0 hàng đang chạy dài. Tuy nhiên đây không phải là cái bàn gây ra tác động vì cái bàn đó không trống. Bảng có phân vùng được đề cập có hơn 2000 phân vùng nhưng cũng có một số lượng lớn các cột mà tôi không đưa vào câu trả lời của mình. Điều này được kết hợp bởi số lượng lớn các bảng tạm thời được tạo trên cùng sơ đồ phân vùng này với cùng số lượng lớn các hàng ảnh hưởng đến kích thước của sys.sysrscols.
Russ960

1
Cảm ơn bạn về thông tin! Tôi hỏi bởi vì được mô tả trong câu trả lời của bạn, tôi không thể sao chép hành vi (liên kết) như tôi đã giải thích từ câu trả lời. Bạn có đủ tử tế để xem ý chính và nhận xét về những gì tôi có thể đã giải thích sai? Hoặc có lẽ sửa đổi từ ngữ của bạn để làm rõ? Tôi cũng vui lòng mời bạn thảo luận về thời gian trò chuyện
Peter Vandivier
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.