Truy vấn chậm đối với một số người dùng nhất định


11

Tôi có một vài truy vấn được gọi từ ứng dụng web C # .NET luôn nhanh đối với tôi (Tôi là quản trị viên cục bộ trên SQL Server) nhưng đối với một nhóm người dùng (nhóm miền có quyền yêu cầu), truy vấn rất chậm điểm nó xuất hiện trong ứng dụng.

Điều gì sẽ khiến cùng một truy vấn chạy khác nhau cho những người dùng khác nhau?

Thêm thông tin:

  • Truy vấn là SQL nội tuyến trong mã C #, không phải là thủ tục được lưu trữ
  • Ứng dụng sử dụng xác thực tên miền và cả người dùng và bản thân tôi đều chạy truy vấn thông qua ứng dụng
  • Có vẻ như vấn đề là các kế hoạch khác nhau và một kế hoạch đã được lưu trữ, vì vậy đó là lý do tại sao nó khác nhau đối với những người dùng khác nhau. Một cái gì đó đang ảnh hưởng đến bộ đệm vì bây giờ truy vấn của tôi chậm qua ứng dụng và nhanh trong SQL Server Management Studio.

2
Kiểm tra các câu hỏi sau đây . Bạn có thể thấy bạn đang ở trong tình trạng tương tự. Trước tiên hãy nói thử cái nàycái kia .
Mary

3
Các loại chờ (sys.dm_os_waiting_t Nhiệm vụ) trên các truy vấn chậm, và các kế hoạch thực hiện thực tế của mỗi loại (nhanh, chậm của chúng) là gì?
Thomas Stringer

2
Đồng ý với ý kiến ​​trước. Suy nghĩ đầu tiên của tôi sẽ là thông số đánh hơi quá. Kiểm tra xem các kế hoạch có khác nhau không nên là bước đầu tiên.
Martin Smith

4
Nếu các tham số giống nhau (tôi cho rằng đó là ý nghĩa của exact same querynó), thì đó không phải là thông số đánh hơi (người dùng có kế hoạch xấu cho (các) tham số sai), nhưng người dùng đang nhận các gói khác nhau cho cùng một tham số (S). Có thể là do các cài đặt như quoted_identifierarithabort, mà bạn có thể so sánh sys.dm_exec_sessionscho người dùng nhanh và người dùng chậm hoặc có thể là do họ có các lược đồ và đối tượng mặc định khác nhau được tham chiếu mà không có tiền tố lược đồ. Thông số đánh hơi vẫn có thể được tham gia (do đó tại sao một trong số họ có kế hoạch xấu).
Aaron Bertrand

1
RE: Chỉnh sửa của bạn bạn có lược đồ mặc định giống như những người dùng khác không? Bạn đã nắm bắt được các kế hoạch thực hiện để chạy chậm và nhanh chưa?
Martin Smith

Câu trả lời:


5

Nếu các tham số là như nhau (Tôi giả sử đó là những gì có nghĩa là exact same querynó), thì đó không phải là thông số đánh hơi (người dùng có kế hoạch xấu cho (các) tham số sai), nhưng người dùng đang nhận các gói khác nhau cho cùng một tham số (S). Có thể là do các cài đặt như quoted_identifierarithabort, mà bạn có thể so sánh sys.dm_exec_sessionscho người dùng nhanh và người dùng chậm hoặc có thể là do họ có các lược đồ và đối tượng mặc định khác nhau được tham chiếu mà không có tiền tố lược đồ. Thông số đánh hơi vẫn có thể được tham gia (do đó tại sao một trong số họ có kế hoạch xấu).


3

Tôi đã thấy hai lý do cho việc này: 1, thông số đánh hơi 2, cài đặt kết nối là khác nhau. Nếu bạn chạy whoisactive , nó sẽ hiển thị cho bạn các thuộc tính kết nối khác nhau. Tôi thực sự có một bài viết trên blog này, nhưng tôi đã không làm sạch thông tin cụ thể của công ty từ nó. (tôi cũng chưa kích hoạt blog của mình);)


0

Thử: Chỉ định lược đồ trên mỗi tham chiếu EXEC và bảng. Ví dụ: EXEC dbo.MyProc

Có thể có xung đột (như Martin Smith gợi ý - 'cùng lược đồ mặc định'?) Hoặc biên dịch lại


0

Điều này dường như là một lỗi trong SQL Server. Tôi gặp lỗi này với SQL Server 2008. Tôi chưa thử nghiệm các phiên bản mới. Tôi có thể đăng nhập với tư cách quản trị viên và chạy truy vấn này và nhận được phản hồi sau 0 giây:

select ROUTINE_NAME from INFORMATION_SCHEMA.ROUTINES ORDER BY ROUTINE_NAME

Sau đó, tôi đăng nhập với tư cách người dùng có ít quyền hơn, chạy cùng một truy vấn chính xác và phản hồi mất 45 giây.

Điều này là nhất quán hơn và hơn. Nếu tôi nảy qua lại giữa hai cửa sổ truy vấn của mình, một cho quản trị viên và một cho người không phải quản trị viên, người không phải quản trị viên luôn mất khoảng 45 giây và quản trị viên mất 0 giây.


Như được hỏi trong các nhận xét cho câu hỏi - cả hai người dùng có cùng một cơ sở dữ liệu mặc định và các truy vấn có được thực hiện trong cùng một cơ sở dữ liệu không? Và, bạn có thể chỉ ra một số loại tài liệu nói rằng đây là một lỗi, hoặc đó là ý kiến ​​của bạn? Không nói bạn sai, chỉ tìm kiếm một cái gì đó ngoài giai thoại.
RDFozz

Vấn đề bạn đã xác định trong câu trả lời của mình dường như không thể lặp lại trên SQL Server 2008. select ROUTINE_NAME from INFORMATION_SCHEMA.ROUTINES ORDER BY ROUTINE_NAMELuôn trả về dữ liệu ngay lập tức cho thông tin đăng nhập không phải SA mà không có quyền được giải thích.
Max Vernon
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.