0

実稼働環境でのDBサイズを確認するために、テーブルにほぼ同じデータ(主キーを除く)の150万行を入力しました。現在、261MBを示しています...

さて、これを信頼できるかどうか、またはデータが他のすべての列でほぼ類似しているため、SQLサーバーはサイズを圧縮しました。すなわち。各行の値が異なる場合、サイズは異なりますか...

さらに..列でさえnull値はDBのサイズに影響しますか?

御時間ありがとうございます...

編集:これが私のスキーマです...そして私もいくつかのインデックスを作成しました...

    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]

お役に立てれば

4

2 に答える 2

3

SQL Server2005および2008Expressは、データを圧縮しません。SQL Server 2008はページ圧縮を使用できますが、EnterpriseEditionでのみ使用できます。NULL列は行の1ビットを占めます。

データの説明から、通常の正規化の問題のように聞こえます。繰り返し値をルックアップテーブルに分割し、個別の組み合わせのみを保存し、ルックアップテーブルに結合します。これにより、スキーマ設計によってデータが保存され、すべてのDBプラットフォーム、すべてのバージョン、すべてのSKUで機能します。

于 2010-02-19T20:14:10.043 に答える
1

ApprovedByなど(varchar)を他のテーブルへのルックアップに置き換えます

日時が必要ですか?

40億行以上になると思いますか?なぜ最初の3列はbigintなのですか?

ここに数バイト保存すると、大きな違いがあります。ページ密度が高い(たとえば、8kページあたりの行数が多い)=スペースが少ない+インデックスが小さい。

15億行あるときに圧縮します。

于 2010-02-19T20:21:26.753 に答える