Dung lượng database phình lên quá lớn, dễ full ổ đĩa server   print


Dung lượng database phình lên quá lớn, dễ full ổ đĩa server, đây là hiện tượng thông thường của 1 Database SQL khi được sử dụng với thuộc tính Recovery model = Full.





Thông tin thêm về Recovery model = Full
  • Sao lưu gần như tất cả những thay đổi trong cơ sở dữ liệu. Nên việc bạn có thể phục hồi được tất cả dữ liệu.
  • Nếu cơ sở dữ liệu có chứa nhiều nhóm tập tin, và bạn muốn khôi phục từng phần đọc / ghi filegroups thứ cấp và tùy chọn, chỉ đọc filegroups.
  • Người quản trị có thể phục hồi được cơ sở dữ liệu đến trước thời điểm db bị hỏng hóc.
  • Dung lượng file data và file log sẽ phình ra rất nhanh, và file log có thể lớn hơn rất nhiều so với file data.
  • Và tất nhiên khi file phình lên thì truy vấn SQL sẽ chậm đi, thao tác với CSDL cũng chậm đi.

Tóm lại: Recovery model là Full để phục vụ nhu cầu Rollback dữ liệu (SQL) về bất kỳ thời điểm nào khi cần, tuy nhiên thực tế hiếm khi dùng đến recovery này. Kết quả là: file log của database phồng lên rất lớn, đặc biệt là các database có lượng dữ liệu lớn và truy vấn nhiều.

=> Vậy giải pháp nào cho vấn đề trên?


1. Thay đổi thuộc tính Recovery model = Simple
-> SQL sẽ không tự lưu lại các thay đổi trong cơ sở dữ liệu. -> không thể rollback khi cần, nhưng bù lại là dung lượng sẽ không phình lên.
Chú ý: Giải pháp này chỉ nên thực hiện khi đã có cài đặt backup định kỳ.


2. Đặt giới hạn cho file Log
-> SQL tự động lưu lại các thay đổi trong cơ sở dữ liệu theo giới hạn dung lượng đã đặt. -> có thể Rollback khi cần, dung lượng phình lên không vượt quá dung lượng cho phép.

3. Xử lý cắt giảm (Shrink) file log định kỳ
-> Có thể chủ động cắt giảm dung lượng khi cần thiết -> có thể Rollback dữ liệu.



Thao tác Shrink file log:
B1. Tasks -> Shrink

B2. Chọn File type = Log -> OK