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

Откуда:
Сообщений: 358
Как узнать размер данных в таблице?
8 май 13, 17:57    [14275216]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
http://msdn.microsoft.com/ru-ru/library/ms173486.aspx
8 май 13, 17:58    [14275220]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
stavelot
Member

Откуда:
Сообщений: 358
stavelot
Как узнать размер данных в таблице?


Использую sp_spaceused, но он отображает сколько зарезервировано под данные, а не сам размер данных.
8 май 13, 17:59    [14275221]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
SergePnb
Member

Откуда: Киев
Сообщений: 456
stavelot,

Может будет полезно, только доработайте под свои нужды

select 
  [schema] = s.name 
 ,table_name = t.name 
 ,[index] = i.name 
 ,i.type_desc 
 ,p.data_compression_desc  
 ,[total_size, MB] = SUM(au.total_pages) * 8 /1024 
 ,[used_size, MB]  = SUM(au.used_pages) * 8 /1024 
 ,[data_size, MB]  = SUM(au.data_pages) * 8 /1024 
from sys.partitions p 
  inner join sys.indexes i on i.[object_id] = p.[object_id] and i.index_id = p.index_id 
  inner join sys.objects t on t.[object_id] = i.[object_id] 
  inner join sys.schemas s on s.[schema_id] = t.[schema_id] 
  left outer join sys.allocation_units au on (au.type in (1,3) and au.container_id = p.hobt_id) 
                                          or (au.type = 2 and au.container_id = p.partition_id) 
group by                                            
  s.name 
 ,t.name 
 ,i.name 
 ,i.type_desc 
 ,p.data_compression_desc  
order by 1,2,3,6 desc
8 май 13, 18:03    [14275240]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
stavelot
stavelot
Как узнать размер данных в таблице?


Использую sp_spaceused, но он отображает сколько зарезервировано под данные, а не сам размер данных.
И что тогда в вашем понимании "размер данных"?

З.Ы.: sp_spaceused

reserved 
varchar(18)
Total amount of reserved space for objname.

data
varchar(18)
Total amount of space used by data in objname.

index_size
varchar(18)
Total amount of space used by indexes in objname.

unused
varchar(18)
Total amount of space reserved for objname but not yet used.


Сообщение было отредактировано: 8 май 13, 18:13
8 май 13, 18:11    [14275275]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
stavelot
Member

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

Смотрите, создаю таблицу:
create table tt_u (c1 int)
insert into tt_u values(1)
EXEC sp_spaceused 'dbo.tt_u'


Получаю:
8 май 13, 18:26    [14275337]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
stavelot
Member

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

Смотрите, создаю таблицу:
create table tt_u (c1 int)
insert into tt_u values(1)
EXEC sp_spaceused 'dbo.tt_u'


Получаю:


Один и тот же результат, что в таблице хранится одна строка

name	rows	reserved	data	index_size	unused
tt_u	1        	16 KB	8 KB	8 KB	0 KB


Что много строк:
name	rows	reserved	data	index_size	unused
tt_u	208        	16 KB	8 KB	8 KB	0 KB
8 май 13, 18:28    [14275345]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
Гость333
Member

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

Это значит, что все ваши "много строк" поместились на одну 8-килобайтную страницу данных. 8 кб — это минимальный блок, выделяемый SQL Server'ом для хранения данных.
8 май 13, 18:35    [14275380]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
stavelot
Member

Откуда:
Сообщений: 358
Гость333,

Да, я знаю об этом, поэтому мне этот метод и не подходит
8 май 13, 18:38    [14275396]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
stavelot
Что много строк:
А если в 100 раз больше?
8 май 13, 18:38    [14275397]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
stavelot
Гость333,

Да, я знаю об этом, поэтому мне этот метод и не подходит
Тогда отвечайте на вопрос "что тогда в вашем понимании "размер данных"?"
8 май 13, 18:39    [14275400]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
stavelot
Гость333,

Да, я знаю об этом, поэтому мне этот метод и не подходит
а мой метод подходит?
8 май 13, 19:02    [14275505]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
stavelot
Гость333,

Да, я знаю об этом, поэтому мне этот метод и не подходит
ну тогда умножайте еще на процент заполненности страниц.
10 май 13, 19:04    [14279795]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
stavelot
Member

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

Да, я знаю об этом, поэтому мне этот метод и не подходит
Тогда отвечайте на вопрос "что тогда в вашем понимании "размер данных"?"


Если данные из таблицы выгрузить в файл и затем посмотреть размер файла, это и будет физический размер данных
15 май 13, 19:17    [14301608]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
stavelot
Member

Откуда:
Сообщений: 358
Mind
stavelot
Гость333,

Да, я знаю об этом, поэтому мне этот метод и не подходит
ну тогда умножайте еще на процент заполненности страниц.


Может подскажите как посмотреть процент заполненности конкретной страницы?
15 май 13, 19:20    [14301624]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
Гость333
Member

Откуда:
Сообщений: 3683
stavelot
Если данные из таблицы выгрузить в файл и затем посмотреть размер файла, это и будет физический размер данных

Вот оно как. А какой формат файла должен быть? Бинарный? Текстовый? XML? В виде последовательности "insert into Tab values ..."?
15 май 13, 19:21    [14301630]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
stavelot
Гавриленко Сергей Алексеевич
пропущено...
Тогда отвечайте на вопрос "что тогда в вашем понимании "размер данных"?"


Если данные из таблицы выгрузить в файл и затем посмотреть размер файла, это и будет физический размер данных
А ничо, что формат хранения данных в файле скорее всего не имеет никакого отношения к формату хранения данных на сервере?
15 май 13, 19:22    [14301633]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
stavelot
Mind
пропущено...
ну тогда умножайте еще на процент заполненности страниц.


Может подскажите как посмотреть процент заполненности конкретной страницы?
Средний можно через sys.dm_db_index_physical_stats.
15 май 13, 19:23    [14301638]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
gang
Member

Откуда:
Сообщений: 1394
Гавриленко Сергей Алексеевич
stavelot
пропущено...


Может подскажите как посмотреть процент заполненности конкретной страницы?
Средний можно через sys.dm_db_index_physical_stats.

Вопрос только накой эта ловля блох?
16 май 13, 11:30    [14304128]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
Declare @TableName sysname,
@Columns NVarChar(max),
@SQL NVarChar(max)

set @TableName=N'Kladr'

Set @Columns=''

Select @Columns=@Columns+'IsNull(DataLength(['+Column_Name+']),0)+'
from INFORMATION_SCHEMA.Columns
where Table_Name=@TableName

set @Columns=Left(@Columns,len(@Columns)-1)
print @SQL

set @SQL='Select sum('+@Columns+') from '+@TableName

exec (@SQL)


Ну как то так, думаю можно, объем чисто данных вроде должен получится
16 май 13, 12:08    [14304504]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
P.S.
Ну если выгрузите в файл, то цифры думаю не пойдут.
Там по идее будут еще разделители строк как минимум
16 май 13, 12:11    [14304527]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать размер данных в таблице  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
Да и с Бинарными данными будет что попало
16 май 13, 12:12    [14304534]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить