SQL Server のファイル・グループ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>SQL Server]]
* 目次 [#hae0f628]
#contents
*概要 [#wd15b07e]
「ファイル グループ」(Oracleでは「表領域」と呼ぶ)を作成...
「ファイル グループ」毎にファイルの物理的な配置位置を選択...
-構成
--「データ ファイル」を、
---1つの「プライマリ データ ファイル」と
---複数の「セカンダリ ファイル」に
>分割することができる。
--また、「ファイル グループ」を作成し、~
「ファイル グループ」毎にファイルの配置位置を選択すること...
---デフォルトで「プライマリ ファイル グループ」が存在する。
---これに「ユーザ定義ファイル グループ」を追加することで、~
複数のパスに「データ ファイル(テーブル、インデックス)」...
-効果
--簡易[[RAID]](ストライピングに相当)
--また、部分的なバックアップ・リストア、段階的なリストア...
*「ファイル グループ」による性能の向上 [#xdd38c8c]
SQL Server 2000では、ファイル グループを使用することでマ...
-「[[簡易ストライピング>#le542327]]」と、
-「[[並列クエリ>#z5226928]]」が
サポートされていたが、
SQL Server 2005から、より高度な機能として
-「[[段階的リストア>SQL Server のバックアップ#w226d4d6]]」
-「[[パーティション分割>SQL Server パーティション分割]]」
がサポートされた。
これらの機能も、内部的には「ファイル グループ」のメカニズ...
**簡易ストライピング [#le542327]
「ファイル グループ」を使用して、「データ ファイル」、「...
この場合、クエリは複数ディスクにわたって展開されるため、...
#ref(Filegroup.png,left,nowrap,SQL Server のファイルの配置)
※ RAID0のデバイスに1つのファイルを作成した場合と同じ効...
-SQL Server 2000 チューニング全工程(2):~
動的ディスク管理でのチューニングポイント (3/3) - @IT~
http://www.atmarkit.co.jp/ait/articles/0409/25/news011_3....
***データ ファイルの充填 [#ue55a340]
-テーブルにデータを追加する場合、
--「ファイル グループ」内の最初のファイルが一杯になるまで...
--「ファイル グループ」内のすべてのファイルを対象に、~
空き領域に比例したエクステントを割り当て、そこに、データ...
-例えば、
--「ファイル グループ」が、「ファイル1」と「ファイル2」...
--「ファイル1」の空き領域が100 MBで、「ファイル2」の空...
--「ファイル1」のエクステント1つと「ファイル2」のエク...
--これにより、「ファイル1」と「ファイル2」は、ほぼ同時...
***データ ファイルの拡張 [#z6f890a5]
データベースが自動拡張されるように設定されている場合、~
「ファイル グループ」内のすべてのファイルが一杯になると、~
ファイルが1つずつラウンドロビン方式で自動拡張される。
**並列クエリ [#z5226928]
-ファイル・グループ(ファイル)毎にI/Oスレッドを起動、
-これによって、
--I/Oスレッドを増大させることによって~
初回検索時の大幅な性能向上が期待できるが、これは、基本的に
---適切に設計されたOLTP向けの性能向上を期待するものではな...
---I/Oネックにならない様にファイル・グループやRAIDでI/O性...
-なお、バックアップ・リストアについては、~
バックアップ デバイス数と同数のスレッドが使用される。
#ref(ParallelQuery.png,left,nowrap,並列クエリ)
***次数 [#x582f183]
並列クエリの次数に影響を与えるオプション・"しきい値"は、...
なお、複数のユーザが、クエリを実行する場合、~
プランの次数は、その処理開始時点の各CPUの処理量を考慮する。
***参考 [#h783e84d]
-並列クエリの例~
https://msdn.microsoft.com/ja-jp/library/ms175097.aspx
-並列処理の次数~
https://msdn.microsoft.com/ja-jp/library/ms188611.aspx
*構成要素 [#oaef86ea]
**「ファイル グループ」の構成要素 [#t91bbcd1]
「ファイル グループ」には、
-「プライマリ ファイル グループ」
-「ユーザ定義ファイル グループ」がある。
***「プライマリ ファイル グループ」 [#j90b188c]
-「プライマリ ファイル グループ」には、
--「プライマリ データ ファイル」と、
--他の「ファイルグループ」に割り当てられていない「プライ...
>が含まれる。
-システムDBの テーブル用のすべてのファイルは「プライマリ ...
***「ユーザ定義ファイル グループ」 [#w8c86f01]
「ユーザ定義ファイル グループ」は、「CREATE DATABASE」ま...
**「データ ファイル」の構成要素 [#tbc98bab]
***「テーブル」・「インデックス」 [#a092a68d]
「テーブル」・「インデックス」は「データ ファイル」に含ま...
***「プライマリ データ ファイル」 [#jdccafad]
-「プライマリ データ ファイル」は「データ ファイル」の開...
-1 つのDBに 1 つ「プライマリ データ ファイル」が必要。
-拡張子は「mdf」が推奨される。
***「セカンダリ データ ファイル」 [#ae355fe9]
-「セカンダリ データ ファイル」は「プライマリ データ ファ...
-データベースには、
--「セカンダリ データ ファイル」がない場合と、
--複数の「セカンダリ データ ファイル」がある場合がある。
-拡張子は「ndf」が推奨される。
**「トランザクション ログ ファイル」 [#z8b516b8]
「トランザクション ログ ファイル」は「ファイル グループ」...
-「データ ファイル」と同様に複数のファイルを作成できる。
-「データ ファイル」のような「プライマリ」、「セカンダリ...
-拡張子は「ldf」が推奨される。
*規則と推奨 [#o07b24e5]
**規則 [#k1eb8dfd]
-1つの「ファイル グループ」を複数のデータベースで使用で...
「ファイル グループ」は、1つの「データベース スキーマ」...
-1つの「データ ファイル」は1つの「ファイル グループ」に...
「データ ファイル」は、1つの「ファイル グループ」内に定...
-「トランザクション ログ ファイル」を「ファイル グループ...
「トランザクション ログ ファイル」は「データ ファイル」と...
**推奨 [#fed77f19]
***作成のポイント [#ud2d855b]
大部分のデータベースは、通常、
-1つの「データ ファイル」と
-1つの「トランザクション ログ ファイル」で
正常に機能するが、必要に応じて、
以下の「ファイル グループ」の導入を検討する。
-「データ ファイル」を複数のファイルに分割する場合は、
--プライマリの「ファイル グループ」の他に、
--追加ファイル用のセカンダリの「ファイル グループ」を作成...
>これを既定の「ファイル グループ」に設定する。
-これにより、
-*プライマリの「ファイル グループ」にはシステム オブジェ...
ストアド プロシージャ、拡張ストアド プロシージャ、関数、...
-セカンダリの「ファイル グループ」にはユーザ オブジェクト...
テーブル、インデックス、列、別名データ型、.NET Framework ...
この分割方法は、「[[段階的リストア>SQL Server のバックア...
***性能向上のポイント [#a947c158]
-特定の物理ディスク上にデータ ファイル(テーブル・インデ...
これにより、負荷の高い特定のテーブルをディスクI/O性能の高...
-「トランザクション ログ ファイル」は、ディスクI/O性能を...
「データ ファイル」と同じ物理ディスク上に配置しない(分散...
-「ファイル グループ」により、物理ディスクにファイルを分...
簡易ストライピングによるディスクI/O性能の向上が期待できる。
--ただし、RAIDコントローラを用いてストライピング可能であ...
--アクセス頻度が高いテーブルと、そのテーブルに属する「非...
別の「ファイル グループ」にマップし、ディスクI/Oを分散す...
--同じ結合クエリで使用する各テーブルは~
別の「ファイル グループ」にマップすることにより、ディスク...
***保守性の向上 [#d6119cb4]
大きな記憶域を占有する可能性のあるオブジェクトは、~
別々の「ファイル グループ」に配置することで「[[段階的リス...
柔軟なデータのバックアップ・リストアなど、メンテナンス操...
*例 [#nea2a80d]
次の例では、
DBを作成(CREATE DATABASEステートメント)する際に
-「プライマリ ファイル グループ」と
-「ユーザ定義ファイル グループ」を
作成し、
-1つの「プライマリ データ ファイル」を「プライマリ ファ...
-2つの「セカンダリ データ ファイル」を「ユーザ定義ファイ...
に設定、
-「ユーザ定義ファイル グループ」をデフォルトの「ファイル ...
-その後、「ユーザ定義ファイル グループ」を指定してテーブ...
USE master
GO
-- Create the database with the default data filegroup a...
-- Specify the growth increment and the max size for the...
CREATE DATABASE MyDB -- DBの「プライマリ データ ファイル...
ON PRIMARY
( NAME='MyDB_Primary',
FILE NAME=
'c:\Program Files\Microsoft SQL Server\MSSQL\data\...
SIZE=4,
MAXSIZE=10,
FILEGROWTH=1),
FILEGROUP MyDB_FG1 -- DBの「セカンダリ データ ファイル」...
( NAME = 'MyDB_FG1_Dat1',
FILE NAME =
'c:\Program Files\Microsoft SQL Server\MSSQL\data\...
SIZE = 1MB,
MAXSIZE=10,
FILEGROWTH=1),
( NAME = 'MyDB_FG1_Dat2',
FILE NAME =
'c:\Program Files\Microsoft SQL Server\MSSQL\data\...
SIZE = 1MB,
MAXSIZE=10,
FILEGROWTH=1)
LOG ON -- DBの「トランザクション ログ ファイル」を「任意...
( NAME='MyDB_log',
FILE NAME =
'c:\Program Files\Microsoft SQL Server\MSSQL\data\...
SIZE=1,
MAXSIZE=10,
FILEGROWTH=1)
GO
ALTER DATABASE MyDB -- 「ユーザ定義ファイル グループ」を...
MODIFY FILEGROUP MyDB_FG1 DEFAULT
GO
-- Create a table in the user-defined filegroup.
-- このテーブルは、「ユーザ定義ファイル グループ」に作成...
USE MyDB
CREATE TABLE MyTable
( cola int PRIMARY KEY,
colb char(8) )
ON MyDB_FG1
GO
**参考 [#qd40d160]
-MSDN - Microsoft
--データベース ファイルとファイル グループ~
https://msdn.microsoft.com/ja-jp/library/ms189563.aspx
--ファイルとファイル グループのアーキテクチャ~
https://technet.microsoft.com/ja-jp/library/ms179316.aspx
-[[SQL Server のデータベースの構成について改めて勉強 その...
----
Tags: [[:データアクセス]], [[:SQL Server]]
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>SQL Server]]
* 目次 [#hae0f628]
#contents
*概要 [#wd15b07e]
「ファイル グループ」(Oracleでは「表領域」と呼ぶ)を作成...
「ファイル グループ」毎にファイルの物理的な配置位置を選択...
-構成
--「データ ファイル」を、
---1つの「プライマリ データ ファイル」と
---複数の「セカンダリ ファイル」に
>分割することができる。
--また、「ファイル グループ」を作成し、~
「ファイル グループ」毎にファイルの配置位置を選択すること...
---デフォルトで「プライマリ ファイル グループ」が存在する。
---これに「ユーザ定義ファイル グループ」を追加することで、~
複数のパスに「データ ファイル(テーブル、インデックス)」...
-効果
--簡易[[RAID]](ストライピングに相当)
--また、部分的なバックアップ・リストア、段階的なリストア...
*「ファイル グループ」による性能の向上 [#xdd38c8c]
SQL Server 2000では、ファイル グループを使用することでマ...
-「[[簡易ストライピング>#le542327]]」と、
-「[[並列クエリ>#z5226928]]」が
サポートされていたが、
SQL Server 2005から、より高度な機能として
-「[[段階的リストア>SQL Server のバックアップ#w226d4d6]]」
-「[[パーティション分割>SQL Server パーティション分割]]」
がサポートされた。
これらの機能も、内部的には「ファイル グループ」のメカニズ...
**簡易ストライピング [#le542327]
「ファイル グループ」を使用して、「データ ファイル」、「...
この場合、クエリは複数ディスクにわたって展開されるため、...
#ref(Filegroup.png,left,nowrap,SQL Server のファイルの配置)
※ RAID0のデバイスに1つのファイルを作成した場合と同じ効...
-SQL Server 2000 チューニング全工程(2):~
動的ディスク管理でのチューニングポイント (3/3) - @IT~
http://www.atmarkit.co.jp/ait/articles/0409/25/news011_3....
***データ ファイルの充填 [#ue55a340]
-テーブルにデータを追加する場合、
--「ファイル グループ」内の最初のファイルが一杯になるまで...
--「ファイル グループ」内のすべてのファイルを対象に、~
空き領域に比例したエクステントを割り当て、そこに、データ...
-例えば、
--「ファイル グループ」が、「ファイル1」と「ファイル2」...
--「ファイル1」の空き領域が100 MBで、「ファイル2」の空...
--「ファイル1」のエクステント1つと「ファイル2」のエク...
--これにより、「ファイル1」と「ファイル2」は、ほぼ同時...
***データ ファイルの拡張 [#z6f890a5]
データベースが自動拡張されるように設定されている場合、~
「ファイル グループ」内のすべてのファイルが一杯になると、~
ファイルが1つずつラウンドロビン方式で自動拡張される。
**並列クエリ [#z5226928]
-ファイル・グループ(ファイル)毎にI/Oスレッドを起動、
-これによって、
--I/Oスレッドを増大させることによって~
初回検索時の大幅な性能向上が期待できるが、これは、基本的に
---適切に設計されたOLTP向けの性能向上を期待するものではな...
---I/Oネックにならない様にファイル・グループやRAIDでI/O性...
-なお、バックアップ・リストアについては、~
バックアップ デバイス数と同数のスレッドが使用される。
#ref(ParallelQuery.png,left,nowrap,並列クエリ)
***次数 [#x582f183]
並列クエリの次数に影響を与えるオプション・"しきい値"は、...
なお、複数のユーザが、クエリを実行する場合、~
プランの次数は、その処理開始時点の各CPUの処理量を考慮する。
***参考 [#h783e84d]
-並列クエリの例~
https://msdn.microsoft.com/ja-jp/library/ms175097.aspx
-並列処理の次数~
https://msdn.microsoft.com/ja-jp/library/ms188611.aspx
*構成要素 [#oaef86ea]
**「ファイル グループ」の構成要素 [#t91bbcd1]
「ファイル グループ」には、
-「プライマリ ファイル グループ」
-「ユーザ定義ファイル グループ」がある。
***「プライマリ ファイル グループ」 [#j90b188c]
-「プライマリ ファイル グループ」には、
--「プライマリ データ ファイル」と、
--他の「ファイルグループ」に割り当てられていない「プライ...
>が含まれる。
-システムDBの テーブル用のすべてのファイルは「プライマリ ...
***「ユーザ定義ファイル グループ」 [#w8c86f01]
「ユーザ定義ファイル グループ」は、「CREATE DATABASE」ま...
**「データ ファイル」の構成要素 [#tbc98bab]
***「テーブル」・「インデックス」 [#a092a68d]
「テーブル」・「インデックス」は「データ ファイル」に含ま...
***「プライマリ データ ファイル」 [#jdccafad]
-「プライマリ データ ファイル」は「データ ファイル」の開...
-1 つのDBに 1 つ「プライマリ データ ファイル」が必要。
-拡張子は「mdf」が推奨される。
***「セカンダリ データ ファイル」 [#ae355fe9]
-「セカンダリ データ ファイル」は「プライマリ データ ファ...
-データベースには、
--「セカンダリ データ ファイル」がない場合と、
--複数の「セカンダリ データ ファイル」がある場合がある。
-拡張子は「ndf」が推奨される。
**「トランザクション ログ ファイル」 [#z8b516b8]
「トランザクション ログ ファイル」は「ファイル グループ」...
-「データ ファイル」と同様に複数のファイルを作成できる。
-「データ ファイル」のような「プライマリ」、「セカンダリ...
-拡張子は「ldf」が推奨される。
*規則と推奨 [#o07b24e5]
**規則 [#k1eb8dfd]
-1つの「ファイル グループ」を複数のデータベースで使用で...
「ファイル グループ」は、1つの「データベース スキーマ」...
-1つの「データ ファイル」は1つの「ファイル グループ」に...
「データ ファイル」は、1つの「ファイル グループ」内に定...
-「トランザクション ログ ファイル」を「ファイル グループ...
「トランザクション ログ ファイル」は「データ ファイル」と...
**推奨 [#fed77f19]
***作成のポイント [#ud2d855b]
大部分のデータベースは、通常、
-1つの「データ ファイル」と
-1つの「トランザクション ログ ファイル」で
正常に機能するが、必要に応じて、
以下の「ファイル グループ」の導入を検討する。
-「データ ファイル」を複数のファイルに分割する場合は、
--プライマリの「ファイル グループ」の他に、
--追加ファイル用のセカンダリの「ファイル グループ」を作成...
>これを既定の「ファイル グループ」に設定する。
-これにより、
-*プライマリの「ファイル グループ」にはシステム オブジェ...
ストアド プロシージャ、拡張ストアド プロシージャ、関数、...
-セカンダリの「ファイル グループ」にはユーザ オブジェクト...
テーブル、インデックス、列、別名データ型、.NET Framework ...
この分割方法は、「[[段階的リストア>SQL Server のバックア...
***性能向上のポイント [#a947c158]
-特定の物理ディスク上にデータ ファイル(テーブル・インデ...
これにより、負荷の高い特定のテーブルをディスクI/O性能の高...
-「トランザクション ログ ファイル」は、ディスクI/O性能を...
「データ ファイル」と同じ物理ディスク上に配置しない(分散...
-「ファイル グループ」により、物理ディスクにファイルを分...
簡易ストライピングによるディスクI/O性能の向上が期待できる。
--ただし、RAIDコントローラを用いてストライピング可能であ...
--アクセス頻度が高いテーブルと、そのテーブルに属する「非...
別の「ファイル グループ」にマップし、ディスクI/Oを分散す...
--同じ結合クエリで使用する各テーブルは~
別の「ファイル グループ」にマップすることにより、ディスク...
***保守性の向上 [#d6119cb4]
大きな記憶域を占有する可能性のあるオブジェクトは、~
別々の「ファイル グループ」に配置することで「[[段階的リス...
柔軟なデータのバックアップ・リストアなど、メンテナンス操...
*例 [#nea2a80d]
次の例では、
DBを作成(CREATE DATABASEステートメント)する際に
-「プライマリ ファイル グループ」と
-「ユーザ定義ファイル グループ」を
作成し、
-1つの「プライマリ データ ファイル」を「プライマリ ファ...
-2つの「セカンダリ データ ファイル」を「ユーザ定義ファイ...
に設定、
-「ユーザ定義ファイル グループ」をデフォルトの「ファイル ...
-その後、「ユーザ定義ファイル グループ」を指定してテーブ...
USE master
GO
-- Create the database with the default data filegroup a...
-- Specify the growth increment and the max size for the...
CREATE DATABASE MyDB -- DBの「プライマリ データ ファイル...
ON PRIMARY
( NAME='MyDB_Primary',
FILE NAME=
'c:\Program Files\Microsoft SQL Server\MSSQL\data\...
SIZE=4,
MAXSIZE=10,
FILEGROWTH=1),
FILEGROUP MyDB_FG1 -- DBの「セカンダリ データ ファイル」...
( NAME = 'MyDB_FG1_Dat1',
FILE NAME =
'c:\Program Files\Microsoft SQL Server\MSSQL\data\...
SIZE = 1MB,
MAXSIZE=10,
FILEGROWTH=1),
( NAME = 'MyDB_FG1_Dat2',
FILE NAME =
'c:\Program Files\Microsoft SQL Server\MSSQL\data\...
SIZE = 1MB,
MAXSIZE=10,
FILEGROWTH=1)
LOG ON -- DBの「トランザクション ログ ファイル」を「任意...
( NAME='MyDB_log',
FILE NAME =
'c:\Program Files\Microsoft SQL Server\MSSQL\data\...
SIZE=1,
MAXSIZE=10,
FILEGROWTH=1)
GO
ALTER DATABASE MyDB -- 「ユーザ定義ファイル グループ」を...
MODIFY FILEGROUP MyDB_FG1 DEFAULT
GO
-- Create a table in the user-defined filegroup.
-- このテーブルは、「ユーザ定義ファイル グループ」に作成...
USE MyDB
CREATE TABLE MyTable
( cola int PRIMARY KEY,
colb char(8) )
ON MyDB_FG1
GO
**参考 [#qd40d160]
-MSDN - Microsoft
--データベース ファイルとファイル グループ~
https://msdn.microsoft.com/ja-jp/library/ms189563.aspx
--ファイルとファイル グループのアーキテクチャ~
https://technet.microsoft.com/ja-jp/library/ms179316.aspx
-[[SQL Server のデータベースの構成について改めて勉強 その...
----
Tags: [[:データアクセス]], [[:SQL Server]]
ページ名: