トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション
Oracleキーワードから学ぶ、逆引き! SQL Server入門
文=株式会社CSK 教育サービス事業部
第4回
アーキテクチャ編(2)
スペシャルキーワード:セグメント/エクステント/データブロック
このコーナーでは、毎回Oracleの重要なキーワードをピックアップして、それぞれに対応するSQL Serverの用語や機能を解説していきます。Oracleを基準とした逆引き形式なので、これまでにマスターしたOracleの知識を最大限に生かしながら、スムーズにSQL Serverを習得できます!
特に重要な“スペシャルキーワード”は、さらに詳しく別ページを設けて解説しています。
◎アーキテクチャ編(2)◎
前回に引き続き、Oracle Serverアーキテクチャを取り上げます。
今回は、インスタンス関連、トレースファイル、起動/停止およびUNDOセグメントなどを紹介していきます。特に、UNDOセグメントはOracle Serverの特長でもあり、これがSQL Serverではどうなっているのか、皆さんも非常に気になるところだと思います。

セグメント/エクステント/データブロック


Oracleでは「セグメント」単位にデータが管理されています。社員表などの「表」や「索引」といった単位はセグメントにあたります。セグメントは1つ以上の「エクステント」から構成され、セグメント単位にエクステントサイズを設定できます。エクステントはさらに細かい単位である「データブロック」から構成されます。
SQL Serverには、Oracleのセグメントに相当するような言葉はありません。
「テーブル(表)」や「インデックス(索引)」は、Oracleのデータブロックに相当する「ページ」で構成されます。ページはメモリとディスクの最低入出力単位で、サイズは8Kバイト固定です。ページが8つ連続した領域が「エクステント」で、64Kバイト固定です。テーブルを作成すると最初はページ単位で領域が確保されますが、テーブルサイズが大きくなるとエクステント単位で領域が取られます。

☆さらに詳細はこちら→


UNDOセグメント


「UNDOセグメント(旧ロールバックセグメント)」は、変更前のデータを格納し、トランザクションのロールバックや読み取り一貫性を確保するために使用されます。しかしSQL ServerにはUNDOセグメントに相当するものはありません。
SQL Serverでは、トランザクションの復旧には「トランザクションログファイル」の変更履歴が使用され、読み取り一貫性の確保には「ロックメカニズム」が使われます。SQL ServerではSELECT文の実行時にも読み取り対象リソースに「共有ロック」というタイプのロックがかかりますので、他のトランザクションから未コミットのデータを読み取ることができません。
Oracleの読み取り一貫性はUNDOセグメントから変更前のデータを読むことで保証されますが、SQL Serverは変更したデータをコミットするまで読み取らせないことでデータの精度を保っているのです。

データファイル


Oracle Serverの「データファイル」とは、表領域に対応付けられるファイルで、表や索引などのデータを格納します。SQL Serverのデータファイルには、「プライマリデータファイル」と「セカンダリデータファイル」の2種類があります。プライマリデータファイルは1つのデータベースに1つ必要で、テーブルやインデックスなどのデータや他のファイルへのポインタを持ちます。推奨の拡張子は「.mdf」です。このプライマリデータファイル以外をすべてセカンダリデータファイルと呼び、これがない場合や複数存在する場合もあります。
拡張子は「.ndf」です。セカンダリデータファイルを作成する主な理由としては、ファイルを複数のディスクに分散させることにより同時I/Oでスループットが改善されることが挙げられます。

起動/停止


Oracle Serverは、サービスを起動することにより、@インスタンスの起動、Aデータベースのマウント、Bデータベースのオープンの3ステップで起動します。
SQL Serverの起動も、サービスの起動のみで行えます。サービスを起動するとインスタンスが起動します。インスタンスレベルの情報はシステムデータベースの1つであるmasterデータベースに格納されていて、サービス起動時に自動的に読み取り、ユーザーデータベースも自動的にオープンされます。
停止はサービスの停止です。「一時停止(NORMAL)」、「停止(SQL ServerEnterprise Managerなどの場合はIMMEDIATE、SQLステートメントの場合はステートメントの終了まで待つ)」、「SHUTDOWN_WAIT(ABORT)」の3種類があります。カッコ()の中は、それぞれ相当するOracleの停止オプションです。なお、「TRANSACTIONAL」に相当するものは、SQL Serverにはありません。

アラートファイル/トレースファイル


Oracle Serverには、データベースの起動、内部のイベントおよびエラー情報を記録する「アラートファイル」と「バックグラウンドトレースファイル」があります。また、セッションで実行したSQLの実行計画を記録する「ユーザートレースファイル」があります。これらのファイルは、トラブルシューティングやチューニングに利用されます。
SQL Serverの場合は、アラートファイルおよびバックグラウンドトレースファイルに該当するものとして、「SQL Serverエラーログ」およびWindowsの「アプリケーションログ」があります。SQL ServerエラーログはEnterprise Managerから参照し、Windowsのアプリケーションログはイベントビューアから参照します。ユーザートレースファイルに該当するものとしては、「プロファイラ」があります。プロファイラはGUIベースのユーティリティでSQL Server内のアクティビティをトレースすることができます。SQLの実行計画をトレースする機能も備えています。

バックグラウンドプロセス


SQL Serverのインスタンスには、「sqlservr」という名前のプロセスが1つあります。プロセスは1つですが、内部に複数のスレッドを含んでいます。実は、Windows版Oracle Serverも同一のしくみになっています。
SQL Serverの代表的なスレッドを紹介しましょう。「レイジーライタスレッド」はその機能の一つとして、データバッファキャッシュをスキャンし、使用済みのページ(ブロック)をデータファイルに書き込みます。「LRUリスト」に該当する「空きバッファリスト」が一定のレベルを下回ると、レイジーライタスレッドが書き込みを開始します。「ログライタスレッド」は、ログキャッシュをスキャンして、ログレコードをログファイルに書き込みます。このスレッドは非同期に書き込みを行いますが、チェックポイントやトランザクションのコミットが行われたときには強制的に書き込みを行います。その他、リソースのロックを管理する「ロックマネージャスレッド」、チェックポイントが発生したときに書き込みを行う「チェックポイントスレッド」などがあります。




・ 第1回 基本用語編:データベースオブジェクト
・ 第2回 ユーティリティ編:SQL*Plus
・ 第3回 アーキテクチャ編(1):インスタンスとデータベース
・ 第4回 アーキテクチャ編(2):セグメント/エクステント/データブロック
・ 第5回 アーキテクチャ編(3):索引
・ 第6回 プログラミング編:カーソル
・ 第7回 トランザクション/ロック編:読み取り一貫性
・ 第8回 バックアップとリカバリ編:スタンバイ・データベース
・ 第9回 ユーザー管理編:ロール
・ 第10回 パフォーマンスチューニング編:EXPLAIN PLAN(実行プランの表示)



← 特集!DBバイリンガル 目次

PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.