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

Откуда:
Сообщений: 13
Доброго времени суток, помогите пожалуйста с одним вопросом.
Есть БД, размер её, ну скажем, 1.1Гб.
Есть запрос:

USE ;--БД
DBCC UPDATEUSAGE (0);
CREATE TABLE temp([name] varchar(255), [строк] varchar(255), [зарезервировано] varchar(255), [всего данных] varchar(255), [размер индексов] varchar(255), [свободно] varchar(255));
INSERT INTO temp
exec sp_msforeachtable N'exec sp_spaceused ''?''';
SELECT *
 FROM temp 
ORDER BY CONVERT(bigint, REPLACE([всего данных], ' KB', '')) DESC;
DROP TABLE temp;


Возвращает размер таблиц и индексов.
При помощи нехитрых телодвижений считаю общий размер, занимаемый таблицами и индексами. Получается что-то порядка 600Мб.


Внимание вопрос: А что занимает остальные 500Мб и какой запрос мне это может показать?
2 дек 13, 19:23    [15227843]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Из пустого места, например.
2 дек 13, 19:29    [15227872]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
MasterZiv
Member

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

Я не знаю, что данный конктертный запрос выдаёт,
но в общем, размер файла БД -- это

-- данные
-- индексы
-- системная служебная информация (системный каталог и прочие мета и системные данные)
-- журнал транзакций.
2 дек 13, 19:40    [15227925]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Yellmanov
Member

Откуда:
Сообщений: 13
Гавриленко Сергей Алексеевич,
SHRINKDATABASE выполнен, если вы об этом, если нет то поясните пожалуйста.
2 дек 13, 19:40    [15227930]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709
Сори, забыл ещё

-- пустое место, выделенное под БД или внутри БД под объекты БД (таблицы, индексы).
2 дек 13, 19:41    [15227935]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Yellmanov
Member

Откуда:
Сообщений: 13
MasterZiv,
Журнал транзакций обрезан практически до нуля.
2 дек 13, 19:43    [15227944]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Yellmanov
Member

Откуда:
Сообщений: 13
MasterZiv,
SHRINKDATABASE обрезает это пустое место, насколько я понимаю. Или нет?
2 дек 13, 19:46    [15227971]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Yellmanov
MasterZiv,
SHRINKDATABASE обрезает это пустое место, насколько я понимаю. Или нет?
Запущенный с нужными параметрами - безусловно.
2 дек 13, 19:51    [15227997]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Yellmanov
Member

Откуда:
Сообщений: 13
Гавриленко Сергей Алексеевич,
собственно вопрос остался открытым в таком случае.
2 дек 13, 19:52    [15228005]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
Yellmanov
MasterZiv,
SHRINKDATABASE обрезает это пустое место, насколько я понимаю. Или нет?
Нет, полностью не обрезает.

И вообще непонятно, что вы имели в виду "При помощи нехитрых телодвижений считаю общий размер, занимаемый таблицами и индексами"?
Вы складывали [зарезервировано] или [всего данных]?
Yellmanov
Внимание вопрос: А что занимает остальные 500Мб и какой запрос мне это может показать?
На эти вопросы ответы простые, об этом уже писали:
Занимает свободное пространство. Получаем размер файлов, получаем [зарезервировано] из запроса выше, вычитаем - должно получиться 500 мегабайт.
2 дек 13, 19:54    [15228014]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Yellmanov
Гавриленко Сергей Алексеевич,
собственно вопрос остался открытым в таком случае.
Цифры покажите. Можно без имен таблиц.
2 дек 13, 19:56    [15228030]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Yellmanov
Member

Откуда:
Сообщений: 13
Гавриленко Сергей Алексеевич,
строк зарезервировано [всего данных] [размер индексов] свободно
366829 138968 KB 55760 KB 82104 KB 1104 KB
9437 44744 KB 42456 KB 1688 KB 600 KB
23042 50216 KB 32792 KB 17392 KB 32 KB
30945 23952 KB 18624 KB 5056 KB 272 KB
89461 22352 KB 15656 KB 6648 KB 48 KB
201 11608 KB 11400 KB 32 KB 176 KB
56826 14544 KB 10384 KB 4032 KB 128 KB
43148 17176 KB 10224 KB 6592 KB 360 KB
103126 25656 KB 7896 KB 15848 KB 1912 KB
32908 9744 KB 7728 KB 1968 KB 48 KB
77224 19608 KB 6928 KB 12320 KB 360 KB
1500 6928 KB 6648 KB 176 KB 104 KB


Пожалуйста.

К сообщению приложен файл. Размер - 45Kb
2 дек 13, 20:04    [15228074]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
o-o
Guest
и вот это покажите:
select file_id, size * 8 as size_in_kb
from sys.database_files


не всякий шринк обрежет, как попросили.
DBCC SHRINKDATABASE включает в себя еще и шринк лога.
например, лог нельзя обрезать так, чтоб в нем осталось меньше 2-ух VLF.
если каждый из них по 300 Мб, хоть заобрезайся, лог не станет менее 600 Мб.
2 дек 13, 20:05    [15228075]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Yellmanov
Member

Откуда:
Сообщений: 13
alexeyvg
Yellmanov
MasterZiv,
SHRINKDATABASE обрезает это пустое место, насколько я понимаю. Или нет?
Нет, полностью не обрезает.

И вообще непонятно, что вы имели в виду "При помощи нехитрых телодвижений считаю общий размер, занимаемый таблицами и индексами"?
Вы складывали [зарезервировано] или [всего данных]?

alexeyvg,
нет. Я складываю размер таблиц и индексов.
alexeyvg
Yellmanov
Внимание вопрос: А что занимает остальные 500Мб и какой запрос мне это может показать?
На эти вопросы ответы простые, об этом уже писали:
Занимает свободное пространство. Получаем размер файлов, получаем [зарезервировано] из запроса выше, вычитаем - должно получиться 500 мегабайт.

Размер файлов БД 1.1Гб
Зарезервировано (600Мб) = Размер данных в таблице + размер индекса для таблицы + свободное место внутри таблицы.

alexeyvg
Yellmanov
MasterZiv,
SHRINKDATABASE обрезает это пустое место, насколько я понимаю. Или нет?
Нет, полностью не обрезает.

А как тогда обрезает? Пополам чтоле? =)
2 дек 13, 20:10    [15228100]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Yellmanov
Member

Откуда:
Сообщений: 13
o-o,
Ребята, второй раз повторяю ЛОГ обрезан практически до нуля.
2 дек 13, 20:11    [15228106]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
зарезервировано
Guest
Yellmanov
нет. Я складываю размер таблиц и индексов.

а надо "зарезервировано"
2 дек 13, 20:18    [15228133]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Yellmanov
Member

Откуда:
Сообщений: 13
зарезервировано,
автор Yellmanov
Зарезервировано (600Мб) = Размер данных в таблице + размер индекса для таблицы + свободное место внутри таблицы.
2 дек 13, 20:22    [15228146]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
зарезервировано
Guest
Yellmanov
зарезервировано,
автор Yellmanov
Зарезервировано (600Мб) = Размер данных в таблице + размер индекса для таблицы + свободное место внутри таблицы и индексе/ах.


но не суть, вы то что складывали?
2 дек 13, 20:27    [15228159]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Yellmanov
Member

Откуда:
Сообщений: 13
зарезервировано
Yellmanov
зарезервировано,
пропущено...


но не суть, вы то что складывали?



Размер базы (1.1Гб) минус (-) зарезервировано (600Мб) = не знаю что (500Мб)

единственное, что сложил это SUM([Зарезервировано]) по всем таблицам.
2 дек 13, 20:31    [15228169]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
Yellmanov
alexeyvg
Нет, полностью не обрезает.

А как тогда обрезает? Пополам чтоле? =)
Во первых, есть какая то бага с освобождением и учётом места для BLOB

В вторых, есть "отложенные операции удаления", которые шринк не освобождает.
BOL
При удалении или перестроении больших индексов либо удалении или усечении больших таблиц компонент Database Engine откладывает фактическое освобождение страниц и связанных блокировок до момента фиксации транзакции. Отложенные операции удаления не освобождают выделенное место немедленно. Поэтому значения, возвращаемые процедурой sp_spaceused сразу после удаления или усечения большого объекта, могут не отражать реальный объем доступного места на диске. Дополнительные сведения об отложенном выделении объектов см. в разделе Удаление и повторная сборка больших объектов.


Кроме того, как считали место? sp_msforeachtable вроде ходит только по пользовательчским таблицам? Может, у вас хранимых процедур на 100 мегов :-)
2 дек 13, 22:32    [15228589]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Yellmanov
Member

Откуда:
Сообщений: 13
alexeyvg
Yellmanov
пропущено...

А как тогда обрезает? Пополам чтоле? =)
Во первых, есть какая то бага с освобождением и учётом места для BLOB

Можно поподробнее насчёт баги?
alexeyvg
В вторых, есть "отложенные операции удаления", которые шринк не освобождает.
BOL
При удалении или перестроении больших индексов либо удалении или усечении больших таблиц компонент Database Engine откладывает фактическое освобождение страниц и связанных блокировок до момента фиксации транзакции. Отложенные операции удаления не освобождают выделенное место немедленно. Поэтому значения, возвращаемые процедурой sp_spaceused сразу после удаления или усечения большого объекта, могут не отражать реальный объем доступного места на диске. Дополнительные сведения об отложенном выделении объектов см. в разделе Удаление и повторная сборка больших объектов.


Кроме того, как считали место? sp_msforeachtable вроде ходит только по пользовательским таблицам? Может, у вас хранимых процедур на 100 мегов :-)

То есть есть подозрение что системные таблицы весят под 400мб?)
Это сколько же надо хранимок чтобы они 100мб весили?))
3 дек 13, 12:37    [15231035]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Yellmanov
То есть есть подозрение что системные таблицы весят под 400мб?)
Это сколько же надо хранимок чтобы они 100мб весили?))

EXEC sp_spaceused @updateusage = N'TRUE';
DBCC SQLPERF(LOGSPACE);
3 дек 13, 12:39    [15231057]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
Yellmanov
Member

Откуда:
Сообщений: 13
Разобрался. Переделал процедуру "sp_MSforeachtable", чтобы она пробегала не только по User-таблицам, а по всем.
Сразу нашлись пропавшие МБ, почти все... =)
3 дек 13, 17:20    [15233877]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
Yellmanov
То есть есть подозрение что системные таблицы весят под 400мб?)
Это сколько же надо хранимок чтобы они 100мб весили?))

Yellmanov
Разобрался. Переделал процедуру "sp_MSforeachtable", чтобы она пробегала не только по User-таблицам, а по всем.
Сразу нашлись пропавшие МБ, почти все... =)
Что, неужели процедуры???

Или репликации какие нибуть?
3 дек 13, 17:24    [15233926]     Ответить | Цитировать Сообщить модератору
 Re: Из чего состоит размер БД?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 2091
А запустить
sp_spaceused 
не судьба?
подробно расжёвывает, какого размера база, и что в ней сколько места занимает.
Три основных недостатка:
часть данных в MB, а часть в KB; данные выводятся в 2 таблицы; и не даёт данные по файлам логов, но это значение легко получить, вычтя из database_size значение rezerved/1024 и unallocated space/1024:
Log=database_size - rezerved/1024- unallocated space/1024
17 дек 13, 11:42    [15303566]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить