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

Откуда:
Сообщений: 18
В стандартных SQL - счетчиках Perfomance не нашел такой функции...
Думаю, надо копать в сторону таблицы sysprocesses, но не знаю как
3 фев 06, 13:51    [2318338]     Ответить | Цитировать Сообщить модератору
 Re: Как определить нагрузку SQL сервера по пользователям?  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
А что, Вы решили отстреливать тех, кто сервер сильно грузит?
Если не секрет, зачем Вам именно в таком срезе анализировать загрузку?

Может, лучше смотреть на те команды, которые сервер сильно грузят? Там и пользователь виден... Профайлером смотреть, кстати :-)
3 фев 06, 13:57    [2318366]     Ответить | Цитировать Сообщить модератору
 Re: Как определить нагрузку SQL сервера по пользователям?  [new]
SWolf
Member

Откуда:
Сообщений: 18
Все пользователи коннектятся к SQL под одним логином (1С-Предприятие) и хотелось бы выявить тех, кто грузят систему больше всего
3 фев 06, 14:01    [2318389]     Ответить | Цитировать Сообщить модератору
 Re: Как определить нагрузку SQL сервера по пользователям?  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
SWolf
Все пользователи коннектятся к SQL под одним логином (1С-Предприятие) и хотелось бы выявить тех, кто грузят систему больше всего

Цель? отстрел? Или все же стоит посмотреть, какие именно операции грузят сервер больше всего?
3 фев 06, 14:06    [2318414]     Ответить | Цитировать Сообщить модератору
 Re: Как определить нагрузку SQL сервера по пользователям?  [new]
SWolf
Member

Откуда:
Сообщений: 18
Breakneck
SWolf
Все пользователи коннектятся к SQL под одним логином (1С-Предприятие) и хотелось бы выявить тех, кто грузят систему больше всего

Цель? отстрел? Или все же стоит посмотреть, какие именно операции грузят сервер больше всего?


Цель - выявить, что делает юзер в этот момент в 1С и оптимизировать эту операцию (средствами 1с и.т.д)
3 фев 06, 14:10    [2318434]     Ответить | Цитировать Сообщить модератору
 Re: Как определить нагрузку SQL сервера по пользователям?  [new]
Timon
Member

Откуда: Dushanbe TJK
Сообщений: 2688
автор
Цель - выявить, что делает юзер в этот момент в 1С и оптимизировать эту операцию (средствами 1с и.т.д)

Дохлый номер.

Попробуйте определить ЭТОГО пользователя через ПРОФАЙЛЕР.
3 фев 06, 14:14    [2318457]     Ответить | Цитировать Сообщить модератору
 Re: Как определить нагрузку SQL сервера по пользователям?  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
А на мой взгляд, сначала стоит оценить, а нет ли каких проблем с сервером.
Т.е. снять трассу и счетчики производительности, проанализировать наиболее емкие операции и подумать над их оптимизацией со стороны сервера.
Ибо если у Вас нет, например, индексов на табличке тысяч в 100 записей, то как Вы ни оптимизируйте клиента, выборка из этой таблички пары записей будет идти ой как трудно.

Кстати, если все коннектятся под одним пользователем, то средства SQL и уж тем более счетчики ПРОИЗВОДИТЕЛЬНОСТИ (Perfomance) не покажут Вам, что это за пользователь. Если 1С внутри у себя содержит разделение по пользователям, то там и надо искать.
3 фев 06, 14:17    [2318472]     Ответить | Цитировать Сообщить модератору
 Re: Как определить нагрузку SQL сервера по пользователям?  [new]
Леонид Фишкис
Member

Откуда:
Сообщений: 3
SWolf
В стандартных SQL - счетчиках Perfomance не нашел такой функции...
Думаю, надо копать в сторону таблицы sysprocesses, но не знаю как


В дополнение к совету по общей проверке сервера могу предложить следущее:
1. Задание, которое раз в сколько-то делает дамп sysproccesses в отдельную таблицу
2. Процедура, которая строит данные (например, CPU) для SPID + hostname, упорядоченные по времени
3. График в Excel

При анализе нужно помнить, что CPU накапливается за всё время жизни процесса, поэтому дополнительно хорошо посчитать производную.
3 фев 06, 16:15    [2319236]     Ответить | Цитировать Сообщить модератору
 Re: Как определить нагрузку SQL сервера по пользователям?  [new]
tvm
Member

