Log file (tập tin nhật ký) đóng vai trò quan trọng khi các hệ thống hoạt động. Nó ghi lại các thay đổi của dữ liệu, hoạt động hệ thống cũng như là những lỗi hệ thống gặp phải. Tương tự, trong SQL Server chúng ta cũng có log file. Tuy nó đóng góp rất nhiều trong việc theo dõi hệ thống, nhưng việc kích thước log file tăng lên nhanh chóng cũng khiến cho hiệu suất hệ thống bị giảm đi. Trong bài viết này, chúng ta sẽ tìm hiểu về cách giảm dung lượng log file của SQL Server một cách hiệu quả.

1. Khái niệm về log file trong SQL Server

Trong cơ sở dữ liệu nói chung hay SQL Server nói riêng, log file (hay transaction log) là một thành phần quan trọng trong việc ghi lại và đảm bảo tính nhất quán của các hoạt động thay đổi dữ liệu trong hệ thống. Nó chứa các thông tin về các thay đổi được thực hiện trên cơ sở dữ liệu bao gồm INSERT, UPDATE, DELETE và các tác động khác.

Dưới đây là một số khái niệm quan trọng về log file:

Khái niệm

Mô tả

Transaction Log RecordĐây là bản ghi trong log file, với nó chúng ta có thể nắm được các thông tin về một giao dịch (transaction) cụ thể. Nó bao gồm các hoạt động được thực hiện như thêm, sửa, xóa dữ liệu.
Write-Ahead Logging (WAL)Đây là một nguyên tắc để đảm bảo rằng, trước khi dữ liệu thực sự bị thay đổi trong cơ sở dữ liệu, thông tin về các thay đổi sẽ luôn được ghi và log file trước. Nguyên tắc này sẽ giúp đảm bảo được tính nhất quán cũng như là khả năng phục hồi của hệ thống.
RecoveryTrong trường hợp xảy ra sự cố với hệ thống (mất điện hay lỗi phần mềm) quá trình phục hồi sẽ dựa trên cơ sở log file để giúp cơ sở dữ liệu phục hồi lại trạng thái đúng cũng như tính nhất quán dữ liệu. Quá trình này sẽ tái tạo lại dữ liệu dựa trên những thông tin có trong log file.
CheckpointĐây là quá trình khi mà các log file được ghi vào cơ sở dữ liệu chính (data file). Nó sẽ giúp giảm tải cho file log và cũng góp phần tăng hiệu suất.
Log BackupQuá trình này là quá trình sao lưu nội dung log file sang một vị trí an toàn hơn. Sau khi sao lưu được thực hiện xong, các phần đã ghi trong log file có thể được giải phóng để tái sử dụng.
Log TruncationSau khi đã thực hiện log backup, để giảm kích thước của log file chúng ta có quá trình log truncation. Nó giúp loại bỏ các phần đã được backup khỏi log file.

2. Sao lưu và phục hồi định kỳ

Sao lưu định kỳ là cách quan trọng để giảm dung lượng log file. Khi sao lưu cơ sở dữ liệu, SQL Server sẽ cắt bỏ các phần đã được sao lưu ra khỏi log file, từ đó giúp kiểm soát kích thước của nó. Điều này cũng cung cấp khả năng phục hồi dữ liệu đối với các phiên bản đã sao lưu. Đây là ví dụ về việc sao lưu định kỳ log file:

-- Sao lưu log file mỗi giờ
USE master;
BACKUP LOG [TenCSDL] TO DISK = 'DuongDanDenFileBackup.trn' WITH INIT, CHECKSUM, COMPRESSION, STATS = 10;

>>> Xem thêm bài viết về chủ đề SQL và MySQL:

- So sánh PostgreSQL và MySQL trong lập trình 
- Hướng dẫn sử dụng Subquery trong SQL 
- Tìm hiểu về SELECT INTO trong SQL

3. Điều chỉnh chế độ phục hồi

Trong SQL Server chúng ta có các chế độ phục hồi khác nhau cho log file, việc lựa chọn chế độ phù hợp cũng có thể ảnh hưởng đến các log file được quản lý cũng như là kích thước của nó:

  • Chế độ đầy đủ (full)
  • Chế độ không đầy đủ (simple)
  • Chế độ đã mở rộng (bulk-logged)

Cách thiết lập chế độ phục hồi:

-- Đặt chế độ phục hồi là Simple (chú ý: chỉ nên sử dụng khi không cần khả năng phục hồi đầy đủ)
ALTER DATABASE [TenCSDL] SET RECOVERY SIMPLE;

4. Thu nhỏ log file

Thông thường file log sẽ không quá lớn. Nhưng nếu trong trường hợp file log lớn một cách không kiểm soát, chúng ta cần xem xét để thực hiện thu nhỏ log file. Tuy nhiên, việc giảm kích thước log file cũng có thể gây nên vấn đề về hiệu suất hệ thống. Dưới đây là cách thu nhỏ log file:

-- Thu nhỏ log file (chú ý: cân nhắc sau khi đã sao lưu dữ liệu)
USE [TenCSDL];
DBCC SHRINKFILE (TenLogFile, KichThuocMucTieu);

5. Rà soát các giao dịch dài hạn

Các giao dịch dài hạn có thể gây tăng kích thước log file. Việc tối ưu hóa cũng như kiểm soát chúng sẽ gây ra nhiều thông tin log không cần thiết trong quá trình hoạt động của hệ thống.

6. Theo dõi và đánh giá

Các biện pháp đã đưa ra ở trên chỉ là các biện pháp chung có thể làm. Với mỗi hệ thống khác nhau chúng ta nên lựa chọn cách thức phù hợp để được lợi ích nhiều mặt về cả hiệu suất cũng như tính chính xác của hệ thống. Do đó, việc thường xuyên theo dõi log file và đánh giá hiệu suất sau mỗi biện pháp can thiệp như đã nói ở trên là điều rất cần thiết.

Tổng kết

Việc giảm dung lượng log file trong SQL Server là một phần cực kỳ quan trọng trong việc duy trì hiệu suất và tính ổn định của hệ thống cơ sở dữ liệu. Bằng cách kết hợp sử dụng các biện pháp nêu trên một cách hợp lý và cẩn thận, chúng ta có thể đảm bảo rằng log file không trở nên quá lớn và không ảnh hưởng đến hoạt động của hệ thống.


Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm.

Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy,  Adavigo, bTaskee…

Quý bạn đọc quan tâm xin mời đăng ký NHẬN TƯ VẤN TẠI ĐÂY: