powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Большой размер templog (субъективно)
25 сообщений из 29, страница 1 из 2
Большой размер templog (субъективно)
    #40027953
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

Прошу помочь прояснить ситуацию с размером templog.
Ситуация: в ноябре сильно разрослась tempdb, до примерно 60Гб (как сама, так и templog).
И если самой tempdb помог Shrink Database - теперь она 11,7Гб, то tenplog как был, так и остается порядка 60Гб (dbcc shrinkfile ('templog') также не помогает). Перезапуск сервера ничем не помог.
Подобный размер беспокоит, т.к. общего места на диске осталось немного, а увеличить возможности нет.

1. Самая "старая" транзакция на текущий момент в tempdb - сегодняшняя. Dec 15 2020 12:00:50:870PM

2.
Код: plaintext
1.
2.
Database Name	Log Size (MB)	Log Space Used (%)	Status
tempdb		57834,62	16,53385		0

3. временных таблиц - 4853 штуки

4. среди временных таблиц есть одна:
Код: plaintext
1.
groupname	reservedpages	usedpages	pages	rowCount
PRIMARY		536088		536080		67008	4154406

5. у остальных "временных" параметр "reserved pages" не превышает 72, а "used pages" - и того меньше

Может быть дело в ней? Как узнать? И можно ли как-то узнать, что вызвало ее создание? И если дело в ней, то можно ли как-то о нее избавиться, не навредив?
К сожалению, мои текущие познания в SQL-сервере крайне скудны и основаны лишь на "Руководстве для начинающих" (Петкович Д.) + форум сайта SQL.ru. Просмотрел похожие темы, но решения, к сожалению так и не нашел.

Заранее благодарю за содержательные ответы.
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40027958
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40027966
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПерезапуск сервера ничем не помог.
Совершенно неправда. "Само", конечно, не сожмется. После перезапуска службы необходимо изменить размер файла как можно быстрее, пока не заняли другие процессы VLF, проще всего через меню свойств базы. Изменять размер следует лишь в случае, если в дальнейшем рост не предвидится.
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40027972
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sviman144,
USE tempdb
CHECKPOINT
DBCC SHRINKFILE (templog, 0, TRUNCATEONLY)
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40027984
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы.
Результаты DBCC Loginfo:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
FileId	FileSize	StartOffset	FSeqNo	Status	Parity	CreateLSN
2	3790209024	8192		185	0	64	0
2	3790209024	3790217216	186	0	64	0
2	3790209024	7580426240	187	0	64	0
2	3790209024	11370635264	188	0	64	0
2	3790209024	15160844288	189	0	64	0
2	3790209024	18951053312	190	0	64	0
2	3790209024	22741262336	191	2	64	0
2	3790209024	26531471360	192	2	64	0
2	3790209024	30321680384	193	2	64	0
2	3790209024	34111889408	162	0	128	0
2	3790209024	37902098432	163	0	128	0
2	3790209024	41692307456	164	0	128	0
2	3790209024	45482516480	165	0	128	0
2	3790209024	49272725504	166	0	128	0
2	3790209024	53062934528	167	0	128	0
2	3790856192	56853143552	168	0	128	0

1. Учитывая "статью" (спасибо invm) и набор команд (спасибо ptr128), значит ли это, что DBCC ShrinkFile ... Truncateonly, по идее, должно "освободить место", начиная с 10-строки таблицы выше (т.к. "...Параметр TRUNCATEONLY не переносит сведения в журнале, но удаляет неактивные VLF в конце файла журнала."). Или у меня "английский" страдает и/или я все неправильно понял (в статье)? И если "правильно", то как, при таком LOG все-таки "сдвинуть" активные VLF в начало?

2. DBCC SHRINKFILE (templog, 0, TRUNCATEONLY). Если я правильно понял, то "0" относится к аргументу target_size. А в MS Docs пишут: "...Аргумент target_size не учитывается, если указан аргумент TRUNCATEONLY." Или я опять неправильно понял? ;)
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028004
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sviman144
значит ли это, что DBCC ShrinkFile ... Truncateonly, по идее, должно "освободить место", начиная с 10-строки таблицы выше
Да.
Sviman144
как, при таком LOG все-таки "сдвинуть" активные VLF в начало?
Сдвинуть никак. Нужно завершить активные транзакции. Либо подождать пока активная часть журнала сама перейдет в его начало.
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028009
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
Нужно завершить активные транзакции.

А можно их как-то "вычислить", чтобы попытаться "завершить"?
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028012
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sviman144,

DBCC OPENTRAN ('tempdb')
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028015
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Команды "от ptr128" не помогла
Результат выполнения:
Код: plaintext
1.
DbId	FileId	CurrentSize	MinimumSize	UsedPages	EstimatedPages
2	2	7402832		7402832		7402832		7402832

"Новый" результат LOGINFO после shrink + truncateonly:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
FileId	FileSize	StartOffset	FSeqNo	Status	Parity	CreateLSN
2	3790209024	8192		185	0	64	0
2	3790209024	3790217216	186	0	64	0
2	3790209024	7580426240	187	0	64	0
2	3790209024	11370635264	188	0	64	0
2	3790209024	15160844288	189	0	64	0
2	3790209024	18951053312	190	0	64	0
2	3790209024	22741262336	191	0	64	0
2	3790209024	26531471360	192	0	64	0
2	3790209024	30321680384	193	0	64	0
2	3790209024	34111889408	194	2	64	0
2	3790209024	37902098432	163	0	128	0
2	3790209024	41692307456	164	0	128	0
2	3790209024	45482516480	165	0	128	0
2	3790209024	49272725504	166	0	128	0
2	3790209024	53062934528	167	0	128	0
2	3790856192	56853143552	168	0	128	0
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028016
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ptr128,

