Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как можно ускорить выполнение DBCC CHECKDB ??  [new]
Mikhalich
Member

Откуда:
Сообщений: 291
Например, это поможет??
ALTER DATABASE [$(DB_Name)] SET RESTRICTED_USER WITH ROLLBACK AFTER 20 SECONDS;

Или, может что-нибудь еще???
7 авг 12, 09:18    [12972702]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mikhalich
Например, это поможет??
ALTER DATABASE [$(DB_Name)] SET RESTRICTED_USER WITH ROLLBACK AFTER 20 SECONDS;


DBCC CHECKDB uses an internal database snapshot for the transactional consistency needed to perform these checks. This prevents blocking and concurrency problems when these commands are executed.
7 авг 12, 10:38    [12973102]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2994
а если у человека 2000?
7 авг 12, 11:53    [12973893]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
Glory
Member

Откуда:
Сообщений: 104760
HandKot
а если у человека 2000?

Тогда надо открыть хелп по 2000 и прочитать
DBCC CHECKDB does not acquire table locks by default. Instead, it acquires schema locks that prevent meta data changes but allow changes to the data. The schema locks acquired will prevent the user from getting an exclusive table lock required to build a clustered index, drop any index, or truncate the table.
7 авг 12, 11:57    [12973952]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2994
я к тому и говорю, что если в этот момент пользователь что-то делает "build a clustered index, drop any index etc", то DBCC будет ждать пока пользователь не завершит операцию, чтобы наложить блокировку на схему

так что думаю, что
ALTER DATABASE [$(DB_Name)] SET RESTRICTED_USER WITH ROLLBACK AFTER 20 SECONDS;

вполне может помочь
7 авг 12, 12:02    [12974014]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
Mikhalich
Member

Откуда:
Сообщений: 291
Win2k8 R2 x64 + SQL 2008 x64.
Сервер не нагружен (все юзери отключены). Гоняю:
DBCC CHECKDB ([DB_Name]) WITH NO_INFOMSGS, ALL_ERRORMSGS, DATA_PURITY, EXTENDED_LOGICAL_CHECKS, TABLOCK;

При этом загрузка процессора не поднимается более 10%, а с диска идет поток всего в ~40 МБайт/сек (хотя это массив на SSD и выдает туеву кучу МБайт/сек по чтению).
Можно ли как-то ускорить проверку базы??
20 авг 12, 15:33    [13037654]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Каков размер бд и сколько отдано серверу памяти? tempdb тоже на SSD?

ЗЫ. EXTENDED_LOGICAL_CHECKS и DATA_PURITY ну никак не добавляют прыти DBCC...
20 авг 12, 16:10    [13037929]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
Да никак особо. Долгая и нудная эта CHECKDB, поэтому на отдельном сервере поднимаем из бэкапа и тестим до упора.

Сообщение было отредактировано: 20 авг 12, 16:12
20 авг 12, 16:12    [13037943]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
Mikhalich
Member

Откуда:
Сообщений: 291
pkarklin
Каков размер бд и сколько отдано серверу памяти? tempdb тоже на SSD?

База ~100 гигов. Оперативка 192 гига. SQL-серверу отдано 150 гигов. tempdb на RAM-диске (сейчас RAM-диск 20 гигов).



pkarklin
ЗЫ. EXTENDED_LOGICAL_CHECKS и DATA_PURITY ну никак не добавляют прыти DBCC...


Дык ладно бы он жрал процессор на 100%, а то не более 10%.....
20 авг 12, 16:20    [13037986]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
Mikhalich
Member

Откуда:
Сообщений: 291
Гавриленко Сергей Алексеевич
Да никак особо. Долгая и нудная эта CHECKDB, поэтому на отдельном сервере поднимаем из бэкапа и тестим до упора.


Как бы ей скормить аппаратные ресурсы по максимуму. А то такое ощущение, что там между строчками постоянно Sleep вызывается...
20 авг 12, 16:22    [13037995]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
Mikhalich
Member

Откуда:
Сообщений: 291
Забыл уточнить - в настройках SQL-сервера до кучи включена галочка "Поддерживать приоритет SQL Server"
20 авг 12, 16:25    [13038017]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
Ну не хочет она параллелиться. Возможно, имеет смысл идти через другие DBCC CHECK..., запуская их параллельно (не проверял). Но, насколько я помню, CHECKDB делает некоторые проверки, которые никаким другим способом не сделать (типа, проверки индексированных представлений).
20 авг 12, 16:27    [13038042]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
Mikhalich
Забыл уточнить - в настройках SQL-сервера до кучи включена галочка "Поддерживать приоритет SQL Server"

Вот не надо галки "до кучи тыкать". Сами потом будете об эти грабли спотыкаться.
20 авг 12, 16:28    [13038045]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
Mikhalich
Member

Откуда:
Сообщений: 291
Гавриленко Сергей Алексеевич
Ну не хочет она параллелиться. Возможно, имеет смысл идти через другие DBCC CHECK..., запуская их параллельно (не проверял). Но, насколько я помню, CHECKDB делает некоторые проверки, которые никаким другим способом не сделать (типа, проверки индексированных представлений).


Мда... Похоже пичалька... Ландо, придется смириться с этим фактом...

Спасибо за помощь!!!


Гавриленко Сергей Алексеевич
Вот не надо галки "до кучи тыкать". Сами потом будете об эти грабли спотыкаться.


Так это стандартная настройка и даже вынесенная в GUI, а сервак предназначен чисто под SQL Server.
21 авг 12, 10:16    [13041314]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
что вернёт DBCC TRACESTATUS(-1)
не включен ли случаем флаг трассировки 2528 ?
22 авг 12, 14:20    [13049331]     Ответить | Цитировать Сообщить модератору
 Re: Как можно ускорить выполнение DBCC CHECKDB ??  [new]
Mikhalich
Member

Откуда:
Сообщений: 291
stavgreengo
что вернёт DBCC TRACESTATUS(-1)


TraceFlag Status Global Session
--------- ------ ------ -------
834 1 1 0


stavgreengo
что вернёт DBCC TRACESTATUS(-1)
не включен ли случаем флаг трассировки 2528 ?

Не, не включал
22 авг 12, 15:04    [13049743]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить