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

Откуда:
Сообщений: 124
Добрый день!
Ночью была пробелма с tempDB: "The transaction log for database 'tempdb' is full"
Но как утверждают админы места полно.

Вчера днем опобликували новую версию программы, соответственно добавляли и изменяли процедуры.

Учитывая любовь всех в компании к временным таблицам и табличным переменным, могу предположить что какае-то процедура пыталась записать темповую таблицу много данных, но место на диске где находится транзакшен лог tempdb закончилось. По итогу процедура упала и откатись, в результате чего место на диске освободилось. Об этом сведетельствуют утверждения админов, что места было полно.

Какие процедуры были изменены и добавлены я не знаю. По этому хочу найти в sys.dm_exec_query_stats сценарии которые наполняют темповые таблицы с большим зачением total_logical_writes и затем найти в sys.procedures какие процедуры изменялись вчера.

Но проблема в том что в sys.dm_exec_query_stats я не вижу значений total_logical_writes которые бы превышали максимальное допустимое место для транзакшен лога tempdb.

Вопрос в поле total_logical_writes хранятся данные об записи данных в темповую таблицу?
15 авг 12, 13:25    [13014451]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37254
Файлы базы tempdb (как и любой другой базы) могут автоматически только увеличиваться (и то, надо настаривать). Уменьшаться же файлы баз могут только при выполнении определенной команды, или, при пересоздании базы, что происходит с tempdb при каждом запуске сервера.
15 авг 12, 13:27    [13014467]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
nicescar
Member

Откуда:
Сообщений: 94
Всегда считал, что total_logical_writes - это операции с памятью, а не с диском.
Из доступных мне способов узнать, кто забил tempdb - запустить определенные запросы в момент, когда на сервере еще существует сессия этого товарища. Как это сделать из статистики запросов - я не представляю.
"The transaction log for database 'tempdb' is full" означает, что какая-то транзакция пыталась съесть больше, чем было позволено, и когда у нее это не получилось, она отвалилась, освободив все съеденное пространство.
15 авг 12, 13:32    [13014495]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37254
З.Ы. Хотя нет, есть еще мегаопция autoshrink. :-/
15 авг 12, 13:33    [13014507]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Meriguan
Member

Откуда:
Сообщений: 124
nicescar
"The transaction log for database 'tempdb' is full" означает, что какая-то транзакция пыталась съесть больше, чем было позволено, и когда у нее это не получилось, она отвалилась, освободив все съеденное пространство.


Да, это так и есть, но мне и надо найти этого вредителя.
Админы же пошли другим путем, они предлагают увеличить максимально допустимое место для транзакшен лога, но мне эта идея не очень нравится...

По поводу total_logical_writes да это запись в память.
Но как я понимаю - это данные которые после чекпоинта будут записаны на диск и к тому же total_logical_writes получается не содержит данные которые были записаны в темповую таблицу?
15 авг 12, 13:46    [13014620]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Glory
Member

Откуда:
Сообщений: 104751
Meriguan
Админы же пошли другим путем, они предлагают увеличить максимально допустимое место для транзакшен лога

Т.е. у вас размер лога зафиксирован ? Без возможности автоматического роста ?
15 авг 12, 13:50    [13014671]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
nicescar
Member

Откуда:
Сообщений: 94
[quot Meriguan]
nicescar
Но как я понимаю - это данные которые после чекпоинта будут записаны на диск и к тому же total_logical_writes получается не содержит данные которые были записаны в темповую таблицу?

Содержать, то, по идее, содержат, но кроме них там в основном записи в обычные таблицы. Если заранее известно, что запрос ничего нигде не пишет, то да, косвенно это может указывать на запись в tempdb. Да и потом, total - это общее количество с момента старта сервера, динамика роста этой цифры нигде не сохраняется, как при этом вычленить нужную транзакцию - ума не приложу.
15 авг 12, 13:51    [13014680]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
nicescar
Member

Откуда:
Сообщений: 94
Meriguan
Админы же пошли другим путем, они предлагают увеличить максимально допустимое место для транзакшен лога, но мне эта идея не очень нравится...

Если у них есть это место, то почему бы и нет, в принципе. Тут вопрос в объемах. Если лог подрос до 50% от общего объема базы - то да, это никуда не годится. А если он остановился на 5%, то возможно, стоило бы и дать ему побольше свободы.
15 авг 12, 13:53    [13014702]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Meriguan
Member

Откуда:
Сообщений: 124
Glory
Meriguan
Админы же пошли другим путем, они предлагают увеличить максимально допустимое место для транзакшен лога

Т.е. у вас размер лога зафиксирован ? Без возможности автоматического роста ?

Судя по тому что говорят админы, получется так.
У меня не достаточно прав что бы самостоятельно проверить.
15 авг 12, 14:00    [13014777]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Glory
Member

Откуда:
Сообщений: 104751
Meriguan
Судя по тому что говорят админы, получется так.

И как они определяют, что в момент возникновения ошибки "места полно" ?
15 авг 12, 14:01    [13014794]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Meriguan
Member

Откуда:
Сообщений: 124
[quot nicescar]
Meriguan
пропущено...

Содержать, то, по идее, содержат, но кроме них там в основном записи в обычные таблицы. Если заранее известно, что запрос ничего нигде не пишет, то да, косвенно это может указывать на запись в tempdb. Да и потом, total - это общее количество с момента старта сервера, динамика роста этой цифры нигде не сохраняется, как при этом вычленить нужную транзакцию - ума не приложу.

Как я говорил публиковалась новая версия программы, по этому можно считать что пробелма в новых или измененных процедурах, а у них статистики то как раз до ночного запуска и не было.
15 авг 12, 14:03    [13014823]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Meriguan
Member

Откуда:
Сообщений: 124
Glory
Meriguan
Судя по тому что говорят админы, получется так.

И как они определяют, что в момент возникновения ошибки "места полно" ?

Я так думаю помотрели сколько места может транзакшен лог еще скушать (2-3 ГБ) и предположили что места было достаточно.
15 авг 12, 14:06    [13014848]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
nicescar
Member

Откуда:
Сообщений: 94
Glory
Meriguan
Судя по тому что говорят админы, получется так.

И как они определяют, что в момент возникновения ошибки "места полно" ?

ИМХО, никак. СЕЙЧАС полно. А что было раньше они вряд ли знают. Я для таких ситуаций написал мониторинг, который складывает инфу по объемам раз в 10 минут в табличку. Потом по этим таблицам строится график на Reporting-е и видна динамика.
15 авг 12, 14:09    [13014878]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Glory
Member

Откуда:
Сообщений: 104751
nicescar
Я для таких ситуаций написал мониторинг, который складывает инфу по объемам раз в 10 минут в табличку.

А ваши админы и вы не умеете пользоваться стандартными Alert-ами ?
15 авг 12, 14:12    [13014910]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
nicescar
Member

Откуда:
Сообщений: 94
Glory
nicescar
Я для таких ситуаций написал мониторинг, который складывает инфу по объемам раз в 10 минут в табличку.

А ваши админы и вы не умеете пользоваться стандартными Alert-ами ?

Alert-ы тоже не покажут динамики, хотя, конечно, да, укажут на наличие проблемы.
Плюс у нас за этим SCCM и WHATSUP следят, как-то ни к чему остальное пилить.
15 авг 12, 14:16    [13014945]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Glory
Member

Откуда:
Сообщений: 104751
nicescar
Alert-ы тоже не покажут динамики,

Один Алерт на 99% использованного лог файла разумеется не покажет динамики.
Потому что через одну точку можно провести бесконечное множество прямых.
15 авг 12, 14:20    [13014989]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
nicescar
Member

Откуда:
Сообщений: 94
Glory, я ж не обращаю всех в свою веру. Я сделал так, как мне удобно, если вам удобно пользоваться Alert'ами- на здоровье.
15 авг 12, 14:23    [13015014]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Glory
Member

Откуда:
Сообщений: 104751
nicescar
Glory, я ж не обращаю всех в свою веру. Я сделал так, как мне удобно, если вам удобно пользоваться Alert'ами- на здоровье.

Ну так, что вам тогда непонятно из вашего мониторинга ?
Процент использования лога рос или нет ?
Сколько коннектов было ?
Что они выполняли ?
Ваш мониторинг, который "который складывает инфу по объемам раз в 10 минут в табличку" не отследил этого ?
15 авг 12, 14:27    [13015063]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37254
Glory
nicescar
Glory, я ж не обращаю всех в свою веру. Я сделал так, как мне удобно, если вам удобно пользоваться Alert'ами- на здоровье.

Ну так, что вам тогда непонятно из вашего мониторинга ?
Процент использования лога рос или нет ?
Сколько коннектов было ?
Что они выполняли ?
Ваш мониторинг, который "который складывает инфу по объемам раз в 10 минут в табличку" не отследил этого ?
nicescar - не топикстартер, у него, скорее всего, все хорошо. ;)
15 авг 12, 14:29    [13015093]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
nicescar
Member

Откуда:
Сообщений: 94
Glory, вот и предложите ТС сделать Алерты, чтобы они рассылали данные по использованию tempdb при срабатывании. Мне то зачем ваши вопросы?
15 авг 12, 14:33    [13015130]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
komrad
Member

Откуда:
Сообщений: 5703
Meriguan,

если включен default trace, то можно посмотреть кто и когда был причиной роста tempdb

declare @path nvarchar(512)
select @path=convert(nvarchar(512),value) from ::fn_trace_getinfo(default) where traceid=1 and property=2

-- AUTO GROW  EVENT
SELECT	top 100
		te.name, 
		t.LoginName,
		t.DatabaseName, 
		t.FileName, 
		t.StartTime, 
		dateadd(ms,t.Duration/1000,t.StartTime) [FinishTime],
		t.ApplicationName ,
		t.ObjectID,
        t.Duration/1000/1000 [Duration (s)],
	t.TextData
FROM fn_trace_gettable(@path, NULL) AS t 
INNER JOIN sys.trace_events AS te ON t.EventClass = te.trace_event_id 
WHERE te.name LIKE '%Auto Grow' 
and t.DatabaseName='tempdb'
ORDER BY StartTime desc


Если скрипт ничего не покажет, попробуйте с предыдущими 4-ми файлами (см. значение @path) - подставьте путь до них в селект уменьшая нумерацию файла.


Можно посмотреть какие еще события произошли :

--  Event types & frequency
declare @path nvarchar(512)
select @path=convert(nvarchar(512),value) from ::fn_trace_getinfo(default) where traceid=1 and property=2

select te.name, t.EventClass,count(1)
FROM fn_trace_gettable(@path, NULL) AS t 
INNER JOIN sys.trace_events AS te ON t.EventClass = te.trace_event_id 
group by te.name, t.EventClass
15 авг 12, 14:49    [13015276]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
Meriguan, посмотрите в свойствах базы стоит ли у вас авторасширение, вкладка "файлы".
15 авг 12, 14:54    [13015312]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35197
Блог
На всякий случай - сейчас можно встроенными средствами сервера собирать данные о занятом-свободном месте в динамике. Управление->Сбор данных
15 авг 12, 14:57    [13015332]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
Meriguan
Member

Откуда:
Сообщений: 124
Александр52
Meriguan, посмотрите в свойствах базы стоит ли у вас авторасширение, вкладка "файлы".


Нет прав.
15 авг 12, 15:02    [13015372]     Ответить | Цитировать Сообщить модератору
 Re: TempDB  [new]
komrad
Member

Откуда:
Сообщений: 5703
Meriguan
Александр52
Meriguan, посмотрите в свойствах базы стоит ли у вас авторасширение, вкладка "файлы".


Нет прав.


exec sp_helpdb tempdb


use tempdb 
exec sp_helpfile
15 авг 12, 15:05    [13015390]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить