Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
ХП обрабатыват таблицу около 500 т. записей - все летало достаточно прилично
НИЧЕГО не менял ни в коде ни в настройках сервера

Вдруг скорость обработки упала в разы, если не в 10-ки раз.
С чего это и как вернуть?

select @@version
Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86)   Mar 29 2009 10:27:29   Copyright (c) 1988-2008 Microsoft Corporation  Enterprise Evaluation Edition on Windows NT 6.0 <X86> (Build 6000: ) 

exec sp_configure
name	minimum	maximum	config_value	run_value
allow updates	0	1	0	0
backup compression default	0	1	0	0
clr enabled	0	1	1	1
cross db ownership chaining	0	1	0	0
default language	0	9999	21	21
filestream access level	0	2	0	0
max text repl size (B)	-1	2147483647	65536	65536
nested triggers	0	1	1	1
remote access	0	1	1	1
remote admin connections	0	1	0	0
remote login timeout (s)	0	2147483647	20	20
remote proc trans	0	1	0	0
remote query timeout (s)	0	2147483647	600	600
server trigger recursion	0	1	1	1
show advanced options	0	1	0	0
user options	0	32767	0	0

Помогите пжл восстановить производительность
Спасибо
7 июн 09, 12:38    [7273783]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
Denis A.
Member

Откуда: Челябинск
Сообщений: 353
namenike,

план запроса хранимой процедуры надо смотреть. Думаю либо из-за него, либо (что не исключает первого случая) из-за протухшей статистики индексов.
7 июн 09, 13:40    [7273847]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
Denis A., думаю, что статистика индексов не может протухнуть,
т.к. в начале ХП рабочие таблицы чистятся DELETE-ом вставляются новые данные.
Таблиц две
Превая
CREATE TABLE [dbo].[t_InStudy](
	[D] [datetime] NOT NULL,
	[H] [decimal](10, 6) NOT NULL,
	[L] [decimal](10, 6) NOT NULL,
PRIMARY KEY CLUSTERED 
( [D] ASC )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] 

Вторая
CREATE TABLE [dbo].[t_CommonStudy](
	[T0] [datetime] NOT NULL,
	[P1] [decimal](10, 5) NULL,
	[PMax] [decimal](10, 5) NULL,
	[TMax] [datetime] NULL,
	[PMin] [decimal](10, 5) NULL,
	[TMin] [datetime] NULL,
PRIMARY KEY CLUSTERED 
( [T0] ASC )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] 
Затем делается
	Delete from t_CommonStudy
	Insert Into t_CommonStudy (T0) Select D from t_InStudy 

Запрос фактически один
UPDATE t_CommonStudy  Set  
PMax = (Select MAX(H) From t_InStudy where T0 > D And T0 <= D + Cast( 'янв  1 1900 12:30AM' as datetime ) ), 
PMin = (Select MIN(L) From t_InStudy where T0 > D And T0 <= D + Cast( 'янв  1 1900 12:30AM' as datetime ) )
Where P1 is NULL
т.е. ищем макс и минимум в пердыдущем периоде от T0 (текущего значения) до T0 минус 'янв 1 1900 12:30AM' для каждой записи.

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

Из за чего начало тормозить?
7 июн 09, 14:13    [7273894]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
смотрю запросом
select      so.name as [Процедура],      u.name as [Пользователь],
      case when sql_handle IS NULL            then ' '
            else ( substring(st.text,(qs.statement_start_offset+2)/2,(
               case when qs.statement_end_offset = -1        
               then len(convert(nvarchar(MAX),st.text))*2      else qs.statement_end_offset    end - qs.statement_start_offset) /2  ) )
      end as query_text, 
    logical_reads,	reads,	writes,
cpu_time,	total_elapsed_time , qs.*, st.*
from master.sys.dm_exec_requests qs 
outer apply master.sys.dm_exec_sql_text(sql_handle) st
left join Trend.sys.objects so ON so.object_id = st.objectid
left join Trend.dbo.sysusers u ON u.uid = user_id
Where       case when sql_handle IS NULL
            then ' '
            else ( substring(st.text,(qs.statement_start_offset+2)/2,(
               case when qs.statement_end_offset = -1        
               then len(convert(nvarchar(MAX),st.text))*2      else qs.statement_end_offset    end - qs.statement_start_offset) /2  ) )
      end <> ''
order by 4 desc

поле write - первые 50 т. записей лихо записывает, а потом начинает тормозить

м.б. нужно к.н. своп БД расширить?
7 июн 09, 14:19    [7273900]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
Эксперементальным путем выяснено, что если разбить общий Update на 50 по 10 т. - все таки работает быстро.

Но это не устраняет первопричину - раньше все работало так же быстро и с одним Update-ом со всеми 500 т. записями.

Что нужно подправить, чтобы восстановилось быстродействие?
7 июн 09, 14:56    [7273954]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
не мудрить с файлом логов...

для спящего время бодрствования равносильно сну
7 июн 09, 15:17    [7273990]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
Алексей2003,
что это значит? что нужно сделать?
или что я возможно не так делаю с этимс файлом?
(я его, если честно, не трогал - там все по умолчанию как было при инсталяции сервака и создании БД, так и осталось - не трогал)
7 июн 09, 15:23    [7274001]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
размер лог файла и принцип его инкремента какой?

для спящего время бодрствования равносильно сну
7 июн 09, 15:26    [7274009]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
Алексей2003, м.б. его нужно чистить периодичеки?
или сжимать?
как это делать?
7 июн 09, 15:26    [7274011]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
Алексей2003
размер лог файла и принцип его инкремента какой?


Нач. размер 1078
Авторасширение 10%, рост ограничен до 2097152МБ

Сейчас размер 1,05 ГБ (1 130 299 392 байт)
7 июн 09, 15:31    [7274019]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
Сделал BACKUP БД

Размер БД стал 875 МБ
Размер ЛОГа стал 51 МБ

Скорость НЕ возросла
7 июн 09, 16:51    [7274123]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
По ходу еще смешнее стало
Напоминаю,
Вместо одного большого апдейта начал делать в цикле последовательно несколько маленьких по 10 000 записей
так вот по мере продвижения к 500т записи время исполнения маленького апдейта увеличилось в 2,5 раза

Чем ему так больше нравятся первые записи, чем последние?

При этом лог сам сжался до 12 МБ

Помогите пжл - работа стоит из-за тормозов на сервере

Спасибо
7 июн 09, 18:35    [7274225]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
Tako
Member

Откуда:
Сообщений: 65
У вас модель восстановления full, вы сделали бэкап, а потом шринк лог-файла? Не нужно шринк делать. Он же при выполнении вашего запроса начнет динамически выделять место для лога, лог растет (а у вас еще и маленькими кусочками), это требует времени и ресурсов (к тому же файл будет фрагментирован, это еще и на дисковую подсистему нагрузка). Дайте лог файлу больше места, поставьте автоувеличение не проценты, а фиксированный размер, и побольше. Да, вместо delete from можете truncate делать, он вроде не логируется. А про update даже не знаю, подождите, завтра придут гуру, чего-нибудь посоветуют :)
7 июн 09, 18:57    [7274246]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
Tako, у меня sample стоит
7 июн 09, 19:25    [7274279]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
а по ходу работы ХП время выполнения апдейта на 10 т. записях
возросло с 3 мин до 15минут к 500 тысячной записи

а лог сам по себе сжался до 7 МБ
7 июн 09, 19:30    [7274284]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
namenike
а лог сам по себе сжался до 7 МБ
1) Немедленно отключить автошринк базы.
2) Регулярный пересчет статистик для таблиц, которые постоянно наполняются/чистятся - первое дело.
3) Если таблица чистится полностью, то убедитесь, что для базы разрешен автопересчет статистик.
7 июн 09, 21:24    [7274421]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
Сглупил при установке - выбрал русский язык
1) Немедленно отключить автошринк базы.

Это "Свойства"-Параметры"-"Автоматическое сжатие" - FALSE ?

2) Регулярный пересчет статистик для таблиц, которые постоянно наполняются/чистятся - первое дело.

Это как "для таблиц" ?

3) Если таблица чистится полностью, то убедитесь, что для базы разрешен автопересчет статистик.

Есть свойства БД:
"Свойства"-Параметры"-"Автоматическое обновление статистики" -сейчас FALSE
"Свойства"-Параметры"-"Автоматическое создание статистики" -сейчас FALSE
"Свойства"-Параметры"-"Асинхронное автоматическое обновление статистики" -сейчас FALSE
7 июн 09, 23:02    [7274568]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
namenike
2) Регулярный пересчет статистик для таблиц, которые постоянно наполняются/чистятся - первое дело.

Это как "для таблиц" ?
Например, так.
7 июн 09, 23:21    [7274612]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
Tako
Member

Откуда:
Сообщений: 65
автор
Это "Свойства"-Параметры"-"Автоматическое сжатие" - FALSE

Угу. Через alter database еще можно
http://technet.microsoft.com/ru-ru/library/ms174269(SQL.90).aspx
<auto_option> ::=
{
AUTO_CLOSE { ON | OFF }
| AUTO_CREATE_STATISTICS { ON | OFF }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
автор
Это как "для таблиц" ?

Ну если не ошибаюсь у вас это итак установлено опцией STATISTICS_NORECOMPUTE = OFF
автор
"Свойства"-Параметры"-"Автоматическое обновление статистики" -сейчас FALSE
"Свойства"-Параметры"-"Автоматическое создание статистики" -сейчас FALSE
"Свойства"-Параметры"-"Асинхронное автоматическое обновление статистики" -сейчас FALSE

меняйте на true
7 июн 09, 23:27    [7274621]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
Tako
Member

Откуда:
Сообщений: 65
DeColo®es, а в данном примере для t_CommonStudy
автор
2) Регулярный пересчет статистик для таблиц, которые постоянно наполняются/чистятся - первое дело.

что даст оптимизатору? Разве что статистика по столбцу P1? Да и то в этом контексте все строки таблицы обновляются и условие Where P1 is NULL не нужно.
А в t_InStudy статистики по кластерному индексу должно хватить. Нет?
7 июн 09, 23:46    [7274643]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
Установил все статистики в FALSE
Автосжатие тоже FALSE
Добавил псоле массового инсерта обновление статистик
	Delete from t_CommonStudy
	Insert Into t_CommonStudy (T0, nCounter) Select D, Row_Number() Over (Order by D) from t_InStudy				-- Order by D
UPDATE STATISTICS t_InStudy WITH FULLSCAN, NORECOMPUTE
UPDATE STATISTICS t_CommonStudy WITH FULLSCAN, NORECOMPUTE

Результат
Лог разросся дол 1,6 ГБ
время выполнения запроса даже по 10 т. запися
Update t_CommonStudy  Set  
	PMax = (Select MAX(H) From t_InStudy where T0 > D And T0 <= D + Cast( 'янв  1 1900 12:30AM' as datetime ) ), 
	PMin = (Select MIN(L) From t_InStudy where T0 > D And T0 <= D + Cast( 'янв  1 1900 12:30AM' as datetime ) )
	Where P1 is NULL  AND nCounter >= 0 and nCounter < 10000

= 5 минутам, что хуже чем вчера с настройками по умолчанию и уже возникшими тормозами
(nCounter тупо int и содержит номер записи в таблице, поле индесировано уникально нот нуул)

Зато:
- загрузка ЦП возросла до 99% (даже к дисп.задач не пробраться мышкой), раньше была до 50%
- снизился объем памяти СКЛ сервера до 40 МБ (раньше хавал до 500 МБ) - это тоже по данным диспетчера задач.

Мучит два вопроса:
- как/почему раньше все работало быстро?
- как вернуть счастье :) ?
8 июн 09, 09:48    [7275123]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
Вернул Автосжатие TRUE
Сделал
BACKUP DATABASE .... TO ... WITH COMPRESSION
Лог не сжался - вчера после жтой операции сократился до мин. размера
Зато загрузка ЦП стала около 50%
время выполнения запроса тоже

Подскажите пжл где туплю или что с серваком сделть
8 июн 09, 10:04    [7275174]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
namenike,

Вы бы план запроса на обновление привели.
8 июн 09, 10:07    [7275190]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
namenike
Member

Откуда:
Сообщений: 109
Senya_L
namenike,

Вы бы план запроса на обновление привели.


К сообщению приложен файл (PlanUpdate.sqlplan - 30Kb) cкачать
8 июн 09, 10:45    [7275361]     Ответить | Цитировать Сообщить модератору
 Re: Резко упала производительность сервера  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
namenike
Вернул Автосжатие TRUE
Зачем?!
8 июн 09, 11:28    [7275574]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить