SQL ServerのON [PRIMARY]句って何を意味してるの?ファイルグループの概念も解説

こんばんは。最近は仕事で必要になり、ちょこちょことSQL Serverの勉強をしております。今日は、ON [PRIMARY]句について学びがあったのでまとめておきます。

疑問

SQL ServerでCREATE TABLEする場合などにON [PRMARY]句が添えられることがあります。

これは何のための構文なのでしょうか。

CREATE TABLE [dbo].[TableName](
    [columnA] [int] NULL,
    [columnB] [nvarchar](50) NULL,
    ・・・
) ON [PRIMARY]

回答

意外にも日本語で整理された記事をあまりみつけられなかったのですが、こちらのStack Overflowで答えを見つけることができました。

https://stackoverflow.com/questions/2798213/what-does-on-primary-mean

  • SQL Serverでデータベースを作成する際、複数のファイルグループを構成することができる
  • それぞれのファイルグループには名前がついていて、”PRIMARY”は規定の名前。
  • なので、ON [PRIMARY]がついている場合は、SQL Serverで規定で作成される”PRIMARY”という名前のファイルグループにテーブルなどが作成されることになる

というようなことが書いておりました。

確かに、SQL ServerのCREATE TABLEの引数一覧に、説明がありますね。

ON { partition_schemefilegroup“default” }

テーブルが格納されるパーティション構成またはファイル グループを指定します。 partition_scheme を指定すると、テーブルはパーティション テーブルとなり、各パーティションは partition_scheme で指定した 1 つ以上のファイル グループに格納されます。 filegroup を指定すると、テーブルは指定されたファイル グループに格納されます。 ファイル グループがデータベース内に存在している必要があります。 “default” を指定するか、ON をまったく指定しないと、テーブルは既定のファイル グループに格納されます。 CREATE TABLE で指定したテーブルの格納方法を後から変更することはできません。

https://docs.microsoft.com/ja-jp/sql/t-sql/statements/create-table-transact-sql?view=sql-server-ver15#arguments

さて・・・「ファイルグループ」ってなんだ・・?という疑問にぶちあたりましたのでちょっと調べてみました。

こちらに説明がありました。

データベース ファイルとファイル グループ

https://docs.microsoft.com/ja-jp/sql/relational-databases/databases/database-files-and-filegroups?view=sql-server-ver15

データベースの情報はデータベースファイルという実体の中に格納されています。

データベースファイルには、次の3種類があります。

  • プライマリ:データベースの起動情報や、データとオブジェクトなどが含まれる。
  • セカンダリ:省略可能なユーザ定義データファイル。複数のセカンダリデータベースファイルをそれぞれ異なるディスクに配置することでデータをディスク間で分散できる。
  • トランザクションログ:データベースの復旧に使用するトランザクションのログ。

ファイルグループとは、これをグループ化したもので、このファイルグループを指定してCREATE TABLEなどのT-SQLを投げると、ファイルグループ内のデータファイルにオブジェクトが作成されるので、冗長化を実現できるものらしい。

なるほど、勉強になりました!同じ疑問にあたっていた方の参考になりましたら幸いです。

おしまい

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。