SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Azure のデータベースのファイル構成を想像してみる

2 comments

想像してみると書いていますように、取得できた情報から 「こういう感じかな~」 と思ったことを書いています。
あらかじめご了承ください。

SQL Server のデータベースの基本構成は以下のようになります。
# パーティショニングテーブルは除く
image

データベースは

  • データ
  • ログ

で構成され、データは

  • 一つのファイルグループに属し
  • ファイルグループは一つ以上のデータファイルで構成

で構成されます。

ファイルグループは複数のデータファイルで構成することもできますので、
image

ということも可能になります。

本日は SQL Azure ではこの構成がどのようになっているかを想像してみたいと思います。
SQL Azure はこの手のファイル構成を意識しないでよい (任意の構成に変更できない) のですが、気になったので調べてみました。

■SQL Server 2008 R2 で確認してみる


オンプレミスの SQL Server でデータベースのファイル構成を確認する場合は、SSMS でデータベースのプロパティを開くか、
image

以下のクエリで確認することができます。

select * from sys.database_files

image

これらの方法を SQL Azure で試してみます。

SQL Azure のデータベースを右クリックしてもプロパティは表示されません。
image

[sys.database_files] も使用できないのでエラーとなってしまいます。
image

 

■SQL Azure でどう調べるか


さて、SQL Azure でどうやって調べようかと考えたところ、ロックで調べられないかな~とふと思いました。
# ラッチ wait で見るという方法もありますが。

ということで以下のようなクエリを実行してみました。

SET NOCOUNT ON

CREATE TABLE [dbo].[Table_1](
    [Col1] [uniqueidentifier] NOT NULL,
    [Col2] [int] NULL,
    [Col3] [char](4500) NULL,
CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED
([Col1] ASC)
)

BEGIN TRAN
DECLARE @i int = 0
WHILE (@i < 100000)
BEGIN
    INSERT INTO Table_1 VALUES(NEWID(), @i , NEWID())
    SET @i += 1
END

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

BEGIN TRAN
DELETE FROM Table_1

SELECT DISTINCT LEFT(resource_description,PATINDEX(‘%:%’,resource_description) -1)
FROM sys.dm_tran_locks
WHERE resource_type = ‘PAGE’
ORDER BY 1

ROLLBACK TRAN

DROP TABLE [dbo].[Table_1]
SET TRANSACTION ISOLATION LEVEL READ COMMITTED

 

ページのロックについては、[ファイル ID : ページ番号] の形式で resource_description が設定されます。
そのため、[:] の前までを取得するとそのデータベースのファイル構成が取得できることになります。

取得した結果がこちらになります。
image

今回も Web Edition の 1GB のデータベースを使用しているのですが、この環境では [1, 3~11] までの全 10 ファイルで構成がされているようですね。

2 が飛んでいますが通常、ファイル ID 2 はトランザクションログのファイルなので、この辺の構成は SQL Azure でも同じようです。

SQL Server 2008 R2 でデータファイルを 10 ファイルで構成したデータベースに対して同じようなクエリを実行した時の結果がこちらになります。
# レスポンスが出なかったので件数は少なくしています。
image
結果としては同じものが取得できていますね。

SQL Azure の INSERT は単純に 1 ファイルで構成した SQL Server と比較して、早い気がしているのですが、データファイルは最適化されているのかもしれないですね。

Share

Written by Masayuki.Ozawa

6月 9th, 2011 at 12:01 am

Posted in SQL Server,Windows Azure

Tagged with

2 Responses to 'SQL Azure のデータベースのファイル構成を想像してみる'

Subscribe to comments with RSS or TrackBack to 'SQL Azure のデータベースのファイル構成を想像してみる'.

  1. […] SQL Azure のデータベースのファイル構成を想像してみる の派生で、今回はユーザーデータベースではなく tempdb について想像してみたいと思います。 前回に引き続き今回も想像です。 […]

    SQL Azure のデータベースのファイル構成を想像してみる -tempdb 編- « SE の雑記

    9 6月 11 at 22:49

  2. […] 以前投稿した、SQL Azure のデータベースのファイル構成を想像してみる と合わせてみると SQL Azure のデータベースのデータファイルは […]

    SQL Azure のデータベースのファイルグループについて調べてみる « SE の雑記

    20 6月 11 at 20:50

Leave a Reply