※ 特に表記がない限り、SQL Server 2016 以降の情報を記載
- Windows Serverと同等のレベルでLinuxのサポートを実現。ミッションクリティカルでの利用に高い稼働率が必要とされる分野でもLinuxの利用を実現
- ノードとエッジを作成し、複雑な関係データの構築を可能にするグラフデータ処理機能を追加(Azure SQL Databaseにも同様の機能を追加)
- 効率よく自動的に処理を行うためのアダプティブ・クエリ・プロセッシング機能を追加
- データベース内分析処理にPythonまたはRを使った並列処理機能を追加
仕様 †
インデックス †
種類 †
- クラスター化インデックス
- 主キーを設定することで暗黙的に作成されるインデックス、または明示的にクラスター化を指定して作成したインデックス
- テーブル内に1つ
- 非クラスター化インデックス
- UNIQUE制約を設定することで暗黙的に作成されるインデックス、または明示的に非クラスター化を指定して作成したインデックス
インデックスの構造 †
- クラスター化インデックス、非クラスター化インデックス、共にBツリー
インデックスの使用確認 †
- SQL Server Management Studioから、クエリエディターを起動
- [クエリ]メニュー > [推定実行プランの表示] を選択
再構成と再構築 †
- 断片化の比率が30%以下の場合は再構成、30%超の場合は再構築を実行する
再構成 †
再構築 †
カラムストアインデックス †
- 文字通り、インデックスに必要なカラムだけをストアして作成したインデックス
- クラスター化カラムストアインデックス(SQL Sever 2014 から更新可能)
- 非クラスター化カラムストアインデックス(SQL Server 2016 から更新可能)
ID連番 †
IDENTIFY †
- テーブル単位での設定
- IDENTITY プロパティをテーブル列に指定した場合、追加した列では、行が追加 (Insert) される毎に、指定された増分の値を基に、自動的に ID 番号を採番することが可能になる
- ID を自動的に採番したい場合、IDENTITY プロパティを使用することにより、番号を採番する仕組みをアプリケーション側で実装する手間を省くことができる
- 仕様上、次の点が保証されていない
- 連続された ID 値が採番されることを保証していない
- パフォーマンス上の理由から 採番される ID 値がキャッシュ上に保持されているため、サーバーの再起動や、データベースの再起動が発生した場合、キャッシュ上に保持された ID 値が失われ、次回 行挿入時に、前回 挿入された値から非連続的な ID が生成される場合がある
- 値の一意性を保証していない
- 値が再利用されることを保証していない
シーケンス †
- SQL Server 2012 より追加
- テーブルとは独立したオブジェクトとして作成されるので、テーブル間で一連の連番を共有することが可能
- インクリメントする際の増分値や最大値まで達した時に最小値に戻って再度番号を振るといった循環の設定も可能
- シーケンスオブジェクトは NEXT VALUE FOR 関数を呼び出したタイミングで連番となる値を取得できますので、テーブルに連番を挿入する前に値の加工を行うこともできる
- 連続する値が欲しければ SEQUENCE を NO CHACE にして使うことが best
特殊な連番 †
ファイルグループ †
高可用性 †
AlwaysOn? †
バックアップ †
レプリケーション †
トレースログ †
トレースフラグ †
- 4032 ... SQL Serverが受け取ったコマンドをトレースするためのフラグ【起動時のみ設定可】
- 3605 ... そのトレース結果をエラーログに出力するためのフラグ
ログ確認 †
Tips †