SQL Server Frozen Ghost Cleanup giải pháp cần thiết


15

Tôi có một số bảng với số lượng hàng trong khoảng từ 5M đến 1.5G

Mỗi bảng có trường BLOB, kích thước thay đổi từ 100 byte đến 30 MB và được lưu trữ dưới dạng 'loại giá trị lớn ngoài hàng' = ON

Các bảng được lưu trữ trong các nhóm fileg khác nhau với 3-4 tệp mỗi tệp trên các đĩa khác nhau @ LUNs khác nhau @ SAN rất nhanh

Mỗi ngày các bảng này phát triển với kích thước 5 - 100 Gb và với các hàng 600k - 1,5M

Sau một khoảng thời gian nhất định , thay đổi từ 2 tuần đến 6 tháng, một số hàng bị xóa hoặc chuyển sang lưu trữ DB, vì vậy - không có bất kỳ hàng nào trong các bàn làm việc cũ hơn 6 tháng.

Cấu hình hiện tại của máy chủ:

  • Công cụ máy chủ SQL là 2008 R2 SP1 Enterprise @ 24 lõi, RAM 64Gb
  • SQL Server chạy với các cờ khởi động thêm:

-T 3640; (Loại bỏ việc gửi tin nhắn DONE_IN_PROC cho khách hàng cho mỗi câu lệnh trong quy trình được lưu trữ. Điều này tương tự như cài đặt phiên của SET NOCOUNT ON, nhưng khi được đặt làm cờ theo dõi, mọi phiên của khách hàng sẽ được xử lý theo cách này)

-T 1118; (Chuyển phân bổ trong tempDB từ 1pg tại một thời điểm (cho 8 trang đầu tiên) sang một mức độ.)

-T 2301; (Cho phép tối ưu hóa nâng cao dành riêng cho các truy vấn hỗ trợ quyết định. Tùy chọn này áp dụng cho xử lý hỗ trợ quyết định của các tập dữ liệu lớn)

-T 1117; (Phát triển tất cả các tệp dữ liệu cùng một lúc, khác đi theo lượt.)

-E; (Tăng số lượng phạm vi được phân bổ cho mỗi tệp trong nhóm fileg. Tùy chọn này có thể hữu ích cho các ứng dụng kho dữ liệu có số lượng người dùng hạn chế chạy chỉ mục hoặc quét dữ liệu)

-T 834; (Làm cho SQL Server sử dụng phân bổ trang lớn của Windows cho bộ nhớ được phân bổ cho nhóm bộ đệm, http://msdn2.microsoft.com/en-us/l Library / aa366720.aspx , http://support.microsoft. com / kb / 920093 )

  • SQL Server sử dụng tiện ích mở rộng trang lớn
  • SQL Server sử dụng tùy chọn khởi tạo tệp nhanh
  • AUTOSHRINK TẮT cho tất cả các cơ sở dữ liệu

Vấn đề là - bắt đầu từ một số thời gian hoạt động của máy chủ (từ vài ngày đến vài tháng) GHOST CLEANUPtừ chối thực hiện các công việc dọn dẹp bắt buộc và chỉ đơn giản là thực hiện công việc thông thường của nó - dọn sạch vài trang trong vài giây ( which is seen thru Extended Events), không phù hợp , bởi vì nó không thể dọn sạch tất cả các hàng đã xóa

Vấn đề vẫn tồn tại từ thời SQL Server 2005 RTM Enterprise

Làm thế nào tôi đã cố gắng giải quyết vấn đề:

  • Đã thử buộc các hoạt động SCAN trên các chỉ mục được nhóm của các bảng
  • Đã thử buộc các hoạt động SCAN, liên quan đến tất cả nội dung của cột BLOB trên các chỉ mục được nhóm của các bảng
  • hệ thống sp_clean_db_free_space & sp_clean_db_file_free_space
  • dọn dẹp dbcc thủ công (@dbid, @fileid, @page) cho tất cả các tệp và trang trong DB
  • xây dựng lại chỉ mục cụm và tổ chức lại
  • tái tạo cơ sở dữ liệu
  • DBCC FORCEGHOSTCLEANUP

  • Khi tôi chạy truy vấn:

    select * 
    from sys.dm_db_index_physical_stats(db_id(), object_id('ProblemTable'), 1, 0, 'detailed')

    Tôi thấy hàng triệu và hàng chục triệu bản ghi ma, nhưng chỉ dành cho loại đơn vị phân bổ LOB_DATA

Những điều duy nhất, giúp đỡ:

  • dừng máy chủ bằng lệnh SHUTDOWN hoặc khởi động lại toàn bộ máy chủ - điều đó giúp ích, sau khi khởi động lại quy trình GHOST CLEANUP chạy vài giờ và thực sự xóa tất cả các bản ghi bị bóng ma
  • DBCC SHRINKFILE với tùy chọn EMPTYFILE - di chuyển tất cả dữ liệu từ tệp này sang tệp khác hoặc tệp mới tạo chỉ xóa các bản ghi ma trong tệp này - vấn đề là tôi thực sự ghét các hoạt động thu nhỏ. Và việc này mất 3-4 ngày cho MỘT tệp

câu hỏi - có tồn tại bất kỳ cách lập trình (thích hợp) hoặc bảo trì nào để buộc GHOST CLEANUP không có thời gian ngừng hoạt động của máy chủ không, vì thời gian ngừng hoạt động của máy chủ tốn quá nhiều, thậm chí không thể chấp nhận được - từ hàng ngàn đến hàng chục nghìn đô la mỗi giờ

Các vấn đề đã được chú ý như tôi đang ở đây:

Và cũng giống như vậy ở đây:

Câu trả lời:


12

Cuối cùng, MS đã nhận ra sự cố là một lỗi: http://support.microsoft.com/kb/2622823

Ngắn gọn: Nó được cố định trong

  • Máy chủ Sql 2008 SP3 CU4
  • Máy chủ Sql 2008 R2 CU10
  • Máy chủ Sql 2008 R2 SP1 CU4

Trong Sql Server 2012 SP1 Tôi không gặp vấn đề trong hơn một năm thời gian chạy.


3

Đây là loại câu hỏi nên đến CSS để họ có thể giải quyết vấn đề với bạn. Bạn có thể có bảo đảm phần mềm và hợp đồng hỗ trợ. Nếu bạn không có vài trăm đô la thì đó không phải là vấn đề lớn nếu khởi động lại ví dụ khiến bạn mất hàng ngàn đô la mỗi giờ.

Bạn đã thử cho phép cơ sở dữ liệu đóng và sau đó được đưa trực tuyến? Điều này sẽ gây ra sự phục hồi sự cố để chạy và có thể đá dọn dẹp ma.

Bạn đang viết lên bàn thường xuyên? Bởi thường xuyên tôi có nghĩa là tất cả các thời gian?

Đối với MSKB 932115, bạn có thấy các bản ghi ma chỉ còn lại trong tất cả các tệp hay nó đang dọn sạch tệp đầu tiên trong nhóm tệp?

Tại sao việc sử dụng -T1117 và init file ngay lập tức?


1. Tôi chắc chắn sẽ đến MS hỗ trợ. 2. Nếu tôi đóng DB, nó sẽ tăng khoảng 10-30 phút khi chuyển tiếp và chuyển tiếp, điều này không thể chấp nhận được. 3. GC IS đang chạy, nhưng nó không xử lý các mục LOB ngoài hàng đã bị xóa. 4. Viết vào bảng thực hiện liên tục tùy thuộc vào thời gian trong ngày từ 20 đến 600 ghi mỗi giây và mọi lúc. 5. Tệp đầu tiên của DB không được sử dụng - nó không có các bảng lớn và chỉ được sử dụng làm bộ lưu trữ hệ thống, vì vậy - đơn giản là không có bất kỳ bản ghi ma nào.
Oleg Dok

với -T1117 Tôi chỉ muốn trải đều tất cả tải giữa một số tệp, thay vào đó khi chỉ còn một tệp từ filegroup, nơi vẫn tồn tại không gian trống - nó bắt đầu chậm lại trên LATCHes của PFS, init file ngay lập tức giảm thiểu thời gian của filegrowth, bởi vì mức tăng được đặt thành 10-50 Gb mỗi lượt. Tôi không thể đơn giản đặt các tệp lớn nhất có thể, bởi vì nó hoàn toàn không thể đoán trước - tệp nào sẽ nhận được dữ liệu của chúng ngày hôm nay và trong khối lượng nào. Thật đơn giản để yêu cầu quản trị viên SAN thêm không gian, hơn là dự đoán khi nào tôi nên thêm không gian.
Oleg Dok
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.