24x7 so với cửa sổ thời gian ban đêm


19

Tôi có thể tìm tài nguyên ở đâu để chuyển tốt hơn sang hoạt động 24x7? Làm thế nào để các công ty lớn với cơ sở dữ liệu lớn thực hiện điều này? Công việc hàng đêm của chúng tôi như

  1. thanh lọc dữ liệu cũ
  2. tuần lộc
  3. cập nhật số liệu thống kê

tất cả dường như gây ra tác động nghiêm trọng đến hệ thống của chúng tôi ( ví dụ: người dùng trực tuyến và nguồn cấp dữ liệu thời gian thực). Tôi đã xem trên Amazon về bất kỳ cuốn sách nào liên quan đến chủ đề này và cho đến nay vẫn chưa tìm thấy gì.


Bạn đang tìm cách di chuyển cơ sở dữ liệu từ máy chủ này sang máy chủ khác hoặc cách tốt hơn để quản lý tác động của công việc hàng đêm của bạn?
Mike Fal

Làm thế nào để quản lý tác động của công việc hàng đêm? Tức là làm thế nào để giảm hoặc loại bỏ "cửa sổ lô" hàng đêm.
NealWalters

2
@NealWalters Phiên bản SQL Server nào bạn đang sử dụng? (Xây dựng lại chỉ mục trực tuyến và phân vùng bảng để tắt dữ liệu cũ có sẵn trong Phiên bản doanh nghiệp)
Martin Smith

1
Phiên bản nào của máy chủ sql bạn đang sử dụng? Doanh nghiệp / tiêu chuẩn? Enterprise có một số tính năng nhất định có thể cho phép bạn thực hiện một số thao tác dưới dạng TRỰC TUYẾN với tác động tối thiểu của người dùng.
Kin Shah

1
@NealWalters Kiểm tra việc phân chia DBCC CHECKDB qua nhiều ngày để biết thêm chi tiết. Mặc dù nó dành cho CHECKDB nhiều hơn, nhưng sẽ giúp bạn có thêm ý tưởng. Hãy cho chúng tôi biết bạn đang sử dụng phiên bản nào, để mọi người ở đây có thể giúp bạn tốt hơn.
Kin Shah

Câu trả lời:


27

Duy trì cơ sở dữ liệu 24x7 là một chủ đề khá lớn với nhiều tùy chọn để xem xét. Chủ đề rộng này có nhiều mục để xem xét, nhưng chúng ta có thể thử và chạm vào một số điểm cao.

Những gì đầu tiên bạn sẽ muốn xác định là, trong khi nhiều hoạt động là 24x7, thường có thời gian hoạt động thấp. Bạn có thể tận dụng những thời điểm này để chạy bảo trì để bạn giảm nhiễu bạn sẽ có trên cơ sở dữ liệu. Thứ hai là bạn sẽ cần dành một chút thời gian cho việc ngừng hoạt động hoàn toàn (đối với những thứ như gói dịch vụ hoặc di chuyển cơ sở dữ liệu), vì vậy bạn sẽ cần phải thương lượng các cửa sổ bảo trì đầy đủ với quản lý của mình. Đối với các mục cụ thể, bạn sẽ cần xem xét và lập kế hoạch cho từng mục, cũng như tận dụng các công cụ của mình một cách thích hợp. Các phần quan trọng là bạn phải PLAN mỗi trong số này, bất kỳ ví dụ tôi cung cấp rất nhiều "dặm của bạn có thể thay đổi".

Sao lưu

Các bản sao lưu thường không có tác động lớn đến khối lượng công việc, nhưng phải được tính vì chúng có thể tiêu thụ rất nhiều I / O. Bạn sẽ muốn sắp xếp những thứ này một cách thích hợp và theo dõi lượng thời gian cần thiết để hoàn thành. Rào cản lớn nhất ở đây là trong một hoạt động 24x7, bạn có thể sẽ không thể thực hiện sao lưu toàn bộ hàng đêm vào mỗi tối trong tuần. Bạn sẽ muốn lập kế hoạch khi bạn có thể thực hiện đầy đủ, khi bạn đang sử dụng vi sai và thời gian lưu cho cả hai kết hợp với sao lưu nhật ký của bạn.

Ví dụ, tôi chạy sao lưu toàn bộ cơ sở dữ liệu của mình vào tối Chủ nhật (hoạt động thấp nhất), chênh lệch vào tất cả các đêm khác (Thứ Hai-Thứ Bảy). Tôi giữ hai tuần đầy đủ và khác biệt trên đĩa, nhật ký trong hai ngày qua. Điều này cho tôi đủ linh hoạt để phục hồi, nhưng tôi có thể phải khôi phục các bản sao lưu từ băng nếu cần thiết.

Chỉ số / Thống kê bảo trì

Đây là loại bảo trì tích cực phổ biến nhất mà bạn sẽ phải đối phó. Bạn không thể tránh nó, nhưng bạn có thể giảm thiểu tác động. Nguyên tắc ban đầu là bạn chỉ nên bảo trì những đồ vật cần nó. Hướng dẫn chung là chỉ xây dựng lại các chỉ mục lớn hơn 30% bị phân mảnh và lớn hơn 1000 trang . Nếu bạn có số liệu thống kê tự động cập nhật , việc này sẽ xử lý hầu hết việc bảo trì số liệu thống kê của bạn, nhưng công việc hàng đêm để giữ mọi thứ đồng bộ không phải là ý tưởng tồi.

