Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chặn máy chủ SQL là gì?

Chặn SQL Server là một đặc điểm bình thường của hệ thống cơ sở dữ liệu SQL Server. Chặn xảy ra khi SQL Server đang phục vụ các yêu cầu từ nhiều máy khách và các quá trình khác nhau yêu cầu cùng một lúc các tài nguyên. Nếu tài nguyên đang được sử dụng, tài nguyên đó sẽ bị khóa và không khả dụng cho các yêu cầu tiếp theo, do đó, quá trình bị trì hoãn cho đến khi tài nguyên được giải phóng và khả dụng trở lại. Các khối SQL Server thường tự giải quyết mà không ảnh hưởng đáng kể đến hiệu suất. Tuy nhiên, đôi khi, các khối làm cho hiệu suất bị giảm sút vì quy trình ban đầu khóa tài nguyên trong một khoảng thời gian dài trước khi giải phóng nó hoặc vì quy trình ban đầu hoàn toàn không giải phóng tài nguyên, điều này làm cho tài nguyên không thể truy cập được cho đến khi khối được giải quyết thủ công.

Khi một tập hợp tài nguyên bị chặn trong một khoảng thời gian đáng kể, chất lượng hiệu suất giảm đến mức người dùng hệ thống bắt đầu nhận thấy các vấn đề. Những vấn đề này bao gồm những thứ như truy vấn mất nhiều thời gian để chạy hoặc hết thời gian hoặc người dùng không thể lưu màn hình mà họ đã sửa đổi.

Cách khắc phục các khối máy chủ SQL

Giải pháp ngắn hạn để chặn SQL Server là xác định và bỏ chặn giao dịch theo cách thủ công khi bạn nhận thấy hiệu suất đang bị ảnh hưởng tiêu cực bởi một khối hoặc các khối.

Khi bạn đã xác nhận sự hiện diện của khối SQL Server, hãy kiểm tra trình theo dõi hoạt động của SQL Server và loại bỏ các truy vấn đang gây ra nhiều sự cố nhất. Bạn cũng có thể sử dụng các tập lệnh SQL để liên tục theo dõi trạng thái khóa và chặn trên SQL Server. Brent Ozar đề xuất thêm một số bộ đếm hiệu suất dành riêng cho việc chặn để SQL Server sẽ thông báo cho bạn khi bạn đã vượt quá ngưỡng chặn được chỉ định của mình.

Cách ngăn chặn SQL Server Blocks

Sẽ rất hữu ích cho người quản trị cơ sở dữ liệu biết cách sửa một khối SQL Server. Nhưng để duy trì một hệ thống hoạt động hiệu quả, tốt hơn hết là bạn nên biết cách ngăn chặn — hoặc ít nhất là giảm thiểu — sự xuất hiện của việc chặn. Dưới đây là bốn mẹo để giảm thiểu một số kiểu chặn SQL Server phổ biến:

1. Sử dụng các chỉ mục

Việc sử dụng các chỉ mục được phân cụm trong các bảng có mức sử dụng cao giúp giảm chặn bằng cách nhắc trình tối ưu hóa truy vấn chạy tìm kiếm chỉ mục thay vì quét chỉ mục. Khi chỉ bản ghi đang được cập nhật bị khóa, các quy trình tiếp theo có thể phá khóa và có thể hoàn tất.

Điều quan trọng nữa là đảm bảo rằng các câu lệnh UPDATE và DELETE sử dụng các chỉ mục. Các chỉ mục giúp các câu lệnh UPDATE và DELETE giảm số lượng các khóa sửa đổi mà chúng có được bằng cách sử dụng các chỉ mục không hợp nhất hoặc các gợi ý chỉ mục để loại bỏ các khóa.

2. Dọn dẹp các truy vấn của bạn

Một phương pháp hay nhất để tránh các khối SQL Server là chia nhỏ các giao dịch dài thành nhiều giao dịch ngắn hơn. Các truy vấn dài hạn giữ một khóa trong suốt thời gian của giao dịch, làm cho tài nguyên không có sẵn cho các quy trình khác. Việc chia nhỏ các giao dịch dài thành các giao dịch ngắn giúp dữ liệu luôn di chuyển.

Cân nhắc sử dụng điều chỉnh SQL Server để thực hiện các truy vấn hiệu quả nhất có thể. Trình tối ưu hóa truy vấn tốt sẽ viết và viết lại các truy vấn cho đến khi chúng được định cấu hình để giảm số lượng khối có thể làm chậm hiệu suất.

3. Xác định nguyên nhân gốc rễ của việc chặn SQL Server

Theo dõi số liệu hiệu suất theo thời gian là một cách tuyệt vời để tránh bị chặn SQL Server. Bằng cách xác định phiên nào thường xuyên bị chặn và những câu lệnh nào có liên quan, bạn có thể xác định quy trình hành động để loại bỏ nguyên nhân gốc rễ của các khối lặp lại thông qua lập chỉ mục, tối ưu hóa truy vấn hoặc các phương tiện khác.

Một nơi khác để tìm nguyên nhân gốc rễ của việc chặn là khối lượng công việc của hệ thống. Chạy phân tích khối lượng công việc để xác định xem có sự gia tăng hay không. Khối lượng công việc quá nặng sẽ gây ra tình trạng chặn SQL Server khi số lượng truy vấn ngày càng chồng chất để chờ truy cập vào tài nguyên bị khóa. Bạn có thể cần thêm chỉ mục hoặc phân phối khối lượng công việc trên nhiều cơ sở dữ liệu để giải quyết các vấn đề về hiệu suất khối lượng công việc lớn.

4. Luôn cập nhật số liệu thống kê của bạn

Số liệu thống kê lỗi thời có thể kích hoạt các kế hoạch truy vấn không hiệu quả chạy vì kế hoạch không được cập nhật để giải thích cho các thay đổi. SQL Server sẽ khởi chạy thu thập thông tin tìm kiếm để tìm kiếm dữ liệu đã di chuyển hoặc bị thiếu, từ đó sẽ tạo ra các khối.

Cách hiệu quả nhất để giữ cho số liệu thống kê luôn cập nhật là tự động hóa càng nhiều bản cập nhật càng tốt. Trong trường hợp bạn không thể lên lịch cập nhật tự động, hãy nhớ thêm cập nhật thủ công vào danh sách kiểm tra bảo trì theo lịch của bạn để đảm bảo cập nhật được thực hiện thường xuyên.

Chặn SQL Server có thể là một thực tế của cuộc sống DBA, nhưng có những cách để giảm thiểu tác động của nó đến hiệu suất cơ sở dữ liệu SQL Server của bạn. Phá vỡ chu kỳ chặn-bỏ chặn bằng cách thực hiện một số chiến lược đã thảo luận ở trên. Với một chút lập kế hoạch, tối ưu hóa và tự động hóa, bạn có thể giảm sự xuất hiện của việc chặn SQL Server — và trong một số trường hợp, có thể xóa hoàn toàn nó.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để chuyển các tham số Table-Valued từ java sang thủ tục được lưu trữ trên máy chủ sql?

  2. Nhận thông tin cột cho một bảng hoặc dạng xem trong SQL Server (T-SQL:sp_columns)

  3. Định cấu hình SQL Server Luôn BẬT Nhóm khả dụng giữa hai bản sao đồng bộ. Phần 2

  4. Lưu byte [] vào cơ sở dữ liệu SQL Server từ C #

  5. Tên Ràng buộc Mặc định trong SQL Server là gì?