Điểm của Thomas Stringer là tất cả những gì bạn cần cho câu trả lời của mình. Nhưng tôi sẽ đưa ra một cái nhìn sâu sắc hơn về cách bạn xác định cài đặt tự động phát triển của mình?
Nhưng tôi muốn biết có bao nhiêu sự kiện autogrowth là lý tưởng cho cơ sở dữ liệu. Tôi có nên đặt autogroth để nó chỉ xảy ra một lần một ngày, tuần hoặc tháng không. Vì vậy, hãy giúp tôi đặt giá trị autogrowth cho cơ sở dữ liệu của tôi. Ngoài ra còn có một vấn đề khác. Nếu tôi thực hiện phân mảnh cơ sở dữ liệu hàng tháng thì nó sẽ bị thu hẹp. Vì vậy, sau này cho tất cả các cơ sở dữ liệu mà tôi đã thu nhỏ autogrowth xảy ra một lần khi dữ liệu mới được ghi vào nó. Vì vậy, sẽ có rất nhiều sự kiện autogrowth. Vì vậy, liệu nó sẽ là một vấn đề?
Không có công thức toán học để tính toán cài đặt tự động phát triển của bạn, đặc biệt là khi bạn không làm cơ sở dữ liệu của bạn.
Bây giờ, như @ThomasStringer đã chỉ ra rằng bạn không nên cho phép cơ sở dữ liệu của mình tự động ở mức%, thay vào đó đặt thành MB, bạn có thể tìm hiểu các sự kiện Autogrowth xảy ra trên cá thể máy chủ của mình bằng cách sử dụng Trace mặc định .
--below code will help you in finding autogrowth events on your server instance.
IF OBJECT_ID('tempdb..#autogrowthTotal') IS NOT NULL
DROP TABLE #autogrowthTotal;
IF OBJECT_ID('tempdb..#autogrowthTotal_Final') IS NOT NULL
DROP TABLE #autogrowthTotal_Final;
DECLARE @filename NVARCHAR(1000);
DECLARE @bc INT;
DECLARE @ec INT;
DECLARE @bfn VARCHAR(1000);
DECLARE @efn VARCHAR(10);
-- Get the name of the current default trace
SELECT @filename = CAST(value AS NVARCHAR(1000))
FROM::fn_trace_getinfo(DEFAULT)
WHERE traceid = 1
AND property = 2;
-- rip apart file name into pieces
SET @filename = REVERSE(@filename);
SET @bc = CHARINDEX('.', @filename);
SET @ec = CHARINDEX('_', @filename) + 1;
SET @efn = REVERSE(SUBSTRING(@filename, 1, @bc));
SET @bfn = REVERSE(SUBSTRING(@filename, @ec, LEN(@filename)));
-- set filename without rollover number
SET @filename = @bfn + @efn
-- process all trace files
SELECT ftg.StartTime
,te.NAME AS EventName
,DB_NAME(ftg.databaseid) AS DatabaseName
,ftg.[FileName] AS LogicalFileName
,(ftg.IntegerData * 8) / 1024.0 AS GrowthMB
,(ftg.duration / 1000) AS DurMS
,mf.physical_name AS PhysicalFileName
INTO #autogrowthTotal
FROM::fn_trace_gettable(@filename, DEFAULT) AS ftg
INNER JOIN sys.trace_events AS te ON ftg.EventClass = te.trace_event_id
INNER JOIN sys.master_files mf ON (mf.database_id = ftg.databaseid)
AND (mf.NAME = ftg.[FileName])
WHERE (
ftg.EventClass = 92 -- Data File Auto-grow
OR ftg.EventClass = 93
) -- Log File Auto-grow
ORDER BY ftg.StartTime
SELECT count(1) AS NoOfTimesEventFired
,CONVERT(VARCHAR(10), StartTime, 120) AS StartTime
,EventName
,DatabaseName
,[LogicalFileName]
,PhysicalFileName
,SUM(GrowthMB) AS TotalGrowthMB
,SUM(DurMS) AS TotalDurationMS
INTO #autogrowthTotal_Final
FROM #autogrowthTotal
GROUP BY CONVERT(VARCHAR(10), StartTime, 120)
,EventName
,DatabaseName
,[LogicalFileName]
,PhysicalFileName
--having count(1) > 5 or SUM(DurMS)/1000 > 60 -- change this for finetuning....
ORDER BY CONVERT(VARCHAR(10), StartTime, 120)
SELECT *
FROM #autogrowthTotal_Final
Dưới đây sẽ là đầu ra
Lưu ý: Tôi đã nhấn mạnh trong hình ảnh ý nghĩa của từng cột và những gì bạn nên tìm kiếm.
Về cơ bản, bạn phải theo dõi các sự kiện phát triển tự động trong một khoảng thời gian, ví dụ như trong hoạt động cao hoặc cho toàn bộ chu kỳ kinh doanh của bạn và sau đó tính trung bình nó sẽ cung cấp cho bạn một số giá trị chính xác mà bạn có thể chọn cho cài đặt tự động phát triển.
Bây giờ, đối với tệp Nhật ký, bạn cũng phải xem xét các yếu tố như Bảo trì chỉ mục, chạy CHECKDB, v.v. Vì vậy, hãy kích thước tệp nhật ký để hỗ trợ khối lượng thay đổi dữ liệu xảy ra trong cơ sở dữ liệu và thường xuyên sao lưu nhật ký để cho phép sử dụng lại không gian nhanh chóng trong tệp nhật ký.
Ngoài ra, đáng nói là bạn cũng nên kích hoạt Khởi tạo tệp tức thì . Chỉ hoạt động cho các tệp dữ liệu!
Tham khảo Tầm quan trọng của việc quản lý kích thước tệp dữ liệu, đặc biệt là sự tăng trưởng tệp dữ liệu và thu hẹp tệp dữ liệu của Paul Randal.
Lưu ý: Không thu hẹp cơ sở dữ liệu của bạn, trừ khi bạn thực hiện một đợt thanh lọc dữ liệu khổng lồ và bạn chắc chắn rằng cơ sở dữ liệu sẽ không phát triển lớn như vậy nữa. Nó gây ra sự phân mảnh và cơ sở dữ liệu có nghĩa là để phát triển!