Làm cách nào để giảm dung lượng File Log SQL Server?

Bắt đầu cho một ngày mới, bạn nhận thấy rằng máy tính của mình vận hành chậm hơn . Tìm hiểu nguyên nhân bạn thấy trong khi dữ liệu của mình chỉ có vài ba GB, mà file log lại quá lớn.Vậy, phải làm cách nào để giảm dung lượng file log sql server? Bài viết sau sẽ giúp bạn giải quyết vấn đề trên.

  1. Cách giảm dung lượng File Log SQL Server

Hiện nay đang có ba cách để giải quyết vấn đề này.

Thứ nhất: Detach DB, xóa file LOG, tiếp theo ATTACH lại DB.

Thứ hai: Backup LOG với OpTION là TRUNCATE_ONLY hay NO_LOG
nếu bạn dùng phiên bản SQL Server 2008 thì Option này đã bị bỏ.

Thứ ba. Cách này thông dụng hơn.

Khi tạo ra một cơ sở dữ liệu trong SQL Server, tự động sẽ sinh ra hai tệp đuôi là .MDF và .LDF, bạn có thể nhìn thấy hình dưới, trong khi dữ liệu chỉ có 14MB mà filelog lên tới 195MB.

 

Kết quả hình ảnh cho Cách giảm dung lượng File Log SQL Server

Vì vậy, để xóa được file log bạn phải sử dụng câu lệnh sau.

>>> Xem thêm: chung chi ssl – Mua ssl cho tên miền tạo uy tín với chi phí tốt nhất thì trường

USE vnn_mastercode;

GO

— Truncate the log by changing the database recovery model to SIMPLE.

ALTER DATABASE vnn_mastercode

SET RECOVERY SIMPLE;

GO

— Shrink the truncated log file to 1 Mb.

DBCC SHRINKFILE (vnn_mastercode_Log, 1);

GO

— Reset the database recovery model.

ALTER DATABASE vnn_mastercode

SET RECOVERY FULL;

GO

Sau khi thực hiện xong câu lệnh trên bạn sẽ rất bất ngờ khi thấy kết quả dung lượng của file log giảm xuống chỉ còn lại 1MB.

 

>> Xem thêm: máy chủ server – Dịch vụ thuê máy chủ cấu hình mạnh mẽ với chi phí cực tiết kiệm

  1. Tại sao cách này lại hiệu quả?

SQL Server sở hữu 3 chế độ để Recovery dữ liệu bao gồm: FULL, SIMPLE và BULK LOGGED trong đó Full là chế độ thiết lập mặc định thông thường.

Để xem được thông tin này chúng ta sẽ truy cập Option trong Database và xem trong Recovery Model.

Khi chúng ta thiết lập chế độ này trên SQL Server thì mọi transaction đều được lưu lại bên trong LOG. Vì vậy bạn có thể dựa vào những Transaction này để quay lại DB ở bất cứ thời điểm nào. Vì vậy, với các DB có nhiều Transaction, mà ít DATA thì file LOG vẫn lớn.

Để thực hiện đầu tiên chúng ta thay đổi SET RECOVERY của DB về SIMPLE. Mọi Transaction được COMMIT sẽ tự xóa. Cho nên, File LOG của database ở chế độ này thường không lớn.

Hình ảnh có liên quan

DBCC SHRINKFILE được sử dụng với mục đích giảm dung lượng của SHRINK file log chỉ còn 1Mb. Nếu bạn không set Recovery về SIMPLE, thì sẽ ko bao giờ xóa được hết các Transaction đã được COMMIT. SHRINKFILE chỉ dọn dẹp, sắp đặt và chia lại dữ liệu, vứt bỏ các vùng trống để giải phóng bộ nhớ, hoàn toàn không xóa dữ liệu. Nếu dữ liệu được đặt ở chế độ Full thì SHRINKFILE sẽ không có tác dụng.

Tiếp theo SET RECOVERY sẽ về lại FULL. Xem trên MSDN( thư viện bách khoa cho lập trình trên các ứng dụng Windows ) đã khuyên nếu muốn Backup LOG, thì bạn cần chuyển về chế độ SIMPLE, tốt hơn là backup LOG với Truncate_Only và No_LOG.

Lưu ý: Đối với những DB lớn, có kế hoạch Backup riêng, bạn cần phải hỏi ý kiến của người chịu trách nhiệm và vận hành các hoạt động liên quan đến cơ sở dữ liệu (viết tắt DBA) trước khi làm. Bởi vì, có một vài chế độ BackUp dựa rất nhiều vào file LOG.

Như vậy, qua bài viết này https://nhanhoa.com/ đã hướng dẫn bạn cách xóa file log của sql để giúp database nhẹ hơn rồi đấy! Chúc bạn thành công!

>>> Xem thêm: đăng kí tên miền com– Tìm hiểu dịch vụ đăng ký tên miền từ nhà cung cấp số 1 tại thị trường

Leave a Reply