28. 断片化の解消
(c) 2014, Microsoft Corporation Japan. All Rights Reserved. 28
内部断片化の解消
データベースの圧縮
DBCC SHRINKDATABASE ステートメント
インデックスの再編成
ALTER INDEX REORGANIZE ステートメント
インデックスの再構築
ALTER INDEX REBUILD ステートメント
外部断片化の解消
インデックスの再編成
ALTER INDEX REORGANIZE ステートメント
インデックスの再構築
ALTER INDEX REBUILD ステートメント
インデックス再編成と再構築の判断
avg_fragmentation_in_percent 値が 30% 未満の場合、インデックスの再編成
ALTER INDEX REORGANIZE ステートメント
avg_fragmentation_in_percent 値が 30% 以上の場合、インデックスの再構築
ALTER INDEX REBUILD ステートメント
30. インデックス再構築
(c) 2014, Microsoft Corporation Japan. All Rights Reserved. 30
ALTER INDEX … REBUIKD
DROP_EXISTING 句を指定した CREATE INDEX
オンライン / オフラインでのインデックス再構築
ONLINE / OFFLINE 句を指定
ONLINE 句を指定した場合、対象となるテーブルへのデータの追加・更新・削除が可能
対象
FILLFACTOR のリセットを指定
インデックスのリーフ レベルのデータ格納率の再設定が可能
MAXDOP で並列処理の程度を制御
インデックス作成処理を並列化
USE <database_name>
GO
ALTER INDEX ALL ON <table_name>.<colum_name>
REBUILD WITH (FILLFACTOR = 80, ONLINE = ON);
GO
構文
37. 行のバージョン管理に基づく分離レベルの比較
テーブル test の b 列の値を 100 から 200 に更新中に検索した場合
行のバージョン管理を伴う READ COMMITTED 分離
ALTER DATABASE <db_name> SET READ_COMMITTED_SNAPSHOT ON
行のバージョン管理を伴う READ COMMITTED 分離
ALTER DATABASE <db_name> SET ALLOW_SNAPSHOT_ISOLATION ON
トランザクション A
BEGIN TRANSACTION
UPDATE test SET b = 200
COMMIT
トランザクション B
BEGIN TRANSACTION
SELECT b FROM test
SELECT b FROM test
更新前データ 100 が返される
更新後データ 200 が返される
他のユーザーからの更新
時間
ステートメント(文)レベルの一貫性の保証
トランザクション レベルの一貫性の保証
SQL 文実行前にコミットした
データが返る
トランザクション内で
値が変わる可能性あり
トランザクション A
BEGIN TRANSACTION
UPDATE test SET b = 200
COMMIT
トランザクション B
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
BEGIN TRANSACTION
SELECT b FROM test
SELECT b FROM test
更新前データ 100 が返される
更新後データ 100 が返される
他のユーザーからの更新
時間
同一トランザクションでは
同じ値が返る
37(c) 2014, Microsoft Corporation Japan. All Rights Reserved.
39. 自動復旧
(c) 2014, Microsoft Corporation Japan. All Rights Reserved. 39
インスタンスの起動時に自動的に行われる
時間
利用可能
障害発生
インスタンス
起動
Transaction 1
Transaction 2
A → B C → D G → H COMMIT
E → F
トランザクション
ログ ファイル
101 Tran1 A -> B
102 Tran1 C -> D
103 Tran2 E -> F
104 Tran1 G -> H
105 Tran1 COMMIT
LSN
トランザクション
ログ レコード毎に
振られる連番
COMMIT 時にはロ
グ バッファに存在
する更新情報がす
べて書き込まれる
ロール フォワード ロールバック 利用可能
Tran1 A -> B
Tran1 C -> D
Tran2 E -> F
Tran1 G -> H
Tran1 COMMIT
Tran2 ROLLBACK
E → F を取り消す
※ 不完全なトランザクションを
ロールバック
トランザクション ログ ファイルを
読んでデータファイルに適用する
49. バックアップ – 部分バックアップ
(c) 2014, Microsoft Corporation Japan. All Rights Reserved. 49
データベースの一部分(ファイル グループ / ファイル)単位のバックアップが可能
データベース
プライマリ ファイル グループ
ユーザー定義
ファイル グループ A
ユーザー定義
ファイル グループ B
Read Only
プライマリ ファイルと読み書き可能なファイル グループ
のみバックアップ
ファイル / ファイル グループ単位でバックアップ
PrimaryFile & FileGroup A Backup
FileGroup B Backup
BACKUP DATABASE <database_name> READ_WRITE_FILEGROUPS
[<Filegroup_List>, …] TO <backup_device>
BACKUP DATABASE <database_name>
[<Filegroup_List>, …] TO <backup_device>
Available
50. バックアップ – バックアップ履歴の確認
(c) 2014, Microsoft Corporation Japan. All Rights Reserved. 50
SQL Server Management Studio
復元元データベースをセットすると自動的に選択される
msdb に記録された履歴情報の表示
SELECT
type,
name,
description,
first_lsn,
last_lsn,
backup_finish_date,
compressed_backup_size,
physical_device_name,
logical_device_name
FROM msdb.dbo.backupset as s
JOIN msdb.dbo.backupmediafamily as m
ON s.media_set_id = m.media_set_id
WHERE database_name = ‘<database_name>'
ORDER BY 1
※情報が確認されても実際にバックアップが存在するとは限らない
51. バックアップ – 不要なバックアップ履歴の削除
(c) 2014, Microsoft Corporation Japan. All Rights Reserved. 51
sp_delete_backuphiroty / sp_delete_databasebackup_history を使用して
不要なバックアップ履歴を削除可能
EXEC sp_delete_backuphistory ‘<date>’
※msdb データベースのバックアップ履歴のみが削除される
EXEC sp_delete_database_backuphistory ‘<database_name>’
58. 運用例 – ディスク障害時のデータベース復元
(c) 2014, Microsoft Corporation Japan. All Rights Reserved. 58
最新のトランザクション ログ バックアップを取得(NO_TRUNCATE オプション)
BACKUP LOG <database_name>
TO <backup_device_name>, …
WITH NORECOVERY, NO_TRUNCATE
完全バックアップからデータベースを復元(NORECOVERY オプション)
RESTORE DATABASE <database_name>
FROM <backup_device_name>
WITH NORECOVERY
差分バックアップからデータベースを復元(NORECOVERY オプション)
RESTORE DATABASE <database_name>
FROM <backup_device_name>
WITH NORECOVERY
ログの復元(NORECOVERY オプション)
RESTORE LOG <database_name>
FROM <backup_device_name>
WITH NORECOVERY
最新のログの復元と復旧
RESTORE LOG <database_name>
FROM <backup_device_name>
WITH RECOVERY
59. 運用例 – 元の場所に復元できない場合
(c) 2014, Microsoft Corporation Japan. All Rights Reserved. 59
MOVE TO 句を指定し別の場所に復元できる
データベース名の変更も可能
RESTORE DATABASE <database_name>
FROM {DISK | TAPE} = <backup_device_name>
WITH
MOVE <file_name1> TO <new_file_name1>,
MOVE <file_name2> TO <new_file_name2>,
RECOVERY
構文
60. 運用例 – オンライン復元
(c) 2014, Microsoft Corporation Japan. All Rights Reserved. 60
プライマリ ファイル グループがオンラインかつ使用可能な状態の場合、ファイル復元、ページ
復元をオンラインで実行可能
データベース
プライマリ ファイル グループ
ユーザー定義
ファイル グループ A
ユーザー定義
ファイル グループ B
a1
Read Only
Available
障害
発生
※ 障害が発生していないファイル・ファイル グ
ループへはアクセス可能
手順 オペレーション
1 ファイル a1 をオンライン復元
RESTORE DATABASE adb FILE=‘a1’
FROM backup WITH NORECOVERY
※ ファイル a1 は復元状態になり、ファイル グループ A はオフライン
になる
2 トランザクション ログをバックアップ
BACKUP LOG adb TO log_backupN WITH COPY_ONLY
※ 通常のバックアップの順序には影響しない、コピーのみのバック
アップを行う。COPY_ONLY を指定した場合、データベースの全体
的なバックアップと復元の手順に影響はない。
3 ファイル a1 を復旧
RESTORE LOG adb FROM log_backup WITH NORECOVERY
:
RESTORE LOG adb FROM log_backupN WITH RECOVERY
61. 運用例 – ページ単位の検証
(c) 2014, Microsoft Corporation Japan. All Rights Reserved. 61
ページ確認の設定
SQL Server Management Studio (SSMS)
> オブジェクト エクスプローラー
> インスタンス名
> データベース
> プロパティ
63. 運用例 – ページ単位の復元
(c) 2014, Microsoft Corporation Japan. All Rights Reserved. 63
ページ単位のエラーを修復
破損ページを指定
RESTORE DATABASE <database_name>
PAGE=‘File#:Page#[,…]’
FROM DISK=<backup_device_name>
構文
最新のログを取得して、ページ復元後、
ログの復元と復旧が必要
破損ページを指定
64. 運用例 – バックアップを他のインスタンスで復元
(c) 2014, Microsoft Corporation Japan. All Rights Reserved. 64
ユーザー データベースのバックアップだけが存在
バックアップ ファイルを他のインスタンスで復元・復旧することも可能
master msdb model tempdb master msdb model tempdb
User DB User DB
バックアップ
ファイル
バックアップ 復元・復旧
65. 運用例 – デタッチ・アタッチ
(c) 2014, Microsoft Corporation Japan. All Rights Reserved. 65
データベースのデータ ファイルおよびトランザクション ログ ファイル(.mdf / .ldf)は、
デタッチして SQL Server の同一または別のインスタンスに再度アタッチすることが可能
32-bit 環境と 64-bit 環境の間でも機能
master msdb model tempdb master msdb model tempdb
User DB User DB
.mdf .ldf .mdf .ldf
デタッチ アタッチ
コピー
70. Better Together with Windows
Windows Platform に最適化
OS が認識できる CPU リソースをフル活用
OS が認識できる メモリ をフル活用
NUMA 対応(スケールアップ型)
Active Directory (AD) に統合された
ユーザー管理
FUJITSU Server PRIMEQUEST
2800E
Max 8CPU/120Cores, 12TB Memory
NEC Express5800/A1080a
A1080a-E
Max 8CPU/80Cores, 2TB Memory
HP ProLiant DL580 Gen8
728544-291
Max 4CPU/60Cores, 3TB (6TB) Memory
70(c) 2014, Microsoft Corporation Japan. All Rights Reserved.
71. SQL Server は All-in-One プラットフォーム
RDBMS
Engine
Relational Database
Analysis
Services
Business Intelligence
Platform
Integration
Services
ETL (Extract, Transform
and Load) Tool
Reporting
Services
Web Reporting
大規模 OLTP
大規模 DWH
高可用性
分析用インメモリ DB
多次元キューブ
データマイニング
データ統合
マスターデータ管理
データクレンジング
表現力豊かなレポート
定期配信
地図(Bing Map)とも連携
71(c) 2014, Microsoft Corporation Japan. All Rights Reserved.
72. Single Source for all size of System
大規模から小規模まで
Edition Max # of CPU Max Memory Size Max Database Size
Enterprise OS Max OS Max 524 PB
Business Intelligence 4 CPU or 16 Cores 128 GB 524 PB
Standard 4 CPU or 16 Cores 128 GB 524 PB
Express 1 CPU or 4 Cores 1 GB 10 GB
SQL Server 2014 の各エディションがサポートする機能
http://msdn.microsoft.com/ja-jp/library/cc645993.aspx
72(c) 2014, Microsoft Corporation Japan. All Rights Reserved.
73. SQL Server 2014
データ処理に必要な機能群を
すべて包含した “All-in-One” プラットフォーム。
最新の SQL Server 2014 を利用して、ビジネスを
加速させませんか?
詳細については、SQL Server の概要ページをご覧ください
http://www.microsoft.com/ja-jp/server-cloud/products/sql-server/
73(c) 2014, Microsoft Corporation Japan. All Rights Reserved.