Việc khởi động lại Dịch vụ SQL (trên máy) có xóa bộ đệm của máy chủ không (đối với những thứ như kế hoạch truy vấn và thống kê)?


Câu trả lời:


12

Có nó làm. Vì SQL Server chịu trách nhiệm duy trì các bộ đệm đó, khi bạn tắt các dịch vụ của máy chủ SQL, nó sẽ giải phóng bộ nhớ trở lại hệ điều hành.


Cảm ơn bạn! Là một câu hỏi bổ sung, bạn có biết nếu khởi động lại chỉ các dịch vụ trong khi truy vấn được khôi phục có thể dẫn đến việc máy chủ quay trở lại trạng thái "phục hồi" hay đó chỉ là kết quả tiềm năng từ việc khởi động lại toàn bộ máy / máy?
JD

1
Nó có thể, nhưng tôi không biết nếu nó sẽ. Tất nhiên, việc khôi phục vĩnh viễn là một vấn đề, và tôi đã phải làm những gì bạn đang hỏi về trước đây. DB đã không trở lại trong trạng thái phục hồi, nhưng tôi có thể đã gặp may mắn. Một số người trong nhóm tư vấn, như phi hành đoàn của Brent Ozar hoặc Aaron Bertrand có thể biết chắc chắn.
Cười Vergil

Phục hồi chỉ cần thiết khi tắt máy ô uế hoặc tham nhũng từ trước
eckes

3
Cơ sở dữ liệu luôn bắt đầu ở trạng thái khôi phục, nhưng việc khôi phục thường rất nhanh nên bạn không nắm bắt được. (Có một ngoại lệ trong đó có một chút trong tệp mdf nói rằng việc tắt cơ sở dữ liệu sạch, nhưng bạn nên suy nghĩ về mặt khái niệm nếu cơ sở dữ liệu luôn bắt đầu ở trạng thái khôi phục). Giai đoạn phục hồi có thể mất nhiều thời gian, nếu bạn có một rollback lớn, tức là, bây giờ bạn có thể nhận thấy trạng thái này. Nhưng bạn cũng có thể gặp vấn đề với việc khôi phục, như thiếu tệp cơ sở dữ liệu và bây giờ bạn sẽ có "phục hồi đang chờ xử lý" (và điều này sẽ không tự giải quyết được).
Tibor Karaszi

15

Hành vi không khác nhau giữa khởi động lại dịch vụ một mình hoặc khởi động lại dịch vụ do khởi động lại hệ điều hành bên dưới. Thông tin nào bị xóa khi khởi động lại như vậy?

  • Kế hoạch truy vấn? Đúng.
  • Bảng / chỉ số dữ liệu? Đúng.
  • Số liệu thống kê? Không.

(Các gói truy vấn, sử dụng số liệu thống kê, sẽ phải được biên dịch lại, nhưng số liệu thống kê sẽ không phải được tạo lại trừ khi có một số sự kiện hoặc điều kiện để kích hoạt điều đó (có một số).)

Nếu bạn dừng dịch vụ trong khi giao dịch quay trở lại, bạn có thể chưa hoàn thành bất kỳ điều gì, vì việc khôi phục có thể chỉ bắt đầu lại từ nơi nó dừng lại (hoặc có thể phải bắt đầu lại hoàn toàn, tùy thuộc vào loại hoạt động đang diễn ra cuộn lại).

Nếu bạn đã khởi động lại dịch vụ vì bạn thiếu kiên nhẫn chờ đợi việc hoàn thành, đó có lẽ là một bài học đắt giá bạn sẽ chỉ phải thực hiện một hoặc hai lần trước khi bạn ngừng thử. Xem:


Cảm ơn Aaron, sâu sắc như thường lệ! Khi bạn nói "Nếu bạn dừng dịch vụ trong khi giao dịch đang quay trở lại, bạn chưa hoàn thành bất cứ điều gì, việc khôi phục sẽ chỉ bắt đầu lại từ nơi nó dừng lại", bạn có nói điều đó luôn luôn đúng hay trong hầu hết các trường hợp? Nếu trước đây, tại sao khi chúng tôi khởi động lại dịch vụ, sp_who2 không còn hiển thị các quy trình được khôi phục (SPID của chúng đã biến mất)?
JD

1
@JD xin lỗi, sẽ nên có thể . Có thể rollback đã bị chặn trước khi khởi động lại và sau khi khởi động lại, không có gì chặn nó để nó có thể hoàn thành ngay lập tức. Giết các dịch vụ chỉ là một trò chơi nguy hiểm và không thể đoán trước.
Aaron Bertrand

Ah gotcha. Và đồng ý, thật không may, đó không phải là lựa chọn của tôi trong trường hợp này, nhưng tôi đoán rằng nó có tác động tương tự như một khởi động lại cá thể. Bạn có biết liệu cơ sở dữ liệu có thể hoạt động trở lại trong trạng thái "phục hồi" hay không đối với các dịch vụ được khởi động lại tương tự như những gì có thể xảy ra khi cá thể được khởi động lại trong quá trình khôi phục?
JD

1
@JD Chắc chắn, mọi thứ đều có thể nếu bạn cắt đứt động mạch của SQL Server. :-) Tùy thuộc vào những gì khác đang xảy ra trong cơ sở dữ liệu tại thời điểm bạn hủy dịch vụ, bạn sẽ phải chờ cả hai làm lại và hoàn tác trước khi cơ sở dữ liệu có sẵn và có thể có những nguyên nhân thảm khốc khác cho Recovery Đang chờ xử lý cụ thể.
Aaron Bertrand

0

máy chủ sql dự trữ bộ nhớ hệ điều hành được gọi là bộ đệm khi bắt đầu. Khối lượng công việc hàng ngày làm tăng nhóm bộ đệm và mỗi trang, bộ đệm, số liệu thống kê truy vấn, số liệu thống kê quy trình, vv được lưu trữ trong nhóm bộ đệm. thông tin này nằm trong vùng đệm cho đến khi các sự kiện xảy ra.

  1. khởi động lại máy chủ / hệ thống sql
  2. câu lệnh dbcl dropcleanbuffers thực thi
  3. Áp lực bộ nhớ.

tôi hy vọng điều này sẽ giúp bạn hiểu

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.