Сжимает ли Sql Server размер базы данных для аналогичных данных

Просто чтобы узнать, какой у меня будет размер БД в производственной среде, я просто заполнил свои таблицы 1,5 миллионами строк почти одинаковых данных (кроме первичного ключа). В настоящее время он показывает 261 МБ...

Теперь, могу ли я положиться на это, или, поскольку данные почти одинаковы во всех других столбцах, SQL-сервер сжал размер. т.е. Будет ли размер отличаться, если значения в каждой строке разные...

Далее. Будут ли даже столбцы нулевыми значениями влиять на размер БД?

Спасибо за ваше время...

Редактировать: вот моя схема... И я тоже сделал несколько индексов...

    CREATE TABLE [dbo].[Trn_Tickets](
        [ObjectID] [bigint] IDENTITY(1,1) NOT NULL,
        [TicketSeqNo] [bigint] NULL,
        [BookSeqNo] [bigint] NULL,
        [MatchID] [int] NULL,
        [TicketNumber] [varchar](20) NULL,
        [BarCodeNumber] [varchar](20) NULL,
        [GateNo] [varchar](5) NULL,
        [EntryFrom] [varchar](10) NULL,
        [MRP] [decimal](9, 2) NULL,
        [Commission] [decimal](9, 2) NULL,
        [Discount] [decimal](9, 2) NULL,
        [CashPrice] [decimal](9, 2) NULL,
        [CashReceived] [decimal](9, 2) NULL,
        [BalanceDue] [decimal](9, 2) NULL,
        [CollectibleFrom] [char](1) NULL,
        [PlaceOfIssue] [varchar](20) NULL,
        [DateOfIssue] [datetime] NULL,
        [PlaceOfSale] [varchar](20) NULL,
        [AgentID] [int] NULL,
        [BuyerID] [int] NULL,
        [SaleTypeID] [tinyint] NULL,
        [SaleDate] [smalldatetime] NULL,
        [ApprovedBy] [varchar](15) NULL,
        [ApprovedDate] [smalldatetime] NULL,
        [InvoiceStatus] [char](1) NULL,
        [InvoiceRefNo] [varchar](15) NULL,
        [InvoiceDate] [smalldatetime] NULL,
        [BookPosition] [char](2) NULL,
        [TicketStatus] [char](2) NULL,
        [RecordStatus] [char](1) NULL,
        [ClosingStatus] [char](2) NULL,
        [ClosingDate] [datetime] NULL,
        [UpdatedDate] [datetime] NULL,
        [UpdatedUser] [varchar](10) NULL,
     CONSTRAINT [PK_Trn_Tickets] PRIMARY KEY CLUSTERED 
    (
        [ObjectID] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]

Надеюсь это поможет


person The King    schedule 19.02.2010    source источник
comment
Это может показаться проблемой рефатора. Можете ли вы попробовать реорганизовать таблицу, если у вас много столбцов NULL?   -  person Adriaan Stander    schedule 19.02.2010


Ответы (2)


SQL Server 2005 и 2008 Express не будут сжимать ваши данные. SQL Server 2008 может использовать сжатие страниц, но только в Enterprise Edition. Столбцы NULL занимают один бит в строке.

Судя по описанию ваших данных, больше похоже на проблему обычной нормализации. Разделите повторяющиеся значения в таблице поиска, сохраните только отдельные комбинации, присоединитесь к таблице поиска. Это сохранит данные по схеме и будет работать на всех платформах БД, всех версиях, всех SKU.

person Remus Rusanu    schedule 19.02.2010

Замените ApprovedBy и т. д. (varchar) поиском в других таблицах.

Вам нужно свидание?

Ожидаете ли вы более 4 миллиардов строк? Почему первые 3 столбца большие?

Сохраните несколько байтов здесь и там = большая разница. Более высокая плотность страниц (например, больше строк на странице размером 8 КБ) = меньше места + меньшие индексы.

Сжимайте, когда у вас есть 1,5 миллиарда строк.

person gbn    schedule 19.02.2010