Откуда:
Сообщений: 944
пытаюсь решить такую же проблему. решил идти таким путем: создаю табличку в которую через определенный интервал времени записываю текущее значение cpu из sysprocesses и сохраняю в ней также cpu которое было n-ное кол-во времени назад. затем вычисляю дельту между текущим и предыдущим значением. Не могу сообразить- если я знаю дельту, каким образом ее сопоставить с текущей загрузкой проца(не из sysprocesses)?
6 апр 06, 08:30    [2529628]     Ответить | Цитировать Сообщить модератору
 Re: Как определить нагрузку SQL сервера по пользователям?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Есть специальное решение которое показывает как нагрузку по польдователям 1С так и многое другое(адаптированное для 1С).
http://www.softpoint.ru/products_id3.htm
6 апр 06, 13:47    [2531687]     Ответить | Цитировать Сообщить модератору
 Re: Как определить нагрузку SQL сервера по пользователям?  [new]
tvm
Member

Откуда:
Сообщений: 944
МуМу
Есть специальное решение которое показывает как нагрузку по польдователям 1С так и многое другое(адаптированное для 1С).
http://www.softpoint.ru/products_id3.htm

Да Владимир про это я знаю. И даже более того юзали месяц- вещь хорошая, но когда денег не дают то только и остается что велосипед изобретать.
6 апр 06, 14:56    [2532118]     Ответить | Цитировать Сообщить модератору
 Re: Как определить нагрузку SQL сервера по пользователям?  [new]
avgalex
Member

Откуда:
Сообщений: 244
Может не совсем в тему.
Здесь архив, в котором (архив взят с книги MS SQL Server 2000 профессионалы для профессионалов):
файлы листинга создания 2-х хранимых процедур для выявления и ранжирования типов задержек в MS SQL Server; Скрипты создают 2 ХП в master. После запуска track_waitstats создается таблица waitstats и в нее собирается статистика по задержкам, а с помощью get_waitstats все это выводится в виде таблички.

Doc’и с описанием типов задержек и их коррелирование со счетчиками производительности и небольшой скриншот.

К сообщению приложен файл (sqlbook.rar - 57Kb) cкачать
6 апр 06, 15:59    [2532561]     Ответить | Цитировать Сообщить модератору
 Re: Как определить нагрузку SQL сервера по пользователям?  [new]
db69.tar
Member

Откуда: Санкт-Петербург
Сообщений: 53
Я настроил вывод лога профайлера в табличку ProfilerInfo.
Пользователь неизвестен, но его заменяет HostName.
Получаю:
select 
  HostName, 
  Sum(Duration)/1000 as [Время, с],
  Sum(CPU) as [Процессор],
  Sum(Reads) as [Чтений],
  Sum(Writes) as [Записей]
from
  ProfilerInfo (nolock)
group by
  HostName
order by
  2 desc
6 апр 06, 16:45    [2532891]     Ответить | Цитировать Сообщить модератору
 Re: Как определить нагрузку SQL сервера по пользователям?  [new]
Mihail R.
Member

Откуда: 53°21' с.ш. 83°47' в.д.
Сообщений: 281
запускать не менее 2 раз. :)
доработай при необходимости

if object_id('tempdb..#tmp') is null select * into #tmp from master.dbo.sysprocesses
if object_id('tempdb..#tmp1') is not null drop table #tmp1

declare @d datetime
declare @dd float
select @d = crdate from tempdb.dbo.sysobjects where id=object_id('tempdb..#tmp')

select * into #tmp1 from master.dbo.sysprocesses
select @dd=datediff(ms,@d,getdate())

select s.spid,convert(varchar(7),s.hostname) as host,
       s.cpu-t.cpu as cpu_D,
       convert(numeric(16,2),(s.cpu-t.cpu)/@dd*1000) as cpu_sec,
       s.physical_io-t.physical_io as IO_D,
       convert(numeric(16,2),(s.physical_io-t.physical_io)/@dd*1000) as IO_sec,
       s.[memusage], s.[memusage]-t.[memusage] as [mem_D],
       db_name(s.dbid) as db, rtrim(s.loginame),s.login_time,s.program_name,s.nt_username,s.nt_domain
from #tmp1 s inner join
     #tmp t on s.spid=t.spid
order by 3 desc

drop table #tmp
go
select * into #tmp from #tmp1
drop table #tmp1
7 апр 06, 09:43    [2534720]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить