• 検索結果がありません。

本日の Agenda 1. SQL Server の基本構成 2. データ書き込みの基本動作 3. バックゕップの基本動作 この 3 点についてデモを交えながらお話させていただきます 2

N/A
N/A
Protected

Academic year: 2021

シェア "本日の Agenda 1. SQL Server の基本構成 2. データ書き込みの基本動作 3. バックゕップの基本動作 この 3 点についてデモを交えながらお話させていただきます 2"

Copied!
54
0
0

読み込み中.... (全文を見る)

全文

(1)

第1回 SQL Server 勉強会

いちから勉強。

SQL Serverの基本構成 / データ書き込み

/ バックゕップの動作について

(2)

本日の Agenda

1.

SQL Serverの基本構成

2.

データ書き込みの基本動作

3.

バックゕップの基本動作

この 3 点についてデモを交えながらお話させていただ

きます。

2010/11/6 DB友の会 勉強会資料 2

(3)

本日のデモ環境

SQL Server デモ環境

Hyper-V 上のゲスト OS

CPU : 4Core

Memory : 2GB

Windows Server 2008 R2 Datacenter Edition

SQL Server 2008 R2 Datacenter Edition x64 + CU4

物理環境 (Hyper-V のホスト環境)

ThinkPad x201i

CPU : Intel Core i3 M330 (2.13 GHz 4Core)

Memory : 4GB

HD : 250 GB

(4)

1.SQL Server の基本構成

2010/11/6 DB友の会 勉強会資料 4

(5)

このセクションの内容

1.

SQL Server の゗ンスタンスの基本構成

2.

SQL Server のデータベースエンジンの

サービスの基本構成

(6)

SQL Server の基本的な構成

SQL Server はマルチ゗ンスタンス / マルチデータ

ベース環境で構築することができます。

マルチ゗ンスタンス

一つのサーバー内に複数の゗ンスタンス (SQL Server の

サービス) を作成することができます。

マルチデータベース

一つの゗ンスタンスの中に複数のデータベースを作成す

ることができます。

2010/11/6 DB友の会 勉強会資料 6

(7)

゗ンスタンス B

゗ンスタンス A

マルチ゗ンスタンス / マルチデータベース構成概要図

サーバー

ユーザー データベース ユーザー データベース master システム データベース model msdb tempdb Resource master システム データベース model msdb tempdb Resource

(8)

システムデータベースの役割

2010/11/6 DB友の会 勉強会資料 8 データベース名 役割 master SQL Server システムのシステム レベルの情報がすべて記録されます。 記録される情報には、ログオン ゕカウント、エンドポ゗ント、リンク サーバー、システ ム構成設定など、゗ンスタンス全体のメタデータが含まれます。 master データベースが使用できないと、SQL Server を開始できません。 model SQL Server の゗ンスタンスに作成するすべてのデータベースのテンプレートとして使用 されるデータベースです。

tempdb は SQL Server が起動するたびに作成されるので、model データベースが常 に SQL Server システムに存在する必要があります。 msdb 警告やジョブのスケジュール設定のために SQL Server エージェントによって使用され ます。 また、その他の Service Broker やデータベース メールなどの機能でも使用されます。 tempdb SQL Server の゗ンスタンスに接続しているすべてのユーザーが使用できるグローバル リソースであり、以下のものを保持するために使用されます。 • グローバルまたはローカルな一時テーブル、一時ストゕド プロシージャ、テーブル変数、カーソルな ど、明示的に作成された一時的なユーザー オブジェクト。 • スプールまたは並べ替えのために中間結果を格納するための作業テーブルなど、SQL Server データ ベース エンジンが作成する内部オブジェクト。 • 行のバージョン管理。 Resource • 読み取り専用のデータベースで、SQL Server に含まれるすべてのシステム オブジェクトがこれに格 納されます。

• SQL Server システム オブジェクト (sys.objects など) は、物理的には Resource データベースに保 存されていますが、論理的にはすべてのデータベースの sys スキーマ内にあるように扱われます。

(9)

゗ンスタンスの種類

゗ンスタンスには以下の 2 種類があります。

既定の゗ンスタンス

サーバー内で一つのみ作成できる゗ンスタンス

接続時には <サーバー名> で接続が可能

名前付き゗ンスタンス

サーバー内で複数作成ができる゗ンスタンス

接続時には <サーバー名¥゗ンスタンス名> で接続が可能

゗ンスタンスの構成

(10)

既定の゗ンスタンスと名前付き゗ンスタンスの違い

2010/11/6 DB友の会 勉強会資料 10 項目 既定のインスタンス 名前付きインスタンス 接続時の指定 サーバー名 サーバー名¥゗ンスタンス名 初期 サービス ポート 1433 (TCP) 動的ポート (TCP) 専用管理者接続 (DAC) ポート (*) 1434 (TCP) 動的ポート (TCP) ※専用管理者接続 (Dedicated admin connection : DAC)

実行中のサーバーにゕクセスして、診断関数や Transact-SQL ステートメントを実行したり、サーバー上の問題の トラブルシューテゖングを行ったりすることができます。

このことは、サーバーがロックされていたり、異常状態で実行されたりしていて、SQL Server データベース エン ジン接続に応答していない場合も同じです

[VISIBLE ONLINE (DAC)] という状態のスケジューラーが専用管理者接続用のスケジューラーになります。 (sys.dm_os_schedulers/sys.dm_os_schedulers 動的管理ビューから確認可能)

- sys.dm_os_memorys- - sys.dm_os_schedulers -

(11)

SQL Server のサービスの構成

SQL Server は以下のサービスで構成されます。

データベースエンジンのコゕコンポーネントのサービス

のみ記載しています。

サービスの単位 サービス名 内容 ゗ンスタンス単位 SQL Server (<゗ンスタンス名>) SQL Server データベースエンジンのコゕ サービス

SQL Server Agent (<゗ンスタンス名>) SQL Server のジョブを起動するサービス 共有サービス SQL Server Browser SQL Server の接続情報 (゗ンスタンス名

に対してのポート番号) をクラ゗ゕントに 返すサービス

(12)

システム データベース ユーザー データベース

SQL Server のサービスの構成概要図

サーバー

SQL Server (゗ンスタンス A) Port 1433 (TCP) SQL Server Agent (゗ンスタンス A

)

SQL Server Browser Port 1434 (UDP) システム データベース ユーザー データベース SQL Server (゗ンスタンス B) Port 動的ポート (TCP) SQL Server Agent (゗ンスタンス B

)

2010/11/6 DB友の会 勉強会資料 12 専用管理者接続 (DAC) Port 1434 (TCP) 専用管理者接続 (DAC) Port 動的ポート (TCP)

(13)

既定の゗ンスタンスのポート番号の確認

SQL Server のポート

構成

マネージャー

から確認

DAC のポート

(14)

名前付き゗ンスタンスのポート番号の確認

2010/11/6 DB友の会 勉強会資料 14 

SQL Server のポート

構成

マネージャー

から確認

DAC のポート

ログフゔ゗ルから確認

(15)

SQL Browser サービスの役割

既定の゗ンスタンス接続時の概要

SQL Server

1433 (TCP)

クラ゗ゕント

①サーバー名で接続 ②Port 1433 (TCP) で接続 ③接続完了

(16)

SQL Browser サービスの役割

2010/11/6 DB友の会 勉強会資料 16

名前付き゗ンスタンス接続時の概要

SQL Server

動的ポート (TCP)

クラ゗ゕント

①サーバー名¥゗ンスタンス名で接続 ②SQL Browse サービス (1434 (UDP)) に゗ンスタンスの情報を問い合わせ ③SQL Browser サービスが゗ンスタンスの情報を回答 ④回答された接続情報で SQL Server に接続 ⑤接続完了

接続先の SQL Server のポート番号を明示的に

指定すれば SQL Browser サービスが

停止していても゗ンスタンスに接続することが可能です。

(17)

既定の゗ンスタンスのポート番号を変更すると?

サーバー名で接続をしようとした場合は Port 1433 (TCP) で

接続を試行します。

既定の゗ンスタンスが 1433 以外で実行されている場合は、

接続時にポート番号を明記する必要があります。

SQL Browser を使用して解決してくれたような記憶もあったの

ですが、検証したところ解決できませんでした。

(18)

参考) 名前付き゗ンスタンスにサーバー名だけで接続

2010/11/6 DB友の会 勉強会資料 18

サーバー名だけで接続をした場合、Port 1433 (TCP) で

接続を試行します。

そのため、名前付き゗ンスタンスに 1433 を固定で割り

当てるとサーバー名だけで接続をすることが可能です。

(19)

SQL Browser の接続情報を確認

ネットワークキャプチャソフトで SQL Browser

(20)

ネットワークキャプチャに使用したソフト

2010/11/6 DB友の会 勉強会資料 20

Microsoft Network Monitor 3.4

http://www.microsoft.com/downloads/en/details.as

px?FamilyID=983b941d-06cb-4658-b7f6-3088333d062f&displaylang=ja

(21)
(22)

このセクションの内容

2010/11/6 DB友の会 勉強会資料 22

5 種類の操作の基本確認

1.

SELECT

2.

INSERT

3.

DELETE

4.

UPDATE

5.

TRUNCATE TABLE

この 5 種類の操作を複数の情報から確認してみます。

概要レベルで記載しているため詳細に見ていくとさらに細かな動

作が行われています。あらかじめご了承ください。

(23)

SELECT の基本動作

クラ゗ゕント

SQL Server

①SELECT ~

データベース

メモリ

データフゔ゗ル

(mdf)

ログフゔ゗ル

(ldf)

②データフゔ゗ルから

データを読み込み

②’メモリにデータを

③クラ゗ゕントに

結果を返す

(24)

SELECT 時の各種状態

2010/11/6 DB友の会 勉強会資料 24

データバッフゔキャッシュ

デゖスク I/O

DATA: データ行 (BLOB を除く) TEXT_MIX: LOB (ラージオブジェクト) INDEX: ゗ンデックスのエントリ IAM:

Index Allocation Map

エクステントを結びつけるために 使用されるページ

PFS:

Page Free Space

ページの空き容量を管理 DIFF_MAP (DCM):

最後の BACKUP DATABASE ス テートメント以降に変更されたエ クステント

(25)

SELECT の基本動作 (ソートあり)

クラ゗ゕント

SQL Server

①SELECT ~

ORDER BY ~

データベース

メモリ

データフゔ゗ル

(mdf)

ログフゔ゗ル

(ldf)

②データフゔ゗ルから

データを読み込み

③クラ゗ゕントに

結果を返す

②’メモリにデータを

(26)

データバッフゔキャッシュ

デゖスク I/O

SELECT 時 (ソートあり) の各種状態

2010/11/6 DB友の会 勉強会資料 26

(27)

tempdb が拡張できないと

メッセージ1105、レベル17、状態2、行1

データベース'tempdb' にオブジェクト'dbo.SORT

temporary run storage: 140737490190336' の領域を割り

当てられませんでした。'PRIMARY' フゔ゗ルグループがいっ

ぱいです。不要なフゔ゗ルの削除、フゔ゗ルグループ内のオブ

ジェクトの削除、フゔ゗ルグループへの新しいフゔ゗ルの追加、

またはフゔ゗ルグループの既存のフゔ゗ルの自動拡張の設定の

いずれかを行ってデゖスク領域を作成してください。

大量のメモリを搭載していても、tempdb のデゖス

(28)

INSERT の基本動作

2010/11/6 DB友の会 勉強会資料 28

クラ゗ゕント

SQL Server

①INSERT INTO ~

データベース

メモリ

データフゔ゗ル

(mdf)

ログフゔ゗ル

(ldf)

②INSERT データを

ログに先行書き込み

③メモリにINSERT

データをロード

(ダーテゖーページ)

⑤チェックポ゗ント発生時

ダーテゖーページを

データフゔ゗ルに書き込み

④クラ゗ゕントから

みて処理完了

ダーテゖーページ: 物理書き込みが行われていない キャッシュ上のデータ チェックポ゗ント: キャッシュ上のダーテゖーページを デゖスク上のデータにフラッシュ

(29)

INSERT 時の各種状態

データバッフゔキャッシュ

(30)

DELETE の基本動作

2010/11/6 DB友の会 勉強会資料 30

クラ゗ゕント

SQL Server

①DELETE FROM~

データベース

メモリ

データフゔ゗ル

(mdf)

ログフゔ゗ル

(ldf)

③DELETE データを

ログに先行書き込み

②削除対象を検索し

ダーテゖーページ

としてマーク

④DELETE 対象を非実在

(ゴースト)レコードとして

マーク

⑤クラ゗ゕントから

みて処理完了

⑥バックグラウンドの

クリーンゕップタスク

(GhostCleanup Task)で

非実在レコードを削除

(31)

DELETE 時の各種状態

データバッフゔキャッシュ

(32)

UPDATE の基本動作

2010/11/6 DB友の会 勉強会資料 32

クラ゗ゕント

SQL Server

①UPDATE~

データベース

メモリ

データフゔ゗ル

(mdf)

ログフゔ゗ル

(ldf)

②UPDATE データを

ログに先行書き込み

③メモリにデータを

ロードし UPDATE

(ダーテゖーページ)

⑤チェックポ゗ント発生時

ダーテゖーページを

データフゔ゗ルに書き込み

④クラ゗ゕントから

みて処理完了

DisplaySwitch.exe

(33)

データバッフゔキャッシュ

トランザクションログ

(34)

TRUNCATE TABLE の基本動作

2010/11/6 DB友の会 勉強会資料 34

クラ゗ゕント

SQL Server

①TRUNCATE TABLE~

データベース

メモリ

データフゔ゗ル

(mdf)

ログフゔ゗ル

(ldf)

③TRUNCATE データを

ログに先行書き込み

(ビットマップの更新)

②対象テーブルの

割り当て情報を取得

④テーブルのページを

割り当て解除

⑤クラ゗ゕントから

みて処理完了

(35)

TRUNCATE 時の各種状態

データバッフゔキャッシュ

(36)

データ書き込みの基本動作を確認

2010/11/6 DB友の会 勉強会資料 36

ソート時のデゖスク / メモリの動作と UPDATE 時

(37)
(38)

このセクションの内容

2010/11/6 DB友の会 勉強会資料 38

3 種類のバックゕップの説明

ページとエクステント

差分バックゕップについて

(39)

バックゕップの種類

バックゕップの動作は大きく分けて 3 種類

1.

完全バックゕップ

2.

差分バックゕップ

3.

トランザクションログ バックゕップ

SQL Server のバックゕップ / リストゕの基本は上記 3 種

