Съображения за настройките "autogrow" (автоматично нарастване) и "autoshrink" (автоматично свиване) в SQL Server

Преводи на статии Преводи на статии
ID на статията: 315512 - Преглед на продукти, за които се отнася тази статия.
Разгъване на всички | Сгъване на всички

КРАТКО ИЗЛОЖЕНИЕ

Настройките по подразбиране autogrow и autoshrink ще работят за вас без донастройване в много системи SQL Server. Има обаче среди, където не е необходимо да включвате или изключвате настройките или където може да се налага да регулирате параметрите autogrow и autoshrink. Тази статия ви дава базова информация, която да ви ръководи, когато избирате настройките за вашата среда.

ДОПЪЛНИТЕЛНА ИНФОРМАЦИЯ

Ето някои неща, които трябва да обсъдите, ако решите да настроите вашите параметри autogrow и autoshrink.

Как да конфигурирам настройките?

  1. Можете да конфигурирате настройките autogrow и autoshrink по един от следните начини:
    • Инструкцията ALTER DATABASE (не е налична в SQL Server 7.0)
    • SQL Server Management Studio или SQL Enterprise Manager
    • Съхранената процедура sp_dboption (която не се препоръчва в SQL Server 2005)
    Забележка Ако използвате SQL Server 2005, използвайте SQL Server Management Studio вместо SQL Enterprise Manager. За повече информация как да зададете тези настройки в SQL Server 2005 посетете следните уеб сайтове на Microsoft Developer Network (MSDN):
    Как да: Добавяте данни или регистрационни файлове към база данни (SQL Server Management Studio)
    http://msdn.microsoft.com/bg-bg/library/ms189253.aspx
    Свойства на бази данни (страница "Файлове")
    http://msdn.microsoft.com/bg-bg/library/ms180254.aspx
    Можете също да конфигурирате опцията autogrow, когато създавате база данни.

    Можете да преглеждате текущите настройки чрез свойствата на базата данни в SQL Enterprise Manager (SEM). Или можете да изпълните следната команда на Transact-SQL:
    sp_helpdb [ [ @dbname= ] 'name' ]
  2. Не забравяйте, че настройките на autogrow са отделни за всеки файл. Следователно трябва да ги зададете поне на две места за всяка база данни (едното за първичния файл с данни и другото за първичния регистрационен файл) Ако имате множество данни и/или регистрационни файлове, трябва да зададете опциите във всеки файл. В зависимост от средата можете да завършите с различни настройки за всеки файл на базата данни.

Какъв е смисълът на показателите?

  • Ако изпълните транзакция, която изисква повече пространство за регистрационен файл от наличното, и сте включили опцията autogrow за регистрационния файл на транзакцията на тази база данни, то времето, необходимо за завършването на транзакцията, ще включва времето, необходимо за нарастването на транзакцията на регистрационния файл с конфигурирания размер. Ако увеличението на нарастването е голямо или има друг фактор, който причинява забавянето му, заявката, в която отваряте транзакция, може да завърши неуспешно поради грешка във времето на изчакване. Същият проблем може да възникне от автоматичното нарастване на частта от данните на вашата база данни. За да промените конфигурацията на autogrow, вижте темата "ALTER DATABASE" (променяне на база данни) в SQL Server Books Online.
  • Ако изпълнявате голяма транзакция, която изисква нарастване на регистрационния файл, другите транзакции, които изискват записване в регистрационния файл на транзакцията, също ще трябва да изчакат, докато операцията за нарастване завърши.
  • Ако комбинирате опциите autogrow и autoshrink, може да създадете ненужни служебни ресурси. Уверете се, че праговете, които задействат операциите за нарастване и свиване, няма да водят до чести увеличения или намаления на размера. Например може да изпълните транзакция, която причинява нарастване на регистрационния файл на транзакцията със 100 МБ през времето на фиксирането й. Известно време след това autoshrink започва и свива регистрационния файл на транзакцията със 100 МБ. След това изпълнявате същата транзакция и тя причинява ново нарастване на регистрационния файл на транзакцията със 100 МБ. В този пример вие създавате ненужни служебни ресурси и потенциално създавате фрагментиране на регистрационния файл, като и в двата случая може да повлияете отрицателно върху показателите.
  • Физическото фрагментиране поради променянето на размерите на данните или регистрационните файлове може да има силно влияние върху показателите. Това е така, независимо дали използвате автоматичните настройки, или често увеличавате и свивате файловете ръчно.
  • Ако увеличавате вашата база данни с малки стъпки или я увеличите и след това я свиете, можете да се получи фрагментиране на диска. При някои обстоятелства фрагментирането на диска може да доведе до проблеми с показателите. Сценарият с малки нарастъци също може да намали показателите във вашата система.
  • В SQL Server 2005 или в по-късните версии можете да разрешите незабавна инициализация на файл. Незабавната инициализация на файл ускорява разпределението на файлове само за файлове с данни. Незабавната инициализация на файл не се отнася за регистрационни файлове.
  • Ако имате много нараствания във вашите регистрационни файлове, може да имате прекалено голям брой виртуални регистрационни файлове (VLF). Това може да доведе до проблеми с показателите при операциите за стартиране/онлайн, репликация, дублиране и заснемане на промени на данни (CDC) в бази данни. Понякога това може да доведе и до проблеми с показателите при модифициране на данни.

