Sự khác biệt giữa FreeProcCache và FreeSystemCache


12

Hiện tại tôi chạy DBCC FREEPROCCACHEkhi tôi muốn xóa thông tin khỏi vùng đệm giữa các truy vấn SQL. Tuy nhiên, tôi đã xem lại bài viết này của Technet DBCC FREESYSTEMCACHE. Bộ nhớ cache nào không FREESYSTEMCACHExóa FREEPROCCACHE?

Câu trả lời:


25

FREESYSTEMCACHE xóa bộ nhớ cache nào mà FREEPROCCACHE không có?

Có nhiều bộ đệm hệ thống có sẵn trong SQL Server. Tôi đang đề cập đến SQL 2008R2 (như tôi đã thử nghiệm trên nó).

Dưới đây truy vấn sẽ trả về tất cả các bộ nhớ cache có sẵn:

--- ONLY for Educational purpose. Don't attempt to run on PROD !!

select 'DBCC freesystemcache ('+''''+name+''''+')'  from   sys.dm_os_memory_clerks group by name
-- 155 rows

vì vậy, ví dụ bạn muốn xóa tất cả bộ nhớ cache bạn sẽ chạy

DBCC FREESYSTEMCACHE ('ALL')

để xóa bộ nhớ cache cụ thể, bạn có thể chạy

DBCC FREESYSTEMCACHE ('userdatabase') -- cleans cache for specific user database
DBCC FREESYSTEMCACHE ('tempdb')  -- clears cache for tempdb
DBCC FREESYSTEMCACHE ('Temporary Tables & Table Variables') -- clears all the temp table and variables
.. and many more (see above 155 rows returned from sql server 2008R2)

Sử dụng FREEPROCCACHE, bạn sẽ không thể xóa tất cả các đề cập ở trên ở mức chi tiết đó.

FREEPROCCACHE ==> từ BOL

Xóa tất cả các thành phần khỏi bộ đệm của kế hoạch, xóa một kế hoạch cụ thể khỏi bộ đệm của kế hoạch bằng cách chỉ định xử lý kế hoạch hoặc xử lý SQL hoặc xóa tất cả các mục lưu trữ được liên kết với nhóm tài nguyên đã chỉ định.

Vì vậy, về cơ bản, bạn có thể nghĩ về nó chỉ liên quan đến Plan cache với khả năng loại bỏ các gói cụ thể khỏi bộ đệm bằng tay cầm kế hoạch và hoặc tên nhóm.

Vui với DBCC FREEPROCCACHE là một blog từ Glenn Berry

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.