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

Откуда:
Сообщений: 217
На сколько мне известно чекпоинт. Это так?

Проблема следующего характера:

Есть график счетчика Transactions write/sec. по определенной базе, который почти полностью совпадает с графиком disk write/sec. Одна из баз ведет интенсивную запись на диск, и раз в 60 секунд график disk writes/sec стреляет сильно в верх, что делает среднее значение ~1000
ед., по данному показателю.

При этом в графике Transactions write/sec, количество выполненных и записанных транзакций не имеет таких пиков.

Значения по работе с памятью, на мой взгляд более менее приличные:

BufferCacheHitRatio 99.9928736578722
PageReadsPerSec 12
PageWritesPerSecond 16
PageLifeExpectency 7115

Откуда берутся эти пики?

Я помню в настройках базы можно указать, как часто делать чекпоинт.
14 окт 14, 10:49    [16700646]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
А суть проблемы с чем?
14 окт 14, 10:58    [16700718]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
Glory
Member

Откуда:
Сообщений: 104760
tsdos
На сколько мне известно чекпоинт. Это так?

Что "так" ?
Что чекпойнтом называется процесс сброса грязных страниц из кэша на диск ?
14 окт 14, 11:01    [16700736]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
a_voronin
Member

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

Вообще есть такая команда CHECKPOINT http://msdn.microsoft.com/en-us/library/ms188748.aspx, но SQL SERVER делает её сам через регулярные интервалы и самому её запускать нет необходимости.

Ну а в чём собственно проблема у вас.
14 окт 14, 13:45    [16701840]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
tsdos
Member

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

Проблема по большому счету заключается в том, что клиентское ПО не отображает, графики которые отваливаются, по тайм-ауту. При запуске клиента в профайлере имеются запросы (в картинке), исполнение которых более 3 мин.

Разработчик отказывает в поддержке, поскольку виртуализацию не поддерживает.

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

Видел на форе разработчика патчи, в которых описывались улучшения "исправлена ошибка timeout", для разных компонентов, но вроде не для моего.

По поводу checkpoint. Мысли такие:

1. Иногда бывают задержки Logwrites

2. База в Simple режиме восстановления, что по идее должно привести к срабатыванию checkpoint, при заполнении 70% файла транзакций. Т.е., если увеличить начальный размер файла транзакций, он будет случаться реже.

3. Чекпоинт, судя по документации автоматически срабатывает раз в... Во сколько? В голове почему-то крутятся 50-60сек. и 2 минуты. Возможно увеличение интервала благотворно скажется на производительности.

К сообщению приложен файл. Размер - 121Kb
14 окт 14, 16:27    [16702987]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
При хорошем железе и правильно спроектированных запросах физического ввода-вывода происходит немного по сравнению с общей массой. при этом сброс на диски не должен влиять на производительность.
Также убедитесь, что у вас не выполняются полные или диффиренциальные бэкапы в рабочее время. Логи можно.
14 окт 14, 16:46    [16703081]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
NickAlex66
Member

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

Чекпоинт случается не по расписанию (это если вы его сами не делаете). А инициализируется SQL в зависимости от множества факторов.
Я бы начал с SELECT @@VERSION
14 окт 14, 17:06    [16703191]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
Если простая модель - ищите бэкапы.
14 окт 14, 17:11    [16703213]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
tsdos
Member

Откуда:
Сообщений: 217
Владислав Колосов,

Из бекапов только выгрузка транзакций для Full моделей восстановления.

Но меня беспокоит то, что счетчик write transactions/sec, по проблемной базе очень сильно коррелирует с Disc write/sec. За исключением пиков вот и предположилось, что пики это чекпоинт. и желательно их делать пореже.

Да и производительность всех баз экземпляра, кроме этой в порядке. Вроде даже в порядке производительность этой базы, кроме одной из функций.
14 окт 14, 17:12    [16703224]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
a_voronin
Member

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

А вы запросы сами ловили. Может там индексы нужны? Может всё решение надо менять и на OLAP переходить и т.п.?
14 окт 14, 17:20    [16703274]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
tsdos
Member

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

Да сам, индексы подставлял, статистику обновлял, кэш процедур сбрасывал (правда только по данной базе).
14 окт 14, 17:35    [16703370]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
Тогда ищите - кто у вас там занимается массовыми вставками и почему.
14 окт 14, 18:07    [16703550]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
tsdos
и раз в 60 секунд график disk writes/sec стреляет сильно в верх,
И сколько длятся эти пики? 30 секунд? Если нет, то какое отношение к таймаутам это может иметь? Да и зачем вы вообще смотрите на "disk writes/sec"? Полезной информации для решения вашей проблемы - ноль.

tsdos
При запуске клиента в профайлере имеются запросы (в картинке), исполнение которых более 3 мин.
Запросы то где??

tsdos
Один из вариантов высказанный нашим сотрудником, слишком большая нагрузка на дисковую подсистему по операциям вовда - вывода
Ясновидящий наверное?

tsdos
Возможно увеличение интервала благотворно скажется на производительности.
Прежде чем решать проблему, нужно сначала найти её причину.

tsdos
Вроде даже в порядке производительность этой базы, кроме одной из функций.
Вы уже посмотрели запросы этой "функции"? Сколько I/O, CPU они генерируют? Блокировки? Текст запросов? Планы выполнения? У вас проблема не во всей системе, и скорее всего не из-за нехватки ресурсов, а с конкретными запросами, которые должны очень легко локализироваться. Не понимаю, чего вы вообще в чекпойнты и журналы транзакций то полезли.
14 окт 14, 21:07    [16704359]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
Glory
Member

Откуда:
Сообщений: 104760
tsdos
что счетчик write transactions/sec, по проблемной базе очень сильно коррелирует с Disc write/sec

А с числом записей именно журнал именно этой базы он тоже коррелирует ?
14 окт 14, 21:10    [16704374]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
tsdos
Member

Откуда:
Сообщений: 217
Сразу скажу, изначальная проблема решилась (только сейчас узнал) - добавлением памяти. Делали позавчера ночью, повышали обьем с 12гб., до 32. При 12 гб. PageLifeExpectency средняя - 180. Сейчас, как я уже писал - 7115 Рекомендации вендора, для нашей нагрузки, как оказалось - 32-64гб. Но об этом никто ничего не говорил.

Кстати, обьем предположительно требуемой памяти в mssql (если исключить рекомендации разработчика) можно узнать только эмпирическим путем - добавляя оную и смотря на счетчики под нагрузкой? Или можно каким-то ведическим образом предсказать (при условии, что система, которой нужна память уже имеется и плохо работает).

Mind,

Авторитетный в компании человек заявил, что проблема именно в записи на диск 1000 IOPS (видимо имелось в виду, что присутствует RAID5). Я уверен, что это не так и система в целом не имеет узких мест и проблема по сути на стороне разработчика запросов, клиента.

Mind
И сколько длятся эти пики? 30 секунд?

Секунду-три.

Что касается чекпоинтов, в процессе разборки проблемы, мне стал интересен этот момент. Вчера увеличил, время чекпоинта до 3-х минут, вроде время между пиками увеличилось, но был конец рабочего дня, перенес исследования на сегодня но проблема с ноутом, прийдется отложить.

Собственно вопрос изначально стоял именно так, пики записи на диск это может быть чекпоинт?


Glory
А с числом записей именно журнал именно этой базы он тоже коррелирует ?


Как это можно проверить?

автор
Владислав Колосов

"Массовые вставки"

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

Ошибка:
/Orion/Interfaces/InterfaceDetails.aspx?NetObject=I:8020&view=InterfaceDetails
Message: Request timed out.

То, что мне прислали.

При этом многие вьюхи в базе отрабатывали более 3 минут.
15 окт 14, 12:29    [16706723]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
Glory
Member

Откуда:
Сообщений: 104760
tsdos
Как это можно проверить?

sys.dm_io_virtual_file_stats
15 окт 14, 12:30    [16706728]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
Владислав Колосов
Member

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

таймаут наиболее вероятно происходит по причине ожидания освобождения блокировок. Попробуйте перенести сборщик данных в другую базу.
15 окт 14, 12:31    [16706740]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
tsdos
Member

Откуда:
Сообщений: 217
автор
Владислав Колосов, таймаут наиболее вероятно происходит по причине ожидания освобождения блокировок. Попробуйте перенести сборщик данных в другую базу.


это как-то должно отображаться в мониторе активности? Я там видел только отложенные запросы по причине LogWrites. Хотя нужно перепроверить. Но все равно спасибо за идею.

автор
Как это можно проверить?

sys.dm_io_virtual_file_stats


Спасибо посмотрю.

А все таки, для общего развития изначальный вопрос - транзакции в MSSQL в памяти хранятся в каком буфере? По какому событию они сбрасываются в файл транзакций? В оракле это вроде REDO Log буфер, за сброс его отвечает LGWR и сбрасывается по чекпоинту.
15 окт 14, 12:49    [16706837]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
... checkpoint ...


когда дело доходит до checkpoint'a, в большинстве случаев все уже сброшено на диск, так как есть еще lazy writer, который сбрасывает на диск грязные страницы... чтобы чекпоинт не занимал шибко много времени...
15 окт 14, 12:58    [16706896]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
запускается lazy writer когда, например списки свободных страниц достаточно малы (порогового значения не встречал), сбрасывает часть грязных страниц и пополняет free list'ы свободными страницами... раз автору помогло добавление памяти - похоже это оно... как следствие checkpoint занимает меньше времени чем мог бы...
15 окт 14, 13:02    [16706922]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
tsdos

А все таки, для общего развития изначальный вопрос - транзакции в MSSQL в памяти хранятся в каком буфере? По какому событию они сбрасываются в файл транзакций? В оракле это вроде REDO Log буфер, за сброс его отвечает LGWR и сбрасывается по чекпоинту.


Тоже есть log buffers, сбрасываются на диск по крайней мере по таким событиям:

- commit/rollback
- превышение максимального размера блока в VLF, кажется 60 Кбайт
- при сбросе страницы с lsn меньшим чем максимальный сброшенный lsn в transation log...

может еще когда-то хз...

отличие от oracle, там у вас есть undo tablespace... в sql server before и after image пишутся прямо в log record'ы
15 окт 14, 13:11    [16706984]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
o-o
Guest
churupaha
...log buffers, сбрасываются на диск...
- при сбросе страницы с lsn меньшим чем максимальный сброшенный lsn в transation log...


вот это плиз поясните.
как это может ПОТОМ сброситься с меньшим lsn, чем уже имеется на диске в лог-файле.
последовательно же записи лога сбрасываются,
что за чересполосица lsn в файле лога, когда они неизбежно возрастают?
15 окт 14, 15:49    [16708308]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
o-o
churupaha
...log buffers, сбрасываются на диск...
- при сбросе страницы с lsn меньшим чем максимальный сброшенный lsn в transation log...


вот это плиз поясните.
как это может ПОТОМ сброситься с меньшим lsn, чем уже имеется на диске в лог-файле.
последовательно же записи лога сбрасываются,
что за чересполосица lsn в файле лога, когда они неизбежно возрастают?


Эх я неверно написал (см. чуть ниже исправление). Но конкретно по вашему вопросу такая ситуация возможна. Пусть некая транзакция изменила данные в странице данных DATA_PAGE1, в логе создана запись с LSN1, в заголовке страницы данных DATA_PAGE_1 будет записано - последняя правка LSN1. Проходит время, другие транзакции меняли другие страницы данных, текущий максимальный LSNM. Пусть, например, настал checkpoint или lazy writer скидует часть страниц и в их число попала страницы DATA_PAGE_1 - у нее LSN1 меньше текущего LSNM (записанного в лог).

Но я не об этом писал. Там вопрос был когда сбрасывается LOG_BUFFER, написано:

churupaha
...log buffers, сбрасываются на диск...
- при сбросе страницы с lsn меньшим чем максимальный сброшенный lsn в transation log...


а правильно так

churupaha
...log buffers, сбрасываются на диск...
- при сбросе страницы (данных например) с lsn БОЛЬШИМ чем максимальный сброшенный lsn в transation log...


можно поискать по write ahead logging.
15 окт 14, 16:28    [16708707]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
o-o
Guest
churupaha,

нет, мой вопрос как раз про МЕНьШИЙ lsn.

я вообще не про страницы данных, так что lazy writer не участвует в процессе.
только буфер лога и файл лога.
я утверждаю, что записи лога попадают в файл лога последовательно.
поэтому если в файле логе засекаем max_lsn, то ни в каком буфере лога нет ни одного lsn < этого max_lsn.
с этим согласны?
15 окт 14, 16:35    [16708772]     Ответить | Цитировать Сообщить модератору
 Re: Что сбрасывает буфер журнала транзакций в файл транзакций?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
o-o
churupaha,

нет, мой вопрос как раз про МЕНьШИЙ lsn.

я вообще не про страницы данных, так что lazy writer не участвует в процессе.
только буфер лога и файл лога.
я утверждаю, что записи лога попадают в файл лога последовательно.
поэтому если в файле логе засекаем max_lsn, то ни в каком буфере лога нет ни одного lsn < этого max_lsn.
с этим согласны?


не просто согласен. я даже этому не противоречу... почему тогда такой вопрос возник? :)

я же вел речь об LSN страницы и о максимальном LSN записанном в log. вот перечитайте пост.
15 окт 14, 16:40    [16708814]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить