Giới thiệu
Bài viết này là một đánh giá ngắn về việc bảo trì theo lịch trình chính với cơ sở dữ liệu của hệ thống thông tin 24/7 không có thời gian chết, cũng như các phương pháp thực thi chúng trong MS SQL Server.
Mọi nhận xét và cập nhật cho bài viết đều được đánh giá cao.
Bảo trì theo lịch trình
Có một đợt bảo trì theo lịch trình sau đây mà tôi muốn chỉ ra:
- Sao lưu theo lịch trình với xác minh thêm mà không cần khôi phục
- Khôi phục theo lịch trình các bản sao lưu để xác minh hiệu suất của chúng
- Phân tích thiết bị lưu trữ dữ liệu có chứa hệ thống và tất cả các cơ sở dữ liệu cần thiết
- Kiểm tra theo lịch trình các dịch vụ được yêu cầu
- Tối ưu hóa hiệu suất hệ thống theo lịch trình
- Bảo trì tính toàn vẹn dữ liệu theo lịch trình
- Bảo trì xác thực dữ liệu theo lịch trình
Ba điểm đầu tiên là quan trọng nhất, vì chúng cung cấp khả năng khôi phục hệ thống sau nhiều lỗi khác nhau. Tuy nhiên, tôi cũng khuyên bạn nên thực hiện ít nhất ba điểm để người dùng có thể làm việc thoải mái (do đó, tất cả các truy vấn phải được thực thi nhanh chóng) và để dữ liệu phải được xác thực trong tất cả các hệ thống báo cáo.
Để tự động hóa việc bảo trì theo lịch trình, có thể sắp xếp các bộ phận của nó trong Trình lập lịch trình của Tác nhân hoặc Windows.
Điểm thứ sáu dựa trên lệnh CHECKDB.
Điểm thứ bảy được thực hiện đối với vùng miền được sử dụng trong hệ thống thông tin.
Tôi sẽ nói chi tiết về năm điểm đầu tiên.
Sao lưu đã lên lịch có xác minh thêm mà không cần khôi phục
Vì có rất nhiều bài viết về chủ đề này, cần lưu ý rằng cần phải thường xuyên thực hiện bảo trì theo lịch trình này trên một máy chủ dự phòng, thay vì trên máy chủ chính. Máy chủ sao lưu này phải chứa dữ liệu cập nhật (ví dụ:dữ liệu đã được nhân rộng). Ngoài ra, bạn cần sao lưu tất cả cơ sở dữ liệu hệ thống (ngoại trừ tempdb) trên mỗi phiên bản của MS SQL Server.
Khi sao lưu không thành công hoặc quá trình quét sao lưu xác định sự cố, cần phải báo cáo thông tin này cho quản trị viên. Ví dụ:bạn có thể gửi email cho họ.
Điều quan trọng là xác định chiến lược sao lưu, chiến lược này sẽ trả lời các câu hỏi sau:
- Bao lâu và khi nào chúng ta nên sao lưu dữ liệu (đầy đủ, khác biệt và nhật ký giao dịch)?
- Chúng tôi nên xóa các bản sao lưu trong bao lâu và khi nào?
Khôi phục theo lịch trình các bản sao lưu để xác minh hiệu suất của chúng
Tôi khuyên bạn nên thực hiện quy trình này trên máy chủ dự phòng với các tiện ích của bên thứ ba hoặc KHÔI PHỤC lệnh.
Khi khôi phục sao lưu không thành công, cần phải báo cáo thông tin này cho quản trị viên. Ví dụ:bạn có thể gửi email cho họ.
Ngoài ra, cần khôi phục các bản sao lưu của cơ sở dữ liệu hệ thống. Để thực hiện việc này, bạn cần khôi phục chúng dưới dạng cơ sở dữ liệu người dùng thông thường với tên khác với tên của cơ sở dữ liệu hệ thống.
Phân tích các thiết bị lưu trữ dữ liệu có chứa hệ thống và tất cả các cơ sở dữ liệu cần thiết
Bạn cần phân tích xem mỗi cơ sở dữ liệu chiếm bao nhiêu dung lượng, kích thước tệp thay đổi như thế nào và kích thước dung lượng trống trong toàn bộ thiết bị lưu trữ thay đổi như thế nào. Ví dụ:bạn có thể thực hiện một phần tác vụ này với việc thu thập dữ liệu tự động về các tệp cơ sở dữ liệu và ổ đĩa logic của hệ điều hành trong MS SQL Server.
Bạn có thể thực hiện việc kiểm tra này hàng ngày và sau đó gửi kết quả. Như thường lệ, bạn có thể gửi chúng đến email.
Cũng cần theo dõi cơ sở dữ liệu hệ thống để bạn đảm bảo rằng mọi thứ hoạt động chính xác.
Ngoài ra, điều quan trọng là phải kiểm tra các thiết bị lưu trữ để kiểm tra xem có bất kỳ khấu hao hoặc các thành phần xấu nào không.
Lưu ý rằng trong khi thử nghiệm, một thiết bị phải ngừng hoạt động và tất cả dữ liệu phải được sao chép sang thiết bị khác khi quá trình thử nghiệm tải thiết bị rất mạnh.
Nhiệm vụ này hoàn toàn liên quan đến nhiệm vụ của quản trị viên hệ thống nên chúng tôi sẽ giữ nó sang một bên. Để kiểm soát toàn bộ trường hợp, bạn cần tự động hóa việc gửi báo cáo qua email.
Tôi khuyên bạn nên thực hiện thử nghiệm này hai lần một năm.
Kiểm tra theo lịch trình các dịch vụ được yêu cầu
Thời gian ngừng hoạt động của dịch vụ là một thực tế không tốt. Do đó, một máy chủ dự phòng sẽ hoạt động trong trường hợp có bất kỳ lỗi nào. Tuy nhiên, cần phải kiểm tra nhật ký theo thời gian. Ngoài ra, bạn cũng có thể nghĩ đến việc thu thập dữ liệu tự động với thông báo thêm cho quản trị viên bằng cách gửi email.
Cần phải kiểm tra các tác vụ của SQL Server Agent hoặc Windows Scheduler bằng cách thu thập dữ liệu tự động về các tác vụ đã hoàn thành trong MS SQL Server.
Tối ưu hóa hiệu suất hệ thống theo lịch trình
Nó bao gồm các khía cạnh sau:
- Tự động chống phân mảnh chỉ mục trong cơ sở dữ liệu MS SQL Server
- Tự động thu thập dữ liệu về các thay đổi của lược đồ cơ sở dữ liệu trong MS SQL Server. Bạn có thể khôi phục một bản sao lưu và so sánh các thay đổi, chẳng hạn như sử dụng dbForge
- Tự động dọn dẹp các quy trình bị mắc kẹt trong MS SQL Server
- Dọn dẹp bộ nhớ cache của thủ tục. Ở đây, bạn cần xác định thời điểm và những gì nên được dọn dẹp
- Triển khai một chỉ báo hiệu suất
- Phát triển và sửa đổi các chỉ mục được phân nhóm
Ngoài ra, tôi khuyên bạn nên tắt AUTO_CLOSE tính năng.
Đôi khi, vì những lý do khác nhau, trình tối ưu hóa song song một truy vấn, truy vấn này không phải lúc nào cũng tối ưu.
Do đó, có một số khuyến nghị bạn nên ghi nhớ:
- Nếu bạn nhận được nhiều dữ liệu, hãy để chế độ song song.
- Nếu bạn nhận được một vài dữ liệu, thì không sử dụng song song.
Có hai tham số trong cài đặt phiên bản SQL Server chịu trách nhiệm về tính song song:
- mức độ song song tối đa. Để tắt chế độ song song, hãy đặt “1” làm giá trị, nghĩa là chỉ một bộ xử lý sẽ thực thi mã.
- ngưỡng chi phí cho tính song song. Nó phải được đặt theo mặc định.
Có hai hàng đợi chính:
- một hàng đợi cho thời gian CPU (hàng đợi QCPU). Nó diễn ra khi một truy vấn đã được bật và đang đợi bộ xử lý thực thi nó.
- hàng đợi tài nguyên (hàng đợi QR). Nó diễn ra khi một truy vấn đang đợi các tài nguyên không bị ràng buộc để thực hiện quy trình.
Công thức sau mô tả việc thực thi truy vấn (T):
T =TP + TQR + TCPU + TQCPU, trong đó:
- TP đang tính thời gian cho một kế hoạch
- TQR là thời gian xếp hàng cho tài nguyên (hàng đợi QR)
- TQCPU là thời gian xếp hàng để tài nguyên không bị ràng buộc (hàng đợi QCPU)
- TCPU đã đến lúc thực thi một truy vấn
Trong chế độ xem hệ thống sys.dm_exec_query_stats:
- total_worket_time =TP + TCPU + TQCPU
- total_elapsed_time =TQR + TCPU
Các công cụ tích hợp không cho phép đánh giá chính xác thời gian thực hiện truy vấn.
Trong hầu hết các trường hợp, total_elapsed_time cung cấp cho bạn thời gian gần với thời gian thực thi truy vấn.
Bạn có thể xác định thời gian thực hiện truy vấn chính xác hơn bằng cách sử dụng dấu vết. Ngoài ra, bạn có thể ghi nhật ký thời gian bắt đầu và kết thúc truy vấn. Hãy cẩn thận với các dấu vết vì chúng tải hệ thống một cách đáng kể. Vì vậy, tốt hơn là thực hiện nó trên một máy chủ sao lưu và thu thập dữ liệu từ máy chủ chính. Trong trường hợp này, chỉ mạng sẽ được tải.
Khi song song, SQL Server phân bổ N quá trình cho một truy vấn (trong phiên bản Standart n <=4). Mỗi quá trình yêu cầu thời gian của CPU để thực hiện một truy vấn (một quá trình không phải lúc nào cũng được thực thi trên mỗi lõi).
Bạn càng có nhiều quy trình, thì càng có nhiều cơ hội bị thay thế bởi những quy trình khác, dẫn đến việc gia tăng TQCPU.
Có thể mất nhiều thời gian hơn để thực hiện một truy vấn khi song song hóa, trong các trường hợp sau:
- Thông lượng đĩa phụ của hệ thống con thấp. Trong trường hợp này, việc phân tách truy vấn mất nhiều thời gian hơn.
- Dữ liệu có thể bị chặn đối với quá trình này.
- Không có chỉ mục cho vị từ, dẫn đến việc quét bảng.
Lưu ý:
Bạn cần tắt các truy vấn song song trên các máy chủ không cần thực hiện lựa chọn lớn (nên giảm total_worket_time do có thể giảm TCPU và TQCPU). Để thực hiện việc này, bạn cần đặt tính năng song song mức độ tối đa thành '1' để chỉ một bộ xử lý hoạt động.
Ngoài ra, bạn có thể sử dụng các khung công tác khác để xây dựng hệ thống xác định hiệu suất tốc độ cao của cơ sở dữ liệu. . Điều quan trọng là phải hiểu cách hoạt động của các khung này và cách diễn giải các số đã truy xuất.
Đối với việc phát triển và sửa đổi các chỉ mục, cụ thể là các chỉ mục được phân cụm, điểm chính là hiểu cách logic của các chỉ mục được thiết lập và cách nó hoạt động.
Hãy nhớ rằng khóa chính và khóa cụm không có nghĩa giống nhau:
Một khóa chính là một cột hoặc một tập hợp các cột, tạo một bản ghi duy nhất trong bảng. Đối với khóa chính, bạn có thể tạo một chỉ mục được nhóm hoặc không nhóm duy nhất. Khóa chính được sử dụng trong các bảng khác như một khóa ngoại để cung cấp tính toàn vẹn của dữ liệu.
Một chỉ mục theo nhóm là cây B hoặc sửa đổi của nó. Các lá chứa dữ liệu chính nó trong khi các nút giữ thông tin chỉ mục. Ngoài ra, một chỉ mục được phân nhóm cũng có thể không phải là duy nhất. Tuy nhiên, tôi khuyên bạn nên chọn nó là duy nhất.
Tôi muốn nhắc rằng cây B là một cấu trúc lưu trữ dữ liệu theo thứ tự được lọc bởi một chỉ mục được phân cụm. Do đó, điều quan trọng là phải nhóm các trường được chọn làm chỉ mục nhóm theo thứ tự giảm dần hoặc tăng dần. Đối với chỉ mục được phân nhóm, bạn có thể sử dụng các cột số nguyên (danh tính), cũng như dữ liệu và thời gian. Tuy nhiên, các cột như mã định danh duy nhất không phù hợp vì cột sau sẽ dẫn đến việc cấu trúc lại cây B thường xuyên, điều này sẽ làm tăng số lượng bài đọc và bản ghi trên thiết bị lưu trữ nơi đặt cơ sở dữ liệu.
Ngoài ra, bạn cần đảm bảo rằng chỉ mục được sử dụng với chế độ xem hệ thống sys.dm_db_index_usage_stats.
P.S. Cần phải kiểm tra xem dữ liệu có được cập nhật trên máy chủ sao lưu hay không, cũng như kiểm tra hệ thống đồng bộ hóa dữ liệu này (ví dụ:các bản sao).
Cũng đọc:
Tự động chống phân mảnh chỉ mục trong cơ sở dữ liệu MS SQL Server
Thu thập dữ liệu tự động của các thay đổi lược đồ cơ sở dữ liệu trong MS SQL Server
Tự động xóa các quy trình bị mắc kẹt trong MS SQL Server
Khắc phục sự cố các truy vấn chạy dài trong MS SQL Server
Triển khai Chỉ số Hiệu suất