Остановить службы SQL Server перед дефрагментацией диска?

8

Файлы данных нашей производственной базы данных SQL Server 2005 находятся на отдельном физическом диске, который инструмент дефрагментации диска Microsoft Windows 2003 сообщает как фрагментированный на 99%.

Мы запланировали задачу дефрагментировать этот диск в 3 часа утра в субботу утром. Задание выполнено через 40 минут без видимых ошибок. Однако диск остается сильно фрагментированным.

Должны ли мы остановить службы SQL Server перед дефрагментацией?

КОНТЕКСТ

В зависимости от запросов: у нас есть экземпляр Microsoft SQL Server 2005 (9.00.5324.00), работающий под управлением 32-разрядной Windows Server 2003 (SP2) на оборудовании Dell PowerEdge 2950, ​​около 2007 года, с 4 ГБ ОЗУ. PowerEdge 2950 имеет четыре диска по 68 ГБ, настроенных как RAID-1 для создания двух виртуальных дисков по 68 ГБ: (1) C (загрузка и ОС) и D (файл подкачки, другие данные); и (2) E (данные SQL). Насколько мне известно, ИТ-специалисты никогда не дефрагментировали ни один из этих дисков ... Disk Defragmenter сообщает о фрагментации файлов на 66% (C), 77% (D) и 99% (E). Системный монитор сообщает о следующих средних результатах: «Файл подкачки:% использования» = ~ 6,8% ; «SQL Server: менеджер буфера - ожидаемая продолжительность жизни страницы» = 20 секунд ; и «PhysicalDisk: средняя скорость записи в секунду на диск, диск E» = от 300 до 1,, Мы должны в течение нескольких месяцев произвести столь необходимое обновление оборудования и SQL Server (а именно: новое оборудование, 64-разрядную версию Windows Server 2012, 64-разрядную версию SQL Server 2012, 12 ГБ ОЗУ), но из-за производительность пользователя, хотите максимально облегчить проблему. Таким образом, мысль о дефрагментации файла может помочь для диска E, основного диска с данными SQL.

Кроме того, на прошлой неделе мы вытащили два неисправных диска и восстановили массив ... не уверенный, что это имеет значение. Мы заключаем договор с другой ИТ-командой на обслуживание сервера, поэтому у нас нет прямого доступа к оборудованию ... наша организация просто оплачивает услуги.

Мы можем позволить себе время простоя во время плановых периодов обслуживания (еженедельно), а также внеполосное время простоя, если необходимо, на ночь.

iokevins
источник
6
Есть ли у вас какие-либо измерения, чтобы указать, что фрагментация физического диска оказывает значительное влияние? Можете ли вы позволить себе время простоя?
Ремус Русану
2
@RemusRusanu - как узнать, оказывает ли данный уровень фрагментации отрицательный общий эффект на систему, фактически не дефрагментируя ее? Проверка количества разделенных операций ввода-вывода с помощью системного монитора может помочь, хотя будет сложно сопоставить это с деятельностью в SQL Server. Кстати, это не противостояние, мне действительно любопытно!
Макс Вернон
4
@MaxVernon: Ради теории, я думаю, XPerf . Можно также измерить бок о бок, создав нефрагментированную базу данных на том же диске и запустив захваченную рабочую нагрузку. Однако, по всем практическим причинам, вероятность того, что в приложении возникнут проблемы с производительностью и из-за фрагментации, огромна.
Ремус Русану
3
Мой опыт подсказывает мне, что 99 раз из 100 (или больше) я бы точно согласился. Проблемы с производительностью, скорее всего, могут быть вызваны тем, что некоторые ORM SELECT *повсеместно работают , или какой-то другой халатностью.
Макс Вернон
1
Прежде чем вносить какие-либо другие изменения и, конечно же, перед попыткой дефрагментации, вы должны убедиться, что массивы полностью перестроены. И совет для вашей новой системы - получите столько ОЗУ, сколько можете себе позволить, - вы хотите, чтобы ваши данные SQL регулярно обращались в памяти, поскольку ОЗУ в 1000 раз быстрее, чем самые быстрые диски.
Макс Вернон

Ответы:

2

Я лично использовал Raxco PerfectDisk (никак не связанный с компанией или кем-либо из ее сотрудников) для онлайн-дефрагментации логических модулей SQL Server. Работает отлично, если немного замедляет работу сервера. Я бы рекомендовал делать это в периоды легкой активности. Когда я говорю «работает отлично», я имею в виду, что он не портит том или файлы данных SQL.

Встроенный дефрагментатор работает очень плохо, если определенные структуры фрагментированы на диске. PerfectDisk показывает подробную информацию обо всех фрагментарных элементах, включая таблицы размещения NTFS, каталоги, альтернативные потоки файлов и т. Д. И т. Д.