Nếu bạn có Phiên bản doanh nghiệp, bạn cũng có quyền truy cập vào một số tùy chọn khác để quản lý bảo trì. Đầu tiên là Tái tạo chỉ mục trực tuyến , sẽ cho phép bạn xây dựng lại các chỉ mục trong khi chúng vẫn đang được sử dụng (về cơ bản, nó xây dựng chỉ mục cạnh nhau, sau đó hoán đổi nó). Bạn cũng có thể tận dụng phân vùng cho các bảng "lớn" để giảm thời gian xây dựng lại cần thiết.

Đặt cược tốt nhất của bạn cho loại bảo trì này, nếu bạn không có tập lệnh tùy chỉnh xử lý các thực tiễn tốt nhất này, là sử dụng tập lệnh Bảo trì của Ola Hallengren . Đây là khá dễ dàng để thiết lập và cấu hình và có nhiều hướng dẫn được xây dựng trong.

Kiểm tra tính nhất quán của DBCC

Tùy thuộc vào khối lượng công việc chung của bạn, bạn có thể thấy các kiểm tra DBCC bị gián đoạn cho hoạt động của mình. Có hai cách phổ biến để giảm thiểu tác động DBCC cho cơ sở dữ liệu của bạn:

  • PHYSICAL_ONLY- Chạy tùy chọn này sẽ kiểm tra cơ sở dữ liệu của bạn ở cấp độ trang vật lý và tránh kiểm tra đầy đủ xâm lấn hơn. Điều này sẽ bao gồm việc xác định các loại tham nhũng có khả năng nhất.
  • Kiểm tra bản sao được khôi phục - Nếu bạn có dung lượng, bạn có thể khôi phục cơ sở dữ liệu sang phiên bản khác và chạy kiểm tra DBCC đối với bản sao được khôi phục. Điều này sẽ kể một câu chuyện tương tự về cơ sở dữ liệu trực tiếp của bạn, nhưng rõ ràng bạn sẽ không can thiệp vào hoạt động. Một số lựa chọn thay thế khác ở đây đang chạy DBCC dựa trên bản sao được gửi đi hoặc db được nhân đôi.

Bài đăng blog này cung cấp chi tiết hơn về các tùy chọn của bạn.

Công việc hàng loạt / ETL

Điều này thực sự đi vào cách bạn thiết kế các quy trình của bạn. ETL của bạn luôn có thể can thiệp vào các bảng OLTP trực tiếp (giống như bất kỳ ứng dụng nào khác), vì vậy một số lưu ý cần lưu ý:

  • Lịch trình công việc như vậy xung quanh bảo trì khác của bạn và trong thời gian hoạt động thấp.
  • Đúng kích thước công việc sao cho nó được xử lý theo cả hai hiệu suất và để lô đó không quá lớn đến nỗi nó khóa bảng của bạn trong nhiều giờ. Ví dụ về các đầu của phổ: Hàng-by-agonizing-row (RBAR) so với một hàng xóa hàng.
  • Sử dụng bảng giai đoạn và ngoại tuyến xử lý dữ liệu của bạn khi thích hợp. Chỉ chạm vào những thứ sống khi thực sự cần thiết.

Phần kết luận

Một lần nữa, có rất nhiều mặt đất để bao phủ ở đây. Đây không phải là một hướng dẫn toàn diện, mà là một tổng quan cấp cao về một số phương pháp. Tôi thậm chí đã không thảo luận về các tùy chọn có tính sẵn sàng cao (chẳng hạn như Nhóm khả dụng và Phân cụm chuyển đổi dự phòng). Bạn sẽ cần xem lại từng mục và xây dựng kế hoạch về cách xử lý. Theo nhiều cách, bạn cũng sẽ cần phải lặp đi lặp lại và tinh chỉnh công việc của bạn khi bạn tiến về phía trước.

Tài nguyên bổ sung:

Kỹ năng SQL duy trì thực hành tốt nhất VLDB


Đồng ý, xuất sắc, hữu ích, đáp ứng chi tiết. Cảm ơn! Chúng tôi đang làm việc thông qua nó.
NealWalters

Một yếu tố khác mà chúng tôi đang làm việc là chuyển rất nhiều dữ liệu cũ sang ODS (Kho lưu trữ dữ liệu hoạt động) để giữ cho cơ sở dữ liệu chính gọn gàng hơn. Chúng tôi cũng thấy "Cập nhật thống kê" đang chạy khoảng 2 đến 2,5 giờ mỗi sáng và điều đó dường như làm chậm hiệu suất chung. Là "thực hành tốt nhất" để chạy Cập nhật thống kê mỗi ngày?
NealWalters

Tôi thường sẽ làm điều đó, nhưng YMMV. Nguy cơ không cập nhật số liệu thống kê là số liệu thống kê trở nên cũ và bạn bắt đầu có kế hoạch truy vấn xấu. Bạn sẽ phải phân tích xem đây có phải là vấn đề hay không nếu bạn không chạy số liệu thống kê cập nhật mỗi đêm. Bạn có thể thấy về việc sắp xếp các công việc thống kê của bạn nhiều hơn và xem cách các truy vấn của bạn nói chung hoạt động.
Mike Fal
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.