Добри практики

  • При управлявани производствени системи трябва да обсъдите дали autogrow да се използва само за неочаквани нараствания. Не управлявайте нарастването на вашите данни и регистрационни файлове с autogrow на дневна база.
  • Можете да използвате предупреждения или програми за мониторинг, за да следите превантивно размера на файловете и нарастването на файлове. Това може да ви помогне да да избегнете фрагментирането и да ви позволи да преместите тези поддържащи дейности извън пиковите часове.
  • AutoShrink и autogrow трябва да се оценяват внимателно от опитен администратор на бази данни (DBA); те не трябва да се оставят без управление.
  • Нарастъкът на autogrow трябва да бъде достатъчно голям, за да се избегне влошаването на показателите, описано в предишния раздел. Точната стойност, която трябва да използвате в настройката на вашата конфигурация, и изборът между нарастването в проценти и конкретния размер на нарастването в МБ зависи от много фактори във вашата среда. Едно общо емпирично правило, което можете да използвате за тестване, е да зададете настройката на autogrow на една осма от размера на файла.
  • Включете настройката <MAXSIZE> за всеки файл, за да го предпазите от нарастване до точка, при която използва цялото налично дисково пространство.
  • Поддържайте размера на вашите транзакции колкото е възможно по-малък, за да предотвратите непланираното нарастване на файловете.

Защо трябва да се грижа за дисковото пространство, щом настройките на размерите се управляват автоматично?

  • Настройката autogrow не може да увеличава размера на базата данни извън ограниченията за наличното дисково пространство в устройствата, за които са дефинирани файловете. Следователно, ако разчитате на действието на autogrow, за да оразмерявате вашите бази данни, трябва въпреки това да контролирате наличното дисково пространство. Освен това настройкатаautogrow е ограничена от параметъра MAXSIZE, който сте избрали за всеки файл. За да намалите възможността за недостиг на памет, можете да следите брояча "Монитор на производителността" SQL Server: Обект на бази данни: Размери на файлове с данни (КБ) и да зададете предупреждение за случаите, когато базата данни достигне определен размер.
  • Непланираното нарастване на файлове с данни или регистрационни файлове може да отнеме пространство, което други приложения очакват да бъде налично, и може да предизвика проблеми в тези приложения.
  • Нарастъкът на вашия регистрационен файл на транзакцията трябва да бъде достатъчно голям, за да задоволи нуждите на вашите транзакционни блокове. Дори с включена настройка autogrow вие може да получите съобщение, че регистрационният файл на транзакцията е пълен, ако той не може да нарасне достатъчно бързо, за да удовлетвори нуждите на вашата заявка.
  • SQL Server не проверява непрекъснато бази данни, които са достигнали конфигурирания праг за autoshrink. Вместо това той следи наличните бази данни и намира първата от тях, която е конфигурирана за автоматично свиване. Той проверява тази база данни и я свива, ако това е необходимо. След това той изчаква няколко минути, преди да провери следващата база данни, която е конфигурирана за autoshrink. С други думи, SQL Server не проверява и не свива всички бази данни наведнъж. Той ще обработва базите данни циклично, за да намали натоварването за определен период. Следователно, в зависимост от това колко бази данни в конкретен екземпляр на SQL Server сте конфигурирали за автоматично свиване, може да изминат няколко часа от момента, когато базата данни достигне прага, до момента, когато тя действително се свива.

БИБЛИОГРАФИЯ

За допълнителна информация как да увеличите и свиете база данни и регистрационни файлове щракнете върху следните номера на статии, за да видите статиите в базата знания на Microsoft:
256650 Как да свиете регистрационния файл на транзакция на SQL Server 7.0 (Тази връзка може да сочи към съдържание, което е отчасти или изцяло на английски)
272318 Свиване на регистрационния файл на транзакцията в SQL Server 2000 с DBCC SHRINKFILE (Тази връзка може да сочи към съдържание, което е отчасти или изцяло на английски)
317375 Регистрационен файл на транзакция нараства неочаквано или става пълен в компютър, изпълняващ SQL Server (Тази връзка може да сочи към съдържание, което е отчасти или изцяло на английски)
247751 СОФТУЕРНА ГРЕШКА: План за поддръжка на база данни не свива базата данни (Тази връзка може да сочи към съдържание, което е отчасти или изцяло на английски)
305635 Изтичане на времето за изчакване при автоматично разширяване на база данни (Тази връзка може да сочи към съдържание, което е отчасти или изцяло на английски)
949523 Закъснението на транзакционната репликация е голямо в SQL Server 2005, докато стойността на свойството "Начален размер" и стойността на свойството Autogrowth са малки (Тази връзка може да сочи към съдържание, което е отчасти или изцяло на английски)
За повече информация за инициализацията на файл на база данни посетете следния уеб сайт на Microsoft Developer Network (MSDN):
Инициализация на файл на база данни
За повече информация за разрешаването на незабавна инициализация на файл посетете следния уеб сайт на Microsoft:
Как и защо да разрешите незабавна инициализация на файл
За повече информация за физическата архитектура на регистрационен файл на транзакция посетете следния уеб сайт на MSDN:
SQL Server Books Online; теми: "Физическа архитектура на регистрационен файл на транзакция"; "Свиване на регистрационен файл на транзакция"

Свойства

ID на статията: 315512 - Последна рецензия: 17 септември 2011 г. - Редакция: 3.0
ВАЖИ ЗА:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Ключови думи: 
kbsqlssrs kbinfo KB315512

Изпратете обратна информация

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com