Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как зафиксировать размер проходящих транзакций в БД  [new]
Авторррррр
Guest
Добрый день.
Коллеги подскажите, а как можно узнать размер транзакций проходящий через лог БД.
То есть исходная задача такая: Есть база в моделе восстановления Simple, и нужно узнать какие транзакции прошли, а лучше с размером этих транзакций. В гугл не нашел инструментов для этого, кроме платных http://solutioncenter.apexsql.com/read-a-sql-server-transaction-log/
Да и то , похоже тулза не покажет размер.
6 окт 14, 15:26    [16666565]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
Glory
Member

Откуда:
Сообщений: 104760
"размер проходящих транзакций" - это сколько байтов было записано в журнал что ли ?
6 окт 14, 15:31    [16666633]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
Суммарный размер всех транзакций можно получить через sys.dm_io_virtual_file_stats.
Если нужно детальнее, то стандартными средствами никак.
6 окт 14, 15:32    [16666665]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
Fdnjhhhhhh
Guest
Ну да...
6 окт 14, 15:32    [16666672]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
Авторррррр
Guest
Гавриленко Сергей Алексеевич,

Сергей, есть идеи, как не стандартными можно было бы сделать такое?
6 окт 14, 15:35    [16666708]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
Авторррррр
Гавриленко Сергей Алексеевич,

Сергей, есть идеи, как не стандартными можно было бы сделать такое?
Какое именно "такое"?

Не стандартными средствами делается просто - ищется приложение, которое дает нужный вам функционал, и покупается.

Сообщение было отредактировано: 6 окт 14, 15:36
6 окт 14, 15:36    [16666720]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
Shakill
Member

Откуда: мск
Сообщений: 1882
Авторррррр,

может, вам вот это подойдет
SELECT * FROM fn_dblog(NULL, NULL)
6 окт 14, 15:41    [16666754]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
Авторррррр
Guest
Гавриленко Сергей Алексеевич,

Такое в смысле, описанный выше функционал, показывающий размер транзакций.
Я так понял вы такого функционала не встречали в продуктах сторонних разработчиков, ок.
6 окт 14, 15:41    [16666756]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Авторррррр
Добрый день.
Коллеги подскажите, а как можно узнать размер транзакций проходящий через лог БД.
То есть исходная задача такая: Есть база в моделе восстановления Simple, и нужно узнать какие транзакции прошли, а лучше с размером этих транзакций. В гугл не нашел инструментов для этого, кроме платных http://solutioncenter.apexsql.com/read-a-sql-server-transaction-log/
Да и то , похоже тулза не покажет размер.


Легко

with t0 as
(
	select
		max([Transaction Name]) over (partition by [Transaction ID]) as txn,
		*
	from
		fn_dblog(null, null)
)
select
	txn,
	sum([Log Record Length]) / 1024.0 as size_kb,
	sum([Log Reserve]) / 1024.0 as reserve_kb
from
	t0
group by
	txn
6 окт 14, 15:41    [16666761]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
Glory
Member

Откуда:
Сообщений: 104760
Авторррррр
показывающий размер транзакций.

Если для вас это "сколько байтов было записано в журнал", то чего вам не хватает в sys.dm_io_virtual_file_stats ?
6 окт 14, 15:42    [16666767]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
+ fn_dblog читает только активную часть лога. учитывая recovery model = simple, прочтет начиная с lsn = min(checkpoint_lsn, old_tran_lsn, ...)

чтобы прочитать все что в логи физически есть. есть trace flag, номер по памяти не скажу :(
6 окт 14, 15:46    [16666786]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
Glory
Member

Откуда:
Сообщений: 104760
select * from sys.dm_os_performance_counters
6 окт 14, 15:48    [16666798]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
+ предыдущий вариант группирует по имени. пофиксено. теперь суммы считаются по отдельным транзакциям

with t0 as
(
	select
		max([Transaction Name]) over (partition by [Transaction ID]) as txn,
		*
	from
		fn_dblog(null, null)
)
select
	min(txn) as tran_name,
	sum([Log Record Length]) / 1024.0 as size_kb,
	sum([Log Reserve]) / 1024.0 as reserve_kb
from
	t0
group by
	[Transaction ID]

6 окт 14, 15:50    [16666814]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
Glory
Member

Откуда:
Сообщений: 104760
MSSQL$KILIMADJARO:Databases Commit table entries
MSSQL$KILIMADJARO:Databases Data File(s) Size (KB)
MSSQL$KILIMADJARO:Databases Log File(s) Size (KB)
MSSQL$KILIMADJARO:Databases Log File(s) Used Size (KB)
MSSQL$KILIMADJARO:Databases Percent Log Used
MSSQL$KILIMADJARO:Databases Active Transactions
6 окт 14, 15:51    [16666817]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
+ еще хорошему надо учитывать parent transaction id, а то page split'ы например посчитаются как отдельные транзакции, внутренне оно так и есть, а вот породила их какая-то кокретная транзакция... и по хорошему это барахло надо включать в ее размер...
6 окт 14, 15:53    [16666839]     Ответить | Цитировать Сообщить модератору
 Re: Как зафиксировать размер проходящих транзакций в БД  [new]
Авторррррр
Guest
churupaha,

Запустил этот код на сервере, после 17 часов безрезультативного исполнения остановил работу скрипта...
Будем искать с перламутровыми)
7 окт 14, 11:11    [16669940]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить