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

Откуда:
Сообщений: 14
Есть таблица

CREATE TABLE [dbo].[tb_Image](
[ID] [int] IDENTITY(1,1) NOT NULL,
[GUID] [uniqueidentifier] NOT NULL,
[Image] [image] NOT NULL,
[CameraID] [int] NOT NULL,
[DateTime] [datetime] NOT NULL CONSTRAINT [DF_tb_Image_DateTime] DEFAULT (getdate()),
[CarNumber] [varchar](32) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

При вставке строки с блобом размером в 32кб размер таблицы увеличивается на 1Мб.

Соответственно, имея 5527 строк, таблица весит 3801,883 MB. В чем причина? Есть подозрение, что нужно блобы вынесит из primary. Поможет ли это и почему?
5 окт 09, 16:11    [7743683]     Ответить | Цитировать Сообщить модератору
 Re: При вставке строки со столбцом image размер базы изменяется неадекватно  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31173
tangueros
Есть таблица

CREATE TABLE [dbo].[tb_Image](
[ID] [int] IDENTITY(1,1) NOT NULL,
[GUID] [uniqueidentifier] NOT NULL,
[Image] [image] NOT NULL,
[CameraID] [int] NOT NULL,
[DateTime] [datetime] NOT NULL CONSTRAINT [DF_tb_Image_DateTime] DEFAULT (getdate()),
[CarNumber] [varchar](32) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

При вставке строки с блобом размером в 32кб размер таблицы увеличивается на 1Мб.

Соответственно, имея 5527 строк, таблица весит 3801,883 MB. В чем причина? Есть подозрение, что нужно блобы вынесит из primary. Поможет ли это и почему?


Прямо так и на мегабайт?
CREATE TABLE [dbo].[tb_Image](
[ID] [int] IDENTITY(1,1) NOT NULL,
[GUID] [uniqueidentifier] NOT NULL,
[Image] [image] NOT NULL,
[CameraID] [int] NOT NULL,
[DateTime] [datetime] NOT NULL CONSTRAINT [DF_tb_Image_DateTime] DEFAULT (getdate()),
[CarNumber] [varchar](32) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

declare @i varbinary(max)
select @i = convert(varbinary(max), REPLICATE('1', 8000)) + convert(varbinary(max), REPLICATE('1', 8000)) + convert(varbinary(max), REPLICATE('1', 8000)) + convert(varbinary(max), REPLICATE('1', 8000))
select DATALENGTH(@i)
insert [dbo].[tb_Image]([GUID],[Image],[CameraID])
select top 100 NEWID(), @i, 1
from sysobjects

exec sp_spaceused '[tb_Image]'

drop table [dbo].[tb_Image]

name		rows	reserved	data		index_size	unused
tb_Image	100      	3288 KB		3232 KB		8 KB		48 KB
Что я сделал не так?
5 окт 09, 16:31    [7743832]     Ответить | Цитировать Сообщить модератору
 Re: При вставке строки со столбцом image размер базы изменяется неадекватно  [new]
Glory
Member

Откуда:
Сообщений: 104760
tangueros

Соответственно, имея 5527 строк, таблица весит 3801,883 MB. В чем причина? Есть подозрение, что нужно блобы вынесит из primary. Поможет ли это и почему?

Где и как вы измеряете размер таблицы ?
5 окт 09, 16:34    [7743853]     Ответить | Цитировать Сообщить модератору
 Re: При вставке строки со столбцом image размер базы изменяется неадекватно  [new]
tangueros
Member

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

все так вы делаете. косяк нашелся: при натравливании функции DATALENGTH([Image]) выяснилось что размер фоток либо 1216566 либо 304182 байт
5 окт 09, 17:00    [7744099]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить