2011-01-11 13 views
19

SQL Server 2008のページに出くわしましたが、多少混乱しています。私は現在、MCTS Self-Paced Training Kit (Exam 70-433): Microsoft SQL Server 2008-Database Developmentを読んでいます。著者は概念を議論していますが、限られた方法で話しています。SQL Serverのページとは何ですか?心配する必要はありますか?

MSDNから "Understanding Pages and Extents"私は本当に役に立たない答えを得る。 Webページには、ページのサイズ(8kb)、ページに行が格納される方法、および行がページに収まらない場合に列が自動的に(SQL Serverによって)移動される方法が説明されています。

しかし、私はページレベルがERダイアグラム、テーブル、データタイプのデータベースを設計する際に注意すべきものなのだろうか?または、SQL Serverがページを自動的に、そして可能な限り最良の方法で処理することに頼るだけですか?

alt text

リスニングのためにありがとう!

+1

MSドキュメントはほとんどがBSです。あなたは一人じゃない。 –

答えて

30

はい!ページは、SQL Serverのストレージの最も基本的な要素です。

ページ上の8192バイトのうち、 8060はユーザーとして利用できます。データ行をページにうまく合わせることができれば、ストレージの使用量は大幅に減ります。

たとえば、 4100バイトの長さの場合、1つの行だけがページに格納されます(3960バイトのページの残りは無駄なスペースです)。重要な点は、それらのページはディスクだけでなくSQL Serverのメインメモリにも関連していることです。>ページ上に有用な情報を保持できない大きな領域を避けようとします。

行を4000バイトに減らすことができれば、突然2つの行をページに格納することができ、無駄なスペース(ページあたり60バイトまで)のオーバーヘッドを大幅に削減できます。

+1

Thanx Marc!それはちょうど私が知る必要があったものです。したがって、データ行が大きくなればなるほど、SQL Server上で十分に使用される領域を確保するために、含まれるバイト数を知ることが重要になります。素晴らしい答え! –

+0

+1マーク、そしてどうやって無駄なブロブを避けることができますか? –

+0

@marc_sあなたは言った:_あなたは大規模な無駄な空間の塊を避けようとしたい。 –

7

パフォーマンスの問題が発生するまで、8 KBのページ構造を心配する必要はありません。しかし、あなたが8 KBのページの内部を知りたいと思っている場合には、ここにyoutubeのビデオがあります。http://www.youtube.com/watch?v=He8MRttysmY 8 KBページの様子を示しています。

enter image description here

1.Pageヘッダ店ページの種類、次、前のページのようなページの情報はインデックスページ、空き領域だ場合は、ページ内など

ページヘッダデータ2.After行セクションが続きます。これは、データが実際に格納される場所です。

3.ローオフセット情報は、ページの最後、つまりデータ行セクションの後に格納されます。すべてのデータ行に行オフセットがあり、行オフセットのサイズは1行につき2バイトです。行オフセットは、行がページの先頭からどのくらい離れているかに関する情報を格納します。

簡単な言葉で言えば、完全なページ式は次のようになります。オフセット

ページ(8 KB/8192バイト)=ページヘッダ(96バイト)+実際のデータ (どのようなバイト)+の行(行当たり2バイト)。

+0

ページ関連のパフォーマンスの問題について、いつ気になるでしょうか?いくつかの例を教えていただけますか? –

+2

-1 b/cの「パフォーマンス上の問題が発生するまで8 KBのページ構造について心配する必要はありません。私は現在、1億7300万行を含むテーブルを使用して本番SQLサーバを修正しようとしています。パフォーマンス(したがってページサイズ)は設計時に考慮する必要があります。 – ray

+0

この回答は参考になりますが、問題が発生するまでページサイズを無視するのは賢明ではないと思います。 –

関連する問題