Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 FILEPROPERTY(name, 'SpaceUsed')  [new]
AndrF
Member

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

SELECT name,
		file_size = 8 * size,
		free = 8 * (size - FILEPROPERTY(name, 'SpaceUsed')),
		autogrowth = 8 * 2 * CASE is_percent_growth WHEN 0 THEN growth ELSE growth * size / 100 END
	FROM sys.database_files
	WHERE growth > 0
	ORDER BY [type], name


Вроде работает, но если запускать данный запрос сразу, то значение free будет неверным. С задержкой 10 секунд (для моей тестовой базки) - результат возвращается правильный.

Собственно вопрос - каким образом можно заставить FILEPROPERTY(name, 'SpaceUsed') вернуть правильный результат сразу? Ну или кто знает иное решение?
11 сен 18, 13:55    [21670933]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
komrad
Member

Откуда:
Сообщений: 5245
AndrF
Выполняется реиндекс и шринк базы данных, после чего нужно посмотреть размер ее файлов.

бессмысленное мероприятие, если только вы не отрезаете свободное место в хвосте файла
11 сен 18, 14:40    [21671011]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
AndrF
Member

Откуда:
Сообщений: 2194
komrad
бессмысленное мероприятие, если только вы не отрезаете свободное место в хвосте файла


Мне нужно определиться - нужно ли делать шринк данного файла после произведенных операций.
11 сен 18, 14:52    [21671035]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
AndrF
komrad
бессмысленное мероприятие, если только вы не отрезаете свободное место в хвосте файла


Мне нужно определиться - нужно ли делать шринк данного файла после произведенных операций.

так ответ и так известный
11 сен 18, 14:58    [21671042]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
AndrF
Member

Откуда:
Сообщений: 2194
TaPaK
так ответ и так известный


Далеко не однозначно.
11 сен 18, 15:13    [21671071]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
komrad
Member

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

https://www.mssqltips.com/sqlservertip/4368/execute-sql-server-dbcc-shrinkfile-without-causing-index-fragmentation/
11 сен 18, 15:50    [21671124]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
AndrF
Member

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

Про фрагментацию индексов известно (вот, к примеру), но это решается довольно просто - выполнением INDEX_REORGANIZE для таблиц с высокой фрагментацией.

Так что по прежнему интересует как можно определить размер файлов базы данных после определенный операций.

Проблема в том что FILEPROPERTY(name, 'SpaceUsed')) в данной ситуации возвращает правильное значение лишь через некоторое время...
11 сен 18, 16:22    [21671179]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
AndrF
Member

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

Про фрагментацию индексов известно (вот, к примеру), но это решается довольно просто - выполнением INDEX_REORGANIZE для таблиц с высокой фрагментацией.

Так что по прежнему интересует как можно определить размер файлов базы данных после определенный операций.

Проблема в том что FILEPROPERTY(name, 'SpaceUsed')) в данной ситуации возвращает правильное значение лишь через некоторое время...
11 сен 18, 16:22    [21671180]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
AndrF,

DBCC UPDATEUSAGE
11 сен 18, 16:39    [21671194]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
AndrF
Member

Откуда:
Сообщений: 2194
WarAnt
AndrF,

DBCC UPDATEUSAGE


Пробовал - не помогает :(
11 сен 18, 16:39    [21671196]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
invm
Member

Откуда: Москва
Сообщений: 9351
AndrF
Про фрагментацию индексов известно (вот, к примеру), но это решается довольно просто - выполнением INDEX_REORGANIZE для таблиц с высокой фрагментацией.
Не путайте внутреннюю и внешнюю фрагментацию.
Shrink порождает внешнюю, reorganize убирает внутреннюю.
11 сен 18, 16:40    [21671199]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
AndrF
Member

Откуда:
Сообщений: 2194
invm
Не путайте внутреннюю и внешнюю фрагментацию.
Shrink порождает внешнюю, reorganize убирает внутреннюю.


Хм. А где это написано? Вроде он должен работать с уже имеющимся файлом. Или я ошибаюсь, тогда где почитать?

Если ошибаюсь, то какое из зол лучше?
11 сен 18, 16:55    [21671227]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
invm
Member

Откуда: Москва
Сообщений: 9351
AndrF
тогда где почитать?
https://blog.devart.com/sql-server-index-fragmentation-in-depth.html

Заезженная рекомендация "опытных собаководов" - если уж и делать shrink. то с опцией truncateonly.
11 сен 18, 17:02    [21671235]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
AndrF
Member

Откуда:
Сообщений: 2194
invm
AndrF
тогда где почитать?
https://blog.devart.com/sql-server-index-fragmentation-in-depth.html

Заезженная рекомендация "опытных собаководов" - если уж и делать shrink. то с опцией truncateonly.


В свойствах диска настроена автоматическая дефрагментация файлов раз в неделю. Так что внешняя выправится, пусть и не сразу (сейчас она, кстати, 0% у файла базы в 3,7 ТБ).

Просто он уже вылез за допустимый предел мониторинга и потому дюже хочется его уменьшить.

Ну ладно, этот-то сделаем ручками.

Но на будущее дюже хотелось бы разобраться с вопросом...
11 сен 18, 17:58    [21671298]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
invm
Member

Откуда: Москва
Сообщений: 9351
AndrF
Но на будущее дюже хотелось бы разобраться с вопросом...
Для этого нужно внимательно читать предлагаемые материалы.
Чтобы не писать подобное:
AndrF
В свойствах диска настроена автоматическая дефрагментация файлов раз в неделю. Так что внешняя выправится
11 сен 18, 18:36    [21671339]     Ответить | Цитировать Сообщить модератору
 Re: FILEPROPERTY(name, 'SpaceUsed')  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
AndrF
invm
если уж и делать shrink. то с опцией truncateonly.


В свойствах диска настроена автоматическая дефрагментация файлов раз в неделю. Так что внешняя выправится, пусть и не сразу
:-)
11 сен 18, 19:10    [21671377]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить