Соответствует ли размер базы данных Sql Server Compress аналогичным данным? - PullRequest
0 голосов
/ 19 февраля 2010

Просто чтобы узнать, какой у меня размер БД в производственной среде, я просто заполнил свои таблицы 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]

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

Ответы [ 2 ]

3 голосов
/ 19 февраля 2010

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

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

1 голос
/ 19 февраля 2010

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

Вам нужна дата / время?

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

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

Сжатие при наличии 1,5 миллиардов строк.

...