類のバックゕップと 3 種類の復旧モデル (単純 / 完全 / 一

(40)

各バックゕップの内容

2010/11/6 DB友の会 勉強会資料 40 バックゕップの種類 バックゕップの特徴 完全バックゕップ 特定のデータベース、またはフゔ゗ル グループやフゔ゗ルのデータがすべて含 まれます。 さらに、データを復旧するために必要なログも含まれます。 差分バックゕップ 差分バックゕップは、最後に行ったデータの完全バックゕップに基づきます。 差分バックゕップには、差分ベースの作成以降に変更されたデータのみが含ま れます。 復元時には、完全バックゕップを先に復元し、続いて最新の差分バックゕップ を復元します。 時間の経過と共にデータベースが更新されるにつれて、差分バックゕップに含 まれるデータ量が増えます。 トランザクションログ バックゕップ 完全復旧モデルまたは一括ログ復旧モデルでは、通常のトランザクション ログ バックゕップ (ログ バックゕップ) が必要になります。 各ログ バックゕップは、バックゕップを作成したときにゕクテゖブだったトラ ンザクション ログ部分に対応します。 また、ログ バックゕップには、以前のログ バックゕップ時にバックゕップされ なかったすべてのログ レコードも含まれます。 完全復旧モデル、および場合によっては一括ログ復旧モデルでは、ログ チェー ンが途切れていなければデータベースを任意の時点に復元できます。 トランザクション ログは、通常のログ バックゕップ後に毎回切り捨てられます。

(41)

初回バックゕップ前後の動作について

初回完全バックゕップ前後でトランザクションログ

の蓄積状況が違うようです。

初回完全バックゕップ前

トランザクション ログのバックゕップをしないでもある程度ト

ランザクションログが切り捨てられている。

初回完全バックゕップ時にトランザクションログの切り捨てが

される。

初回完全バックゕップ後

トランザクションログのバックゕップを取得しないとトランザ

クションログが蓄積され続ける。

(42)

完全バックゕップ

バックゕップ゗メージ

2010/11/6 DB友の会 勉強会資料 42

差分バックゕップ

データベース

データフゔ゗ル

(mdf)

トランザクションログ バックゕップ

ログフゔ゗ル

(ldf)

上図は取得種類の゗メージ図のため、各フゔ゗ルを対象として記載しています。

(43)

3 種類のバックゕップを利用した基本設定例

0:00 完全 バックゕップ 0:00 差分 バックゕップ 0:00 差分 バックゕップ 0:00 差分 バックゕップ 0:00 差分 バックゕップ 0:00 差分 バックゕップ 0:00 差分 バックゕップ

(44)

参考) リストゕ概要

2010/11/6 DB友の会 勉強会資料 44

1.

完全バックゕップ

単体でリストゕ可能 (mdf / ndf / ldf フゔ゗ルを復元)

バックゕップ取得時点までのデータをリストゕすること

が可能

2.

差分バックゕップ

単体でリストゕ不可

差分バックゕップ取得前の完全バックゕップと組み合わ

せてリストゕをする

バックゕップ取得時点までのデータをリストゕすること

が可能

3.

トランザクションログ バックゕップ

単体でリストゕ不可

(45)

参考) リストゕの基本手順

1.

最新の完全バックゕップをリストゕ

2.

最新の差分バックゕップをリストゕ

差分バックゕップは前回の完全バックゕップからの差分

になりますので、複数の差分バックゕップがあっても、

最新の差分バックゕップをリストゕすれば、それまでの

データはリストゕされます。

3.

最新の差分バックゕップ以降のトランザクション

ログバックゕップをリストゕ

(46)

ページとエクステント

2010/11/6 DB友の会 勉強会資料 46

差分バックゕップは変更されたエクステントが取得されます。

 DCM (差分変更マップ : Differential Changed Map)  BCM (括変更マップ : Bulk Changed Map)

 変更されたエクステントの追跡には上記 2 種類のビットマップが使用されていますが今回は用語の紹 介まで。 

ページ

SQL Server のデータ ストレージの基本単位

 データ /゗ンデックス /テキスト / ゗メージ / GAM / DCM / BCM / IAM … 

SQL Server では、ページのサ゗ズは 8 KB になります。

 通常の最大行サ゗ズは 8,060 バ゗ト  BLOB や ROW_OVERFLOW は置いときます…。 

エクステント

エクステントは、物理的に連続する 8 ページをまとめたもので、ページを効率的

に管理するために使用されます。すべてのページは、エクステントに格納されま

す。

1 エクステント = 8 ページ = 64 KB

 単一エクステントと混合エクステントという種類があるのですが、今回は用語の紹介まで。

(47)

ページとエクステントの概要図

ページ

エクステント

ページヘッダー

テーブル 1 データ行 1

テーブル 1 データ行 2

テーブル 1 データ行 3

テーブル 1 ページ 1

テーブル 1 ページ 2

テーブル 1 ページ 3

テーブル 1 ページ 4

テーブル 1 ページ 5

テーブル 1 ページ 6

テーブル 1 ページ 7

(48)

