Thực hành tốt nhất để thu nhỏ Tempdb trong môi trường sản xuất


24

Cách thực hành tốt nhất để sử dụng khi thu hẹp db tạm thời trong SQL Server 2008 là gì?

Có nguy hiểm khi sử dụng sau đây?

use tempdb
GO

DBCC FREEPROCCACHE -- clean cache
DBCC DROPCLEANBUFFERS -- clean buffers
DBCC FREESYSTEMCACHE ('ALL') -- clean system cache
DBCC FREESESSIONCACHE -- clean session cache
DBCC SHRINKDATABASE(tempdb, 10); -- shrink tempdb
dbcc shrinkfile ('tempdev') -- shrink db file
dbcc shrinkfile ('templog') -- shrink log file
GO

-- report the new file sizes
SELECT name, size
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
GO

Thực hành tốt nhất là tìm ra những gì đang làm cho nó phát triển và giải quyết điều đó. Nếu bạn thu nhỏ nó, nó sẽ phải phát triển trở lại và điều đó cần có thời gian và IO
Nick.McDilyn

Vâng tôi biết. Nhưng khi tôi phải làm, hãy đến muộn để chủ động :) Đây có phải là giải pháp tốt nhất?

Xin lỗi tôi không thể giúp bạn ở đó.
Nick.McDilyn

Câu trả lời:


11

Đó là cách tốt nhất để chủ động theo dõi việc sử dụng Tempdb thông thường và đặt kích thước phù hợp. Nếu đây là một trường hợp trong đó Tempdb đã phát triển đến kích thước như vậy và là một env sản xuất, tôi sẽ khởi động lại Dịch vụ máy chủ SQL trong quá trình bảo trì hàng tuần. Ở đó sau Tempdb sẽ trở lại kích thước được cấu hình của nó.

Thu hẹp tệp là tốt miễn là Tempdb không được sử dụng, các giao dịch hiện tại khác có thể bị ảnh hưởng từ quan điểm hiệu suất do bị chặn và khóa chết.

Làm sạch bộ đệm thủ tục, bộ đệm bộ đệm, vv sẽ có tác động tiêu cực đến chính hiệu suất cơ sở dữ liệu cho đến khi chúng không được tạo lại. Tôi sẽ không làm điều này trên SẢN PHẨM.

Mong rằng sẽ giúp!


Cảm ơn cho đầu vào godd. Có đủ để kiểm tra với sp_who cho các quy trình trong tempdb không?

1
Tôi không nghĩ rằng đó là một cách đáng tin cậy để tìm hiểu xem temp db đang được sử dụng. Tôi nghĩ rằng điều đó sẽ chỉ hiển thị nếu ai đó đang tạo bảng tạm thời trực tiếp trong SSMS. Nhưng nếu điều tương tự đang được thực hiện do hoạt động của truy vấn do tràn bộ nhớ, v.v. thì nó sẽ không hiển thị trong sp_who2. Câu hỏi đó sẽ không phải là một chủ đề riêng biệt. Vui lòng tạo nó vì nó là một cuộc thảo luận riêng biệt. Nếu câu trả lời trước giúp bạn vui lòng đánh dấu đó là câu trả lời. Điều đó sẽ giúp những người khác có tình huống tương tự.
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.