Рекомендации по обслуживанию MS SQL
Модераторы: m0p3e, edward_K, Модераторы
-
- Посетитель
- Сообщения: 47
- Зарегистрирован: 15 фев 2011, 12:00
- Откуда: Киров, ЗАО "Красный якорь"
- Контактная информация:
Рекомендации по обслуживанию MS SQL
Со временем база сильно разраслась, и работает заметно медленнее.
Может кто подскажет какие-то регламентные работы по MS SQL для увеличения быстродействия и снижения объема?
Может кто подскажет какие-то регламентные работы по MS SQL для увеличения быстродействия и снижения объема?
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Рекомендации по обслуживанию MS SQL
Все здесь относится к Studio!
Чистка хранимых процедур - требует выгона всех.
Чистка значений хэша - как правило всегда после установки патчей(там это есть в рекомендациях)
Ну а дальше нужно смотреть почему база разраслась.
1. Нужно смотреть на файл журнала - я ставлю требование, что он не должен быть больше 10 гиг
2. System - как правило там не больше 2 гиг
3. Лог - как правило его размер должен быть фиксирован под самую большую транзакцию - от 2 гиг до 50(для очень большой базы + работа переиндексации в агенте)
также попробуйте сжать(Shrink даже без запуска) таблицы - посмотрите сколько там свободного места. Можно сжать с реорганизацией - будет чутка шустрее. Приведите здесь на каждый файл информацию - размер , свободно
Ну и обычное Del tmp*.* по всему диску и прочего мусора. Дефрагментация винта, и так далее.
По чистке галактических данных вам лучше обратиться в ТП. Есть автоматические режимы, что то можно руками подчистить - в общем это отдельная тема.
Чистка хранимых процедур - требует выгона всех.
Код: Выделить всё
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF EXISTS (SELECT * FROM sys.objects WHERE
object_id = OBJECT_ID(N'[dbo].[DelAtlProc]')
AND type in (N'P', N'PC'))
DROP PROC [dbo].[DelAtlProc]
GO
Create proc [dbo].[DelAtlProc]
as
begin
Declare @DelProc varchar(150)
Declare RecCur Cursor FAST_FORWARD For
-----------
select
'Drop Procedure dbo.' + obj.name
From sys.all_objects as obj
Where obj.Type='P' And obj.Name Like '%0000000%'
and (not (obj.Name Like 'NT00000000%'))
AND OBJ.modify_date<DATEADD(DD,-15,GETDATE())
-----------
Open RecCur
Fetch Next From RecCur Into @DelProc
if @DelProc<>''
exec (@DelProc)
While @@FETCH_STATUS = 0
begin
Fetch Next From RecCur Into @DelProc
exec (@DelProc)
end
Close RecCur
Deallocate RecCur
return 1
end
GO
Go
exec dbo.DelAtlProc
go
Код: Выделить всё
USE BASE
truncate table xx$hashvalues
1. Нужно смотреть на файл журнала - я ставлю требование, что он не должен быть больше 10 гиг
2. System - как правило там не больше 2 гиг
3. Лог - как правило его размер должен быть фиксирован под самую большую транзакцию - от 2 гиг до 50(для очень большой базы + работа переиндексации в агенте)
также попробуйте сжать(Shrink даже без запуска) таблицы - посмотрите сколько там свободного места. Можно сжать с реорганизацией - будет чутка шустрее. Приведите здесь на каждый файл информацию - размер , свободно
Ну и обычное Del tmp*.* по всему диску и прочего мусора. Дефрагментация винта, и так далее.
По чистке галактических данных вам лучше обратиться в ТП. Есть автоматические режимы, что то можно руками подчистить - в общем это отдельная тема.
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Рекомендации по обслуживанию MS SQL
Все, прям-таки, вряд ли разрослось . Работают медленнее, почти наверняка, какие то конкретные процессы (запускаемые внутри гал - будь то расчет остатков каких либо, пакетное проведение ордеров, расчет зэпы, формирование каких то отчетов). Их и нужно анализировать и оптимизировать стараться . Если объемы таблиц некоторых содержат большое кол-во данных (эта цифра неоднозначна - в смысле зависеть может от вашего железа, когда и несколько млн записей уже будут критичны, а может и несколько десятков млн записей быть не критичны), нужно задуматься над обрезкой БД в свете этого (удаление складских ордеров, бух сальдо и проводок и т.п.).VarankDA писал(а):база сильно разраслась, и работает заметно медленнее.
Со стороны hardware можно тоже попробовать что то поделать (если есть ресурсы для этого ). Попробуйте, например, тупо добавить ОЗУ в 2 раза больше на сервак БД. И прогнать тебе самые процессы ДО и ПОСЛЕ сего действа , на предмет посмотреть "станет ли быстрее".
-
- Местный житель
- Сообщения: 552
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Челябинск
- Контактная информация:
Re: Рекомендации по обслуживанию MS SQL
Добрый день всем! У нас такая же проблема- тормоза у клиентов с Win10 Pro, ищем причину. Имеется такой зоопарк:
Windows Server 2008 R2 Standard 8-х ядерный 64-х, 3,4..3,9 Ггц, Озу 32 Гб
На нём живут:
1. MS Sql Server 2008 R2 Standard
2. Галактика 9.1.5529, двухуровневая архитектура
3. Пользователи удалённого раб.стола- до 7 сессий одновременно
4. Основная база: System-1,7Gb; Log- 31Gb; Journal- 4Gb; Data- 6Gb
5. Есть доработанные интерфейсы и тяжёленькие процедуры для сводных отчётов
6. Сеть 1гигабит, обмен с сервером ключа пакетами TCP
На клиентах стоят Win10 Pro 16Gb- всё остальное летает, Галактика же тормозит в разных местах
Сервер не сказать, что перегружен:
Windows Server 2008 R2 Standard 8-х ядерный 64-х, 3,4..3,9 Ггц, Озу 32 Гб
На нём живут:
1. MS Sql Server 2008 R2 Standard
2. Галактика 9.1.5529, двухуровневая архитектура
3. Пользователи удалённого раб.стола- до 7 сессий одновременно
4. Основная база: System-1,7Gb; Log- 31Gb; Journal- 4Gb; Data- 6Gb
5. Есть доработанные интерфейсы и тяжёленькие процедуры для сводных отчётов
6. Сеть 1гигабит, обмен с сервером ключа пакетами TCP
На клиентах стоят Win10 Pro 16Gb- всё остальное летает, Галактика же тормозит в разных местах
Сервер не сказать, что перегружен:
Последний раз редактировалось zna 04 фев 2019, 14:01, всего редактировалось 1 раз.
-
- Местный житель
- Сообщения: 552
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Челябинск
- Контактная информация:
Re: Рекомендации по обслуживанию MS SQL
Есть подозрение на то, что MS SQL 2008, хоть он и R2, в связке с Win10 вносят свой вклад в тормоза, т.к. не являются рекомендованной конфигурацией, как это написано в документации softcfg.
Вопросы:
1. Для Win 10, в соответствии с рекомендациями, нужен Ms Sql 2012. Это даст ощутимый прирост на клиенте?
2. Есть мысль развернуть сервер приложений и перевести на него часть клиентов, которые сейчас в терминальном режиме. Это возможно на инсталлированной рабочей двухуровневой архитектуре?
Вопросы:
1. Для Win 10, в соответствии с рекомендациями, нужен Ms Sql 2012. Это даст ощутимый прирост на клиенте?
2. Есть мысль развернуть сервер приложений и перевести на него часть клиентов, которые сейчас в терминальном режиме. Это возможно на инсталлированной рабочей двухуровневой архитектуре?
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Рекомендации по обслуживанию MS SQL
1. А вы давно запускали оптимизацию? Чистили то, что я писал выше и так далее
2. Советую почитать описания патчей. В частности ms70drv_dll_55330.txt ищем Native
В частности 106.10318 и так далее.
Года три назад драйвер заточили под использование Native Client
Притом просадка на обычном клиенте ODBC была значительная - до 7-10 раз.
Потом добавили параметры в Cfg для переключение оптимизации под основных клиентов
Рекомендуется использовать один тип клиента, поскольку иначе сервер вынужден обслуживать 2 плана выполнения.
Native Client априори шустрее, но иногда при длинных запросах он уходит в suspend(я не админ, подозреваю что дело в настройке сервера, но эмпиричеки установил, что запросы длинее 12 секунд опасны для работы).
Можно последить монитором ресурсов(В Studio в тулбаре) за процессами. Если появляются процесы в suspend, то с ними нужно разбиратся. Там же есть последние ресурсоемкие запросы. Если запрос тяжелый или слишком частый, то нужно искать причину его появления. Это тяжело.
Можно попробовать профайлером отследить(MSSQL или галактическим) аботу конкретного пользователя
3. Очень сильно помогает переключение пользовательских таблиц на локальный кэш (в DataBase параметр)
Там же нужно настроить таблицы для исключения( Pick нарпимер нужен некоторым отчетам на DSQL)
Ну и так далее.
В порядке критичности
1. Сеть
2. Память на сервере СУБД
3. Память на клиентской станции(в том числе и на терминальном сервере).
4. Процессор СУБД
5. Процессор на клиентской станции.
6. Тонкие и не очень настройки системы
7. Оптимизация кода.
Самый медленный процесс остановит всех.
Могу еще привести байку, как клиент меня год убеждал, что у них супер супер сеть. Из доступных средств был только Ping
-зациклив его на вывод в текстовый файл выяснил, что иногда случаются провалы(каждый день в одно и то тоже время - сервера стояли в очень хорошем месте).
В итоге через год поменяли все таки свичи и проблема ушла.
Трехзвенный клиент субъективно выйгрыша не даст - терминал не хуже, но тут нужно пробовать. + Раньше у него были ограничения например по Excel отчетам - не знаю решили или нет.
2. Советую почитать описания патчей. В частности ms70drv_dll_55330.txt ищем Native
В частности 106.10318 и так далее.
Года три назад драйвер заточили под использование Native Client
Притом просадка на обычном клиенте ODBC была значительная - до 7-10 раз.
Потом добавили параметры в Cfg для переключение оптимизации под основных клиентов
Рекомендуется использовать один тип клиента, поскольку иначе сервер вынужден обслуживать 2 плана выполнения.
Native Client априори шустрее, но иногда при длинных запросах он уходит в suspend(я не админ, подозреваю что дело в настройке сервера, но эмпиричеки установил, что запросы длинее 12 секунд опасны для работы).
Можно последить монитором ресурсов(В Studio в тулбаре) за процессами. Если появляются процесы в suspend, то с ними нужно разбиратся. Там же есть последние ресурсоемкие запросы. Если запрос тяжелый или слишком частый, то нужно искать причину его появления. Это тяжело.
Можно попробовать профайлером отследить(MSSQL или галактическим) аботу конкретного пользователя
3. Очень сильно помогает переключение пользовательских таблиц на локальный кэш (в DataBase параметр)
Там же нужно настроить таблицы для исключения( Pick нарпимер нужен некоторым отчетам на DSQL)
Ну и так далее.
В порядке критичности
1. Сеть
2. Память на сервере СУБД
3. Память на клиентской станции(в том числе и на терминальном сервере).
4. Процессор СУБД
5. Процессор на клиентской станции.
6. Тонкие и не очень настройки системы
7. Оптимизация кода.
Самый медленный процесс остановит всех.
Могу еще привести байку, как клиент меня год убеждал, что у них супер супер сеть. Из доступных средств был только Ping
-зациклив его на вывод в текстовый файл выяснил, что иногда случаются провалы(каждый день в одно и то тоже время - сервера стояли в очень хорошем месте).
В итоге через год поменяли все таки свичи и проблема ушла.
Трехзвенный клиент субъективно выйгрыша не даст - терминал не хуже, но тут нужно пробовать. + Раньше у него были ограничения например по Excel отчетам - не знаю решили или нет.
-
- Местный житель
- Сообщения: 552
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Челябинск
- Контактная информация:
Re: Рекомендации по обслуживанию MS SQL
п.1-Хранимые процедуры чищены, дисковая система недавно новая поставлена- тут норм.
п.2- свежая мысль, мы пользуем драйвер ОДВС старый- "SQL Server". В списке драйверов ОДВС есть SQL Server Native client 10.0 (и 11.0)- попробуем их.
Благодарю, Эдвард!
п.2- свежая мысль, мы пользуем драйвер ОДВС старый- "SQL Server". В списке драйверов ОДВС есть SQL Server Native client 10.0 (и 11.0)- попробуем их.
Благодарю, Эдвард!