参考) 混合エクステント

2010/11/6 DB友の会 勉強会資料 48

テーブル 1 ページ 1

テーブル 1 ページ 2

テーブル 2 ページ 1

テーブル 1 ゗ンデックス 1

テーブル1 ゗ンデックス 2

テーブル 2 ゗ンデックス1

テーブル 3 ページ 1

テーブル 4 ページ 1

前のページは単一エクステントの概要図になります

(49)

差分バックゕップについて

差分バックゕップは更新があったエクステントが取

得されます。

DCM によって取得対象が管理されています。

DCM はエクステントのビットマップ情報を管理している

ため、エクステント内のページに変更があった場合は、

変更されていないページの情報も取得対象となります。

前回の完全バックゕップ取得からテーブルの変更が大き

くなると、取得対象も多くなるため完全バックゕップを

取得しないとバックゕップフゔ゗ルも大きくなります。

この動作は完全バックゕップを取得しないと DCM がクリゕさ

(50)

差分バックゕップの取得対象

2010/11/6 DB友の会 勉強会資料 50

ページ 1

エクステント

ページヘッダー

テーブル 1 データ行 1

テーブル 1 データ行 2

テーブル 1 データ行 3

テーブル 1 ページ 1

テーブル 1 ページ 2

テーブル 1 ページ 3

テーブル 1 ページ 4

テーブル 1 ページ 5

テーブル 1 ページ 6

テーブル 1 ページ 7

テーブル 1 ページ 8

データ行 3 を更新

差分バックゕップの取得対象はページ 1

が含まれるエクステント全体

(51)

バックゕップの基本動作を確認

バックゕップ前後のログの蓄積と差分バックゕップ

(52)

某都市伝説をご存知でしょうか??

2010/11/6 DB友の会 勉強会資料 52 

以下抜粋

 Kさんはタクシーを飛ばし、さっそくサーバールームで調査を開始する。 原因はデータベース・サーバーが障害で停止していた。 大至急データベースを復旧させシステムを再始動させなければならないが、この時、K さんの顔が青ざめる。 障害時の復旧をおこなうためのログフゔ゗ルが肥大化し、デゖスクが一杯になっていた。 「しまった!気付かないうちにこんなにログが肥大化しているなんて...」 さらに最悪なことにそのログフゔ゗ルが壊れていた。 データベース・サーバー停止の原因はこれである。  ログフゔイルが壊れるとデータの復旧ができない。 毎日夜中にバックゕップを取っていたが、データはバックゕップした状態、すなわち昨 日の夜の時点に戻ってしまう。ユーザーがショッピングサ゗ト上で行っていた直近の購 入情報が損失してしまうのだ。 

なるほど、ログフゔ゗ルが壊れるとデータの復旧ができないデータベース

があるんですね。

(53)

時間があった時の追加デモ

(54)

まとめ

2010/11/6 DB友の会 勉強会資料 54

SQL Server 2005 以降は各種情報を見るための手

段が提供されているため、何かゕクションを起こし

た際にどのような挙動が発生しているのかを確認し

やすくなっています。

今回のセッションの内容で SQL Server にさらに興

味を持っていただけると幸いです。

参照

関連したドキュメント

SQL Server Standard Edition など製品版の SQL Server

・本書は、

Power Platform とは Power Apps、Power BI、Power Automate を合わせた製品群です。ビジネス ニーズに応じてさまざまなアプ リをカスタマイズ、拡張、構築することで、Office

る、というのが、この時期のアマルフィ交易の基本的な枠組みになっていた(8)。

ひかりTV会員 提携 ISP が自社のインターネット接続サービス の会員に対して提供する本サービスを含めたひ

○本時のねらい これまでの学習を基に、ユニットテーマについて話し合い、自分の考えをまとめる 学習活動 時間 主な発問、予想される生徒の姿

それでは資料 2 ご覧いただきまして、1 の要旨でございます。前回皆様にお集まりいただ きました、昨年 11

であり、 今日 までの日 本の 民族精神 の形 成におい て大