Биты и байты.

Биты и байты.

четверг, 9 января 2014 г.

Кто положил базу?

Очень часто ввиду непроработанной архитектуры, возникают запросы которые способны положить любую высокопроизводительную базу,
Тут может быть и CROSS JOIN или запрос  не попадающий в индекс, заблокированные сессиии и тд..
Как быстро разобраться кто и зачем это делает?)

Ведь в определенный момент может  остановиться вся система, если не настроены тайм ауты на выполнения запросов.
Для  анализа таких запросов в SQL SERVER очень умный дядька придумал хранимую процедуру sp_WhoIsActive
Мы ее немного модифицируем и сделаем рассылку проблемных запросов с выполнением больше часа на наш ящик для их последующего анализа.

Создадим  в нашей схеме таблицу,  сюда будем складывать наши запросы
Подробнее здесь

DECLARE @destination_table VARCHAR(4000) ;
SET @destination_table = 'WhoIsActive_' + CONVERT(VARCHAR, GETDATE(), 112) ;
DECLARE @schema VARCHAR(4000) ;
EXEC sp_WhoIsActive
@get_transaction_info = 1,
@get_plans = 1,
@return_schema = 1,
@schema = @schema OUTPUT ;
SET @schema = REPLACE(@schema, '<table_name>', @destination_table) ;
PRINT @schema

Качаем последнюю версию sp_WhoIsActive
Для того чтобы сохранить результаты процедуры в таблицу выполняем

EXEC dbo.sp_WhoIsActive      @destination_table = 'WhoIsActiveLog' ;


Создаем представление которое будет показывать самые свежайшие запросы


Создаем процедуру, которая будет нам отправлять  запросы на ящик









+ Немного смайлов

Из жизни. На планерке в летнем лагере. Приводят мальчика, который подглядывал за девушками-вожатыми в душе. С целью, типа, отчитать его… Ну, директор лагеря задает вопрос: — Понравилось? Мальчик в растерянности, через паузу выдает: — Нет… Девушки-вожатые, в один голос: — НЕТ?!

About