DBCC Opentran:
Oldest active transaction:
SPID (server process ID): 113
UID (user ID) : -1
Name : sort_init
LSN : (194:1818244:271)
Start time : Dec 15 2020 3:44:12:793PM
SID : 0x010500000000000515000000eb2407ce8bd11ec73630780c40080000
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028022
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sviman144,
И что Вы от меня теперь хотите?
SPID Вы видите. Дальше уже разбирайте сами, что это за процесс, кто его запустил, когда он завершится и можно ли его убить.
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028030
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ptr128,

Так "транзакция" не такая уж "старая". Да и при последующем запуске вылезает уже другая.
Может быть и нет "зависших" транзакций?

И вопрос, скорее в другом: наверное, странно почему shrink + truncateonly не дал результатов?
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028033
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sviman144,

Потому что новые транзакции радостно используют произвольное место в файле журнала, раз уж это место аллоцировано.
Найдите, что это за процессы и кто их запускает. Не исключено, что достаточно остановить SQL Server Agent. Если уж совсем все плохо, отключите у SQL Server временно все протоколы, кроме Shared memory и перезагрузите его.
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028036
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ptr128
Найдите, что это за процессы и кто их запускает.

Не откажите, подскажите, пожалуйста, как это сделать?
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028040
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sviman144,
sp_who для начала
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028054
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ptr128,

все "пусто" для tempdb - только один процесс, который я сам запускаю, запуская sp_who.
Через Ctrl+Alt+A выдает один процесс (88).
Результаты по нему через DBCC Inputbuffer(88):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
EventType	Language Event
Parameters	0
EventInfo
 SET NOCOUNT ON;
    DECLARE @previous_collection_time datetime;
  DECLARE @previous_request_count bigint;
  DECLARE @current_collection_time datetime;
  DECLARE @current_request_count bigint;
  DECLARE @batch_requests_per_sec bigint;
  DECLARE @interval_sec bigint;
    -- Get the previous snapshot's time and batch request count
  SELECT TOP 1 @previous_collection_time = collection_time, @previous_request_count = request_count
   FROM #am_request_count  ORDER BY collection_time DESC;
    -- Get the current total time and batch request count
  SET @current_collection_time = GETDATE();
  SELECT @current_request_count = cntr_value
   FROM sys.sysperfinfo
  WHERE counter_name = 'Batch Requests/sec' COLLATE Latin1_General_BIN;
    SET @interval_sec =
       -- Avoid divide-by-zero
      CASE
          WHEN DATEDIFF (second, @previous_collection_time, @current_collection_time) = 0 THEN 1
          ELSE DATEDIFF (second, @previous_collection_time, @current_collection_time)
      END;
    -- Calc the Batch Requests/sec rate for the just-completed time interval.
   SET @batch_requests_per_sec = (@current_request_count - @previous_request_count) / @interval_sec;
    -- Save off current batch count  INSERT INTO #am_request_count (collection_time, request_count)
   VALUES (@current_collection_time, @current_request_count);
    -- Return the batch requests/sec rate for the just-completed time interval.
   SELECT ISNULL (@batch_requests_per_sec, 0) AS batch_requests_per_sec;
    -- Get rid of all but the most recent snapshot's data
  DELETE FROM #am_request_count WHERE collection_time < @current_collection_time;   
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028055
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sviman144
все "пусто" для tempdb
Как вы определили, что другие не "для tempdb"?
Любой процесс может обращаться к любой базе, и даже может одновременно к нескольким базам в одном запросе.
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028063
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sviman144
все "пусто" для tempdb

А это что?
Sviman144
FROM #am_request_count
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028071
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,

предположил на основании sp_who 'active', в результате выполнения которой есть только одна строчка со ссылкой на tempdb:

Код: plaintext
1.
spid	ecid	status		loginame	hostname	blk	dbname	cmd	request_id
70	0	runnable	sa		SQLSRV		0    	tempdb	SELECT	0
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028072
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sviman144,
ptr128
Не исключено, что достаточно остановить SQL Server Agent.

Пробовали?
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028077
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ptr128,

Никогда не пробовал.
На нем завязано несколько "jobs", которые довольно часто срабатывают (по событиям) в БД. Боязно. :)
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028082
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sviman144,

Попытки пошринкать tempdb не имеют смысла, т.к. она у вас создается уже с журналом такого размера. Поэтому после рестарта службы сервера получите те же самые 60 Гб.
Можете проверить посмотрев на данные в столбце size для
Код: sql
1.
select * from sys.sysaltfiles where dbid = 2;


Просто уменьшите начальныей размер ЖТ для tempdb и перезапустите службу сервера.
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028086
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Спасибо. Т.е. получается его размер и был 60 Гб. А то, что "в ноябре сильно разрослась tempdb" относилось, видимо, к самой tempdb, а templog таким и был изначально?

Если "так", то вопрос снимается. :)
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028088
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ptr128,

не знаю, единственное, что нашел похожее среди таблиц в tempdb - это:
Код: plaintext
#am_request_count___________________________________________________________________________________________________000000042C4C

Таблицы с именем
Код: plaintext
#am_request_count
не могу найти
...
Рейтинг: 0 / 0
Большой размер templog (субъективно)
    #40028089
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sviman144, это она и есть
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Большой размер templog (субъективно)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]