Một trong những khách hàng của chúng tôi vừa nâng cấp lên một máy chủ mới.
Đối với một thủ tục được lưu trữ cụ thể vào lần đầu tiên bạn thực hiện nó, sẽ mất hơn ba phút để chạy. Các lần chạy tiếp theo là ít hơn 1 giây.
Điều này khiến tôi tin rằng ba phút ban đầu chủ yếu được đưa lên để tính toán kế hoạch thực hiện. Các lần chạy tiếp theo sau đó chỉ cần sử dụng gói bộ nhớ cache và chạy ngay lập tức.
Trên cơ sở dữ liệu thử nghiệm của chúng tôi, sẽ mất khoảng 5 giây để tính toán kế hoạch cho cùng một quy trình.
Tôi không thấy bất cứ điều gì khủng khiếp trong bản thân kế hoạch - mặc dù tôi không tưởng tượng được nó có liên quan vì kế hoạch cho thấy mất bao lâu để chạy truy vấn, không tự tính toán.
Máy chủ là một lõi 16 với bộ nhớ 24 gb. Không có CPU nặng hoặc tải bộ nhớ xảy ra.
Cái gì có thể gây ra một phép tính chậm như vậy chỉ trên một cơ sở dữ liệu cụ thể?
Những bước tôi có thể thực hiện để tìm ra nguyên nhân của vấn đề?
Biên tập
Vì vậy, tôi đã quản lý để truy cập vào máy chủ và đã chạy truy vấn với SET SHOWPLAN_XML ON .
Tôi có thể xác nhận rằng CompileTime cho truy vấn đang chiếm 99% thời gian thực hiện truy vấn. Các StatementOptmEarlyAbortReason là "TimeOut" , trên cơ sở dữ liệu thử nghiệm của chúng tôi với một bản sao của cơ sở dữ liệu của họ lý do được MemoryLimitExceeded.
StatementOptmEarlyAbortReason
gì?