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

Откуда:
Сообщений: 13
Всем привет, подскажите. Есть у нас на работе MS SQL Express 2008 r2 sp2. На сколько я понял, в этой редакции ограничение на размер БД 10 ГБайт? Есть у нас БД, в ней есть таблица, которая занимает 6 ГБайт. Эту таблицу в Truncate Table. Далее смотрим, размер БД не изменился. Через свойства таблицы "хранилище" Managment Studio показывает "Пространство данных" 0 MB. А если сделать стандартный отчет "Использование дисковой памяти верхними таблицами" Данные в этой таблице занимают 6000 КБ. Что сделать, чтобы размер БД уменьшился на эти самые 6 ГБ после Truncate Table?
Функция сжатия файла БД, после Truncate, показывает доступное свободное место 3% (200 МБ).
15 мар 19, 12:02    [21833532]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
StarikNavy
Member

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

база, после удаление информации, не делает автоматическое освобождение места (т.к. чаще всего это не имеет смысла)
освободить место можно самостоятельно изучив команду SHRINKFILE
15 мар 19, 12:04    [21833537]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1297
Elminzter
Что сделать, чтобы размер БД уменьшился на эти самые 6 ГБ после Truncate Table?
сжать файлы.
вы вынесли вещи из шкафа, но не вынесли шкаф из комнаты, вот в комнате и нет свободного места (из аналогии, прочитанной когда-то здесь на форуме) :)
15 мар 19, 12:05    [21833538]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1297
Щукина Анна,

первоисточник, если что
15 мар 19, 12:07    [21833542]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
Elminzter
Member

Откуда:
Сообщений: 13
Вот я как-раз пишу в конце что SQL Studio после truncate table, если выбрать сжать файл БД, пишет, что Выделенное место 6227,44 МБ, Операция сжатия: сжать файл до: (минимум 6036 МБ). Грубо говоря DBCC SHRINKFILE не видит свободного пространства для сжатия более 192,38 МБ.

К сообщению приложен файл. Размер - 121Kb
15 мар 19, 12:40    [21833605]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6262
Elminzter,

база FULL/SIMPLE?
15 мар 19, 12:43    [21833608]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
Elminzter
Member

Откуда:
Сообщений: 13
FULL
15 мар 19, 13:02    [21833657]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6262
Elminzter
FULL

ну раз вам там ничего не надо, переведите в SIMPLE и шринкуйте
15 мар 19, 13:03    [21833662]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
Elminzter
Member

Откуда:
Сообщений: 13
TaPaK
Elminzter
FULL

ну раз вам там ничего не надо, переведите в SIMPLE и шринкуйте

Все тоже самое и для модели восстановления SIMPLE:
После шринка доступное место стало 6124 МБ.
15 мар 19, 13:32    [21833732]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6262
Elminzter
TaPaK
пропущено...

ну раз вам там ничего не надо, переведите в SIMPLE и шринкуйте

Все тоже самое и для модели восстановления SIMPLE:
После шринка доступное место стало 6124 МБ.

а лог будем?
15 мар 19, 13:32    [21833734]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28367
TaPaK
а лог будем?
Так в этом окошке и показывает данные по файлу. Раз написано,что свободно 192,38 МБ, значит, так и есть.

Что то автор напутал.
15 мар 19, 13:43    [21833757]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
Elminzter
Member

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

Картинка с другого сайта.
Картинка с другого сайта.
Картинка с другого сайта.
15 мар 19, 14:04    [21833816]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
Elminzter
Member

Откуда:
Сообщений: 13
[img]https://i.ibb.co/qCWbmT1/Whats-App-Image-2019-03-15-at-16-02-14.jpg[/img]
[img]https://i.ibb.co/RSbN9M2/Whats-App-Image-2019-03-15-at-16-01-51.jpg[/img]
[img]https://i.ibb.co/5v66hHq/Whats-App-Image-2019-03-15-at-16-01-33.jpg[/img]
15 мар 19, 14:06    [21833823]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
Elminzter
Member

Откуда:
Сообщений: 13
alexeyvg
TaPaK
а лог будем?
Так в этом окошке и показывает данные по файлу. Раз написано,что свободно 192,38 МБ, значит, так и есть.

Что то автор напутал.

Свободно из выделенного места.
15 мар 19, 14:08    [21833831]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6262
автор
Данные в этой таблице занимают 6000 КБ

брюки превращаются.... в 6ГБ?
15 мар 19, 14:09    [21833833]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28367
Elminzter
[img]https://i.ibb.co/qCWbmT1/Whats-App-Image-2019-03-15-at-16-02-14.jpg[/img]
[img]https://i.ibb.co/RSbN9M2/Whats-App-Image-2019-03-15-at-16-01-51.jpg[/img]
[img]https://i.ibb.co/5v66hHq/Whats-App-Image-2019-03-15-at-16-01-33.jpg[/img]
Ну вот, видите, файл занят данными.
15 мар 19, 14:11    [21833838]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28367
Elminzter
alexeyvg
Так в этом окошке и показывает данные по файлу. Раз написано,что свободно 192,38 МБ, значит, так и есть.

