Xin lỗi vì đã lâu, nhưng tôi muốn cung cấp cho bạn càng nhiều thông tin càng tốt để có thể hữu ích cho việc phân tích.
Tôi biết có một số bài viết có vấn đề tương tự, tuy nhiên, tôi đã theo dõi các bài đăng khác nhau này và các thông tin khác có sẵn trên web, nhưng vấn đề vẫn còn.
Tôi gặp vấn đề nghiêm trọng về hiệu năng trong SQL Server đang khiến người dùng phát điên. Vấn đề này kéo dài trong vài năm và cho đến cuối năm 2016 được quản lý bởi một thực thể khác và từ năm 2017 đã được quản lý bởi tôi.
Vào giữa năm 2017, tôi đã có thể giải quyết vấn đề bằng cách làm theo các gợi ý lập chỉ mục được chỉ định bởi Báo cáo Bảng điều khiển Hiệu suất của Microsoft SQL Server 2012. Hiệu quả là ngay lập tức, nó nghe như ma thuật. Bộ xử lý trong những ngày qua hầu như luôn luôn ở mức 100%, trở nên siêu thanh thản và phản hồi của người dùng rất vang dội. Ngay cả kỹ thuật viên ERP của chúng tôi cũng rất vui mừng, vì thường mất 20 phút để có được danh sách nhất định và cuối cùng anh ấy có thể làm điều đó trong vài giây.
Tuy nhiên, theo thời gian, nó dần bắt đầu xấu đi. Tôi tránh tạo ra nhiều chỉ mục hơn, vì sợ rằng quá nhiều chỉ mục sẽ làm giảm hiệu suất. Nhưng đến một lúc nào đó, tôi phải xóa những cái không sử dụng và tạo ra những cái mới mà Bảng điều khiển hiệu suất gợi ý cho tôi. Nhưng không có tác động.
Sự chậm chạp cảm thấy về cơ bản là khi tiết kiệm và tư vấn, trong ERP.
Tôi có Windows Server 2012 R2 dành riêng cho SQL Server 2016 Enterprise (64-bit) với cấu hình sau:
- CPU: CPU Intel Xeon E5-2650 v3 @ 2.30GHz
- Bộ nhớ: 84 GB
- Về lưu trữ, máy chủ có một khối lượng dành riêng cho hệ điều hành, một khối khác dành riêng cho dữ liệu và một khối khác dành riêng cho nhật ký.
- 17 cơ sở dữ liệu
- Người dùng:
- Trong DB lớn nhất được kết nối đồng thời ít nhất 113 người dùng
- Trong một người khác có khoảng 9 người dùng
- Trong hai trong số đó là 3 + 3
- Phần còn lại chỉ có 1 người dùng
- Chúng tôi có một trang web cũng viết cho cơ sở dữ liệu lớn hơn, nhưng việc sử dụng ít thường xuyên hơn và nên có khoảng 20 người dùng.
- Kích thước của DB:
- Cơ sở dữ liệu lớn nhất có 290 GB
- Lớn thứ hai có 100GB
- Lớn thứ ba có 20 GB
- 14 GB thứ tư
- Phần còn lại chỉ hơn 3 GB mỗi
Đây là ví dụ sản xuất, nhưng chúng tôi cũng có một trường hợp phát triển mà tôi tin rằng có thể coi nhẹ mục đích này, bởi vì hầu hết thời gian tôi là người duy nhất kết nối ở đó, nhưng vấn đề này xảy ra liên tục, ngay cả khi tôi không kết nối .
Bộ xử lý hầu như luôn luôn như thế này:
Chúng tôi có thói quen chạy vào ban đêm (không có vấn đề) và một số hoạt động vào ban ngày.
Người dùng kết nối thông qua Remote Desktop với các máy khác được ODBC 32 định cấu hình để truy cập SQL Server.
Trung tâm dữ liệu nơi đặt máy chủ có 100/100 Mbps, cũng như nơi tôi đang ở. Hầu hết các trang web được liên kết bởi MPLS và các trang khác bằng IPSec (từ FO đến 4G). Các nhà cung cấp thực hiện nhiều phân tích và các mạch là ok.
Tỷ lệ truy cập bộ nhớ cache là 99% (cả Yêu cầu người dùng và Phiên người dùng)
Sự chờ đợi trông như thế này:
Tôi đã thu thập dữ liệu với Perfmon và tôi có kết quả nếu nó giúp phân tích của bạn - cá nhân tôi không nhận được bất kỳ kết luận nào từ phân tích.
Tôi tin tưởng vào sự hỗ trợ của bạn trong việc giải quyết vấn đề này, sẵn sàng cung cấp thông tin mà bạn cho là cần thiết cho việc giải quyết.
Cảm ơn rât nhiều.
Đây là sp_blitz markdown (Tôi đã thay thế tên công ty bằng bút danh):
Ưu tiên 1: Độ tin cậy :
DBCC CHECKDB cuối cùng tốt hơn 2 tuần tuổi
- bậc thầy
mô hình - CHECKDB thành công lần cuối: 2018/02/07 15: 04: 26.560
msdb - CHECKDB thành công lần cuối: 2018/02/07 15: 04: 27.740
Ưu tiên 10: Hiệu suất :
CPU w / Số lẻ của lõi
Nút 0 có 5 lõi được gán cho nó. Đây là một cấu hình NUMA thực sự xấu.
Nút 1 có 5 lõi được gán cho nó. Đây là một cấu hình NUMA thực sự xấu.
Ưu tiên 20: Cấu hình tệp :
- TempDB trên C Drive tempdb - Cơ sở dữ liệu tempdb có các tệp trên ổ C. TempDB thường xuyên phát triển một cách khó lường, khiến máy chủ của bạn có nguy cơ hết dung lượng ổ C và gặp sự cố nghiêm trọng. C cũng thường chậm hơn nhiều so với các ổ đĩa khác, vì vậy hiệu năng có thể bị ảnh hưởng.
Ưu tiên 50: Độ tin cậy :
- Lỗi được ghi gần đây trong Dấu vết mặc định
- master - 2018-03-07 08: 43: 11.72 Lỗi đăng nhập: 17892, Mức độ nghiêm trọng: 20, Trạng thái: 1. 2018-03-07 08: 43: 11.72 Đăng nhập Đăng nhập thất bại khi đăng nhập 'example_user' do thực thi kích hoạt. [KHÁCH HÀNG: IPADDR]
(lưu ý: nhiều lỗi như thế này do trình kích hoạt được kích hoạt giới hạn các phiên của người dùng - đối với kiểm soát sử dụng cấp phép ERP)
Xác minh trang không tối ưu
DATABASE_A - Cơ sở dữ liệu [DATABASE_A] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_B - Cơ sở dữ liệu [DATABASE_B] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_C - Cơ sở dữ liệu [DATABASE_C] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_D - Cơ sở dữ liệu [DATABASE_D] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_E - Cơ sở dữ liệu [DATABASE_E] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_F - Cơ sở dữ liệu [DATABASE_F] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_G - Cơ sở dữ liệu [DATABASE_G] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_H - Cơ sở dữ liệu [DATABASE_H] KHÔNG CÓ để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_I - Cơ sở dữ liệu [DATABASE_I] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_Z - Cơ sở dữ liệu [DATABASE_Z] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_K - Cơ sở dữ liệu [DATABASE_K] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_J - Cơ sở dữ liệu [DATABASE_J] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_L - Cơ sở dữ liệu [DATABASE_L] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_M - Cơ sở dữ liệu [DATABASE_M] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_O - Cơ sở dữ liệu [DATABASE_O] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_P - Cơ sở dữ liệu [DATABASE_P] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_Q - Cơ sở dữ liệu [DATABASE_Q] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_R - Cơ sở dữ liệu [DATABASE_R] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_S - Cơ sở dữ liệu [DATABASE_S] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_T - Cơ sở dữ liệu [DATABASE_T] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_U - Cơ sở dữ liệu [DATABASE_U] KHÔNG CÓ để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_V - Cơ sở dữ liệu [DATABASE_V] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
DATABASE_X - Cơ sở dữ liệu [DATABASE_X] có KHÔNG để xác minh trang. SQL Server có thể khó nhận biết và phục hồi hơn từ tham nhũng lưu trữ. Thay vào đó hãy xem xét sử dụng CHECKSUM.
Remote DAC bị vô hiệu hóa - Truy cập từ xa vào Kết nối quản trị viên chuyên dụng (DAC) không được bật. Bộ xử lý có thể giúp xử lý sự cố từ xa dễ dàng hơn nhiều khi SQL Server không phản hồi.
Ưu tiên 50: Thông tin máy chủ :
- Khởi tạo tệp tức thì không được bật - Cân nhắc bật IFI để khôi phục nhanh hơn và tăng trưởng tệp dữ liệu.
Ưu tiên 100: Hiệu suất :
Yếu tố điền thay đổi
DATABASE_A - Cơ sở dữ liệu [DATABASE_A] có 417 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_B - Cơ sở dữ liệu [DATABASE_B] có 318 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_C - Cơ sở dữ liệu [DATABASE_C] có 346 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_D - Cơ sở dữ liệu [DATABASE_D] có 663 đối tượng với hệ số điền = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_E - Cơ sở dữ liệu [DATABASE_E] có 335 đối tượng với hệ số điền = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_F - Cơ sở dữ liệu [DATABASE_F] có 1705 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_G - Cơ sở dữ liệu [DATABASE_G] có 671 đối tượng với hệ số điền = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_H - Cơ sở dữ liệu [DATABASE_H] có 2364 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_I - Cơ sở dữ liệu [DATABASE_I] có 1658 đối tượng với hệ số điền = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_Z - Cơ sở dữ liệu [DATABASE_Z] có 673 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_K - Cơ sở dữ liệu [DATABASE_K] có 312 đối tượng với hệ số điền = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_J - Cơ sở dữ liệu [DATABASE_J] có 864 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_L - Cơ sở dữ liệu [DATABASE_L] có 1170 đối tượng với hệ số điền = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_M - Cơ sở dữ liệu [DATABASE_M] có 382 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_O - Cơ sở dữ liệu [DATABASE_O] có 356 đối tượng với hệ số điền = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
msdb - Cơ sở dữ liệu [msdb] có 8 đối tượng với hệ số điền = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_P - Cơ sở dữ liệu [DATABASE_P] có 291 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_Q - Cơ sở dữ liệu [DATABASE_Q] có 343 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_R - Cơ sở dữ liệu [DATABASE_R] có 2048 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_S - Cơ sở dữ liệu [DATABASE_S] có 325 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_T - Cơ sở dữ liệu [DATABASE_T] có 322 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_U - Cơ sở dữ liệu [DATABASE_U] có 351 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_V - Cơ sở dữ liệu [DATABASE_V] có 312 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
DATABASE_X - Cơ sở dữ liệu [DATABASE_X] có 352 đối tượng với hệ số lấp đầy = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
tempdb - Cơ sở dữ liệu [tempdb] có 2 đối tượng với hệ số điền = 70%. Điều này có thể gây ra vấn đề về hiệu năng bộ nhớ và lưu trữ, nhưng cũng có thể ngăn chặn việc chia trang.
Nhiều kế hoạch cho một truy vấn - 20763 kế hoạch có mặt cho một truy vấn duy nhất trong bộ đệm của kế hoạch - có nghĩa là chúng tôi có thể có vấn đề về tham số hóa.
Kích hoạt máy chủ được kích hoạt - Kích hoạt máy chủ [Connection_limit_trigger] được bật. Hãy chắc chắn rằng bạn hiểu những gì kích hoạt đang làm - công việc càng ít thì càng tốt.
Thủ tục lưu trữ với RECOMPILE
master - [master]. [dbo]. [sp_AllNightLog] có VỚI RECOMPILE trong mã thủ tục được lưu trữ, điều này có thể làm tăng mức sử dụng CPU do biên dịch lại mã liên tục.
master - [master]. [dbo]. [sp_AllNightLog_Setup] có RECOMPILE trong mã thủ tục được lưu trữ, điều này có thể làm tăng mức sử dụng CPU do biên dịch lại mã liên tục.
Ưu tiên 110: Hiệu suất :
Bảng hoạt động không có chỉ mục cụm
DATABASE_A - Cơ sở dữ liệu [DATABASE_A] có rất nhiều - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
DATABASE_B - Cơ sở dữ liệu [DATABASE_B] có nhiều đống - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
DATABASE_C - Cơ sở dữ liệu [DATABASE_C] có nhiều đống - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
DATABASE_E - Cơ sở dữ liệu [DATABASE_E] có nhiều đống - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
DATABASE_F - Cơ sở dữ liệu [DATABASE_F] có rất nhiều - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
DATABASE_H - Cơ sở dữ liệu [DATABASE_H] có nhiều đống - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
DATABASE_I - Cơ sở dữ liệu [DATABASE_I] có nhiều đống - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
DATABASE_K - Cơ sở dữ liệu [DATABASE_K] có nhiều đống - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
DATABASE_O - Cơ sở dữ liệu [DATABASE_O] có nhiều đống - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
DATABASE_Q - Cơ sở dữ liệu [DATABASE_Q] có nhiều đống - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
DATABASE_S - Cơ sở dữ liệu [DATABASE_S] có nhiều đống - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
DATABASE_T - Cơ sở dữ liệu [DATABASE_T] có nhiều đống - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
DATABASE_U - Cơ sở dữ liệu [DATABASE_U] có nhiều đống - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
DATABASE_V - Cơ sở dữ liệu [DATABASE_V] có nhiều đống - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
DATABASE_X - Cơ sở dữ liệu [DATABASE_X] có nhiều đống - các bảng không có chỉ mục được nhóm - đang được truy vấn tích cực.
Ưu tiên 150: Hiệu suất :
(Lưu ý: Nany khuyên ở đây, nhưng tôi không thể đưa chúng vào vì giới hạn của các ký tự. Nếu có cách khác để chia sẻ, vui lòng cho biết.)