01/10/2018, 17:35

Xóa buffer của cơ sở dữ liệu trong MS SQL Server

Khi bạn dùng SQL Server Profiler để đo performance của database bạn sẽ gặp trường hợp một SQL statement chạy n lần thì thời gian thực thi sẽ giảm dần. Ví dụ: Select * from Employees Lần 1, là 130 millisecond Lần 2, là 110 millisecond Lần 3, là 50 millisecond … Lần n + 1, sẽ tiến ...

Khi bạn dùng SQL Server Profiler để đo performance của database bạn sẽ gặp trường hợp một SQL statement chạy n lần thì thời gian thực thi sẽ giảm dần. Ví dụ:

Select * from Employees

Lần 1, là 130 millisecond

Lần 2, là 110 millisecond

Lần 3, là 50 millisecond

Lần n + 1, sẽ tiến dần về 0 millisecond

Câu hỏi đặt ra, lý do tại sao cùng một câu query mà mỗi lần thực thi lặp lại thì thời gian giảm dần về không?

Bởi vì MS SQL Server hỗ trợ cơ chế lưu trữ những câu query đã chạy (thực thi) rồi, để lần sau câu query đó được chạy nhanh hơn.

Vì thế khi bạn sử dụng SQL Server Profiler để đo performance của database bạn nên làm sạch buffer bằng cách sử dụng câu lệnh bên dưới để xóa sạch hết bộ nhớ tạm đó.

Cú pháp:

USE <YOURDATABASENAME>;
GO
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO

Ví dụ minh họa: giả sử bạn cần xóa buffer của cơ sở dữ liệu tên MASTER

USE MASTER;
GO
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO


0