PerfectDisk дефрагментирует базы данных SQL? http://support.raxco.com/KB/a106/does-perfectdisk-defragment-sql-databases.aspx

Посмотрите эту архивную копию журнала Technet News Magazine относительно SQL Server и фрагментации: http://web.archive.org/web/20100803204458/http://www.microsoft.com/technet/abouttn/flash/tips/tips_083104.mspx

Макс Вернон
источник
2
Но у комментария Ремуса гораздо больше достоинств, чем просто указание на какой-то продукт. Я не верю, что когда-либо дефрагментировал диск Windows, на котором был SQL, и никогда не видел убедительных признаков того, что мне это нужно. Windows может сказать, что диск фрагментирован, но важно то, испытывает ли SQL Server какие-либо проблемы из-за этого. Я подозреваю, что во многих случаях это действительно не имеет значения, и вообще нет необходимости запускать дефрагментацию на уровне файловой системы. Вы говорите, что это «отлично работает», но действительно ли вы наблюдали заметное улучшение? Можете ли вы предоставить подробности?
Аарон Бертран
1
Я согласен, Аарон, в большинстве случаев физическая фрагментация на правильно спроектированном SQL Server будет иметь минимальный эффект. Даже в этом случае, когда пользователь сообщает о 99% фрагментации. Однако, если у пользователя есть свои базы данных SQL на том же LUN, что и O / S, и это происходит на одном диске или массиве RAID с небольшим набором шпинделей, может оказать влияние чрезмерная фрагментация.
Макс Вернон
1
Под «действительно чрезмерным» я подразумеваю тысячи и тысячи фрагментов. Подумайте сотни тысяч. Я видел это. Не то, что я горжусь или что-то еще!
Макс Вернон
Как сказал Брент Озар, если вы работаете с базами данных SQL в сети SAN, где данные совместно используются одним гигантским массивом RAID, физическая дефрагментация (и действительно логическая дефрагментация SQL), скорее всего, не окажет какого-либо ощутимого положительного эффекта на общую производительность системы.
Макс Вернон
Я отмечаю это как лучший текущий ответ, так как кажется, что «Да», если мы используем правильный инструмент. Спасибо!
iokevins
7

Ваша проблема не в фрагментации диска. Ваша проблема - сканирование ОЗУ и таблицы приложений:

4 ГБ ОЗУ ... 68 ГБ ... Продолжительность жизни страницы 20 секунд

Вам нужно путь больше оперативной памяти. Как на вашем новом сервере должно быть путь, путь, способ, путь больше, чем 12 ГБ. Начните с 64 ГБ, это стоит в основном десять центов . И да, исправьте ваше приложение, чтобы использовать индексы. 20 секунд - это очень четкое указание сканирования таблиц, которые уничтожают пул буферов. Вам нужно исправить приложение, добавить необходимые индексы и исправить ваши запросы . Для вашего случая дефрагментация дисков - это такая же красная сельдь, как и красная сельдь.

О, и, пожалуйста, переместите журнал, чтобы отделить физические шпиндели от данных . Один.

Ремус Русану
источник
Спасибо Ремус; если бы только я управлял миром .... Мы заключаем контракт с сторонним поставщиком для приложения, поэтому, к сожалению, не под нашим прямым контролем. Я ценю ваше понимание, спасибо.
iokevins
1
Больше оперативной памяти и твердотельных накопителей может облегчить вам выход при довольно ограниченном бюджете. Но приложение нуждается в исправлении.
Ремус Русану
Как следствие, после дефрагментации диска производительность лишь незначительно улучшилась. Ремус, похоже, прав в своем диагнозе проблемы с оперативной памятью.
iokevins
@RemusRusanu имеет ли смысл пытаться оптимизировать файлы, размещенные на разных дисках виртуальных серверов (vmware)? Это общий вопрос невежества виртуализации ...
diegohb
-4

Брэд МакГи хорошо описывает это здесь:

http://www.bradmcgehee.com/2011/06/do-you-ever-physically-defragment-your-sql-server-mdf-ldf-files/

... если вы оставите службу SQL Server работающей во время дефрагментации, файлы базы данных будут открыты и, следовательно, вообще не будут дефрагментированы.

DBA_ANDY
источник
2
Абсолютно неверно. По крайней мере, в последних версиях Windows. Как в Windows Server 2003+ или Windows XP +
Макс Вернон
1
Все средства дефрагментации Windows используют системные API для дефрагментации файлов и делают это на уровне кластера под API доступа к файлам. Вот как папки могут быть дефрагментированы с томом онлайн.
Макс Вернон,