Что то автор напутал.

Свободно из выделенного места.
Нет, свободного места в файле.
15 мар 19, 14:13    [21833841]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28367
alexeyvg
Elminzter
Свободно из выделенного места.
Нет, свободного места в файле.
Хотя можно сказать "Свободно из выделенного места"

В общем, вот файл, занимает на диске 6200 мегабайт. Из них 6000 занято вашими данными, а 200 свободно.

Это по-простому, что бы не ловить семантическую разницу между "Свободно из выделенного места" и "свободного места в файле"
15 мар 19, 14:17    [21833854]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
msLex
Member

Откуда:
Сообщений: 6014
Операция truncate не сразу освобождает данные.
"Создается" новая пустая таблица и меняется "указатель" в метаданных (на root/first/IAM).
Сама очистка данных это асинхронный процесс.
15 мар 19, 14:39    [21833903]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
Elminzter
Member

Откуда:
Сообщений: 13
msLex
Операция truncate не сразу освобождает данные.
"Создается" новая пустая таблица и меняется "указатель" в метаданных (на root/first/IAM).
Сама очистка данных это асинхронный процесс.

Можно ли как-то повлиять на этот процесс? И допустим чтобы следующий раз удалять данные, попробовать через Drop Table?
15 мар 19, 16:41    [21834077]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28367
Elminzter
msLex
Операция truncate не сразу освобождает данные.
"Создается" новая пустая таблица и меняется "указатель" в метаданных (на root/first/IAM).
Сама очистка данных это асинхронный процесс.

Можно ли как-то повлиять на этот процесс? И допустим чтобы следующий раз удалять данные, попробовать через Drop Table?
Для начала посмотрите, сколько места занимают объекты в базе.

Зачем вы идёте какими то сложными экзотическими путями, начинайте с простого. Процесс может и асинхронный, но не на час же? Никогда не сталкивался с тем, что место после транкейта было бы ещё занято, скажем, через секунду.
SELECT 
	schema_name(o.schema_id) + '.' +  o.name as [Table Name], 
	fg.name as [File Group],
	SUM (p.reserved_page_count) as [reserved_page_count],
	convert(decimal(13,2), SUM (p.reserved_page_count) * 8. / 1024 / 1024) as [reservedpages GB],
	SUM (p.used_page_count) as [used_page_count],
	convert(decimal(13,2), SUM (p.used_page_count) * 8. / 1024 / 1024) as [usedpages GB],
	SUM (
		CASE
			WHEN (p.index_id < 2) THEN (p.in_row_data_page_count + p.lob_used_page_count + p.row_overflow_used_page_count)
			ELSE p.lob_used_page_count + p.row_overflow_used_page_count
		END
		) as pages,
	SUM (
		CASE
			WHEN (p.index_id < 2) THEN p.row_count
			ELSE 0
		END
		) as [rowCount]
FROM sys.dm_db_partition_stats p (nolock)
	join sys.objects as o (nolock)
		on o.object_id = p.object_id
		and o.type = 'U'
	join sys.sysindexes i (nolock)
		on i.id = o.object_id
		and i.indid in (0,1)
	join sys.filegroups fg (nolock)
		on fg.data_space_id = i.groupid
group by o.name, o.schema_id, fg.name
order by [reservedpages GB] desc
--order by [usedpages GB] desc
15 мар 19, 16:48    [21834083]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6262
мне всё таки интересно, как же решить такую загадку
автор
Данные в этой таблице занимают 6000 КБ. Что сделать, чтобы размер БД уменьшился на эти самые 6 ГБ после Truncate Table?
15 мар 19, 16:55    [21834088]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 863
TaPaK,

DBCC CLEANTABLE

https://docs.microsoft.com/ru-ru/sql/t-sql/database-console-commands/dbcc-cleantable-transact-sql?view=sql-server-2017
15 мар 19, 17:00    [21834097]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6262
Slava_Nik
TaPaK,
DBCC CLEANTABLE
https://docs.microsoft.com/ru-ru/sql/t-sql/database-console-commands/dbcc-cleantable-transact-sql?view=sql-server-2017

трудности понимания слов в статье? ну и загадка совсем не о том..
15 мар 19, 17:01    [21834099]     Ответить | Цитировать Сообщить модератору
 Re: Truncate Table  [new]
Elminzter
Member

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

 USE UPD_E
 GO
 Truncate table dbo.AKP_Files
 GO
 USE UPD_E
 GO
 DBCC CLEANTABLE (UPD_E, AKP_Files,0)
 GO


После выполняю скрипт alexeyvg

Table Name File Group reserved_page_count reservedpages GB used_page_count usedpages GB pages rowCount
dbo.Export_files PRIMARY 622420 4.75 622291 4.75 622289 33864



Итого прошло уже 5 часов, Студия показывает как во вложении.

К сообщению приложен файл. Размер - 141Kb
15 мар 19, 20:44    [21834321]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить