行きの通勤電車では DELETE の基本動作を見てみましたので帰りの電車では TRUNCATE の基本動作を見てみたいと思います。
Archive for the ‘SQL Server’ tag
SQL Server の DELETE の基本動作を見てみる
レコードを削除するために DELETE という DML (データ操作言語) があります。
今回の投稿はこの DELETE の基本的な動作を見ていきたいと思います。
英語になりますが以下の情報でこの辺りについては細かく解説されています。
Inside the Storage Engine: Ghost cleanup in depth
リストア時のファイルの瞬時初期化について
SQL Server 2005 以降にはファイルの瞬時初期化 (Instant File Initialization) という機能があります。
SQL Server のデータベースはデータファイルとログファイルの 2 種類に分かれます。
これらのファイルは作成 / 拡張されたタイミングでファイル内を [0] で満たすことで初期化が行われます。
ファイルの瞬時初期化はこの [0] で満たすという初期化処理をファイルの作成 / 拡張時ではなくデータが書き込まれる際に行うというものになります。
# (使用している領域のみが初期化されることになります。 ![]()
この瞬時初期化はデータファイル (.mdf / .ndf) ファイルが対象となり、ログファイル (.ldf) は対象になりません。
# ログファイルは必ず [0] を満たす初期化が行われます。
最終的にデータで使用する領域は初期化がおこわなれるのですが、その処理をどのタイミング (領域を確保したタイミング / 使用するタイミング) で行うかという違いがあります。
このファイルの瞬時初期化ですがリストア時にも有効な設定となります。
今回は、リストア時の瞬時初期化についてみていきたいと思います。
SQL Server におけるバックアップと復元のパフォーマンスの最適化
リソースガバナーで制御されているメモリはどの領域??
PFS / GAM / DCM / は何ページごとに存在する?? に続いて疑問に思ったので調べてみましたシリーズです。
SQL Server 2008 以降ではリソースガバナーという機能が追加されています。 ![]()
リソースガバナーを使用することで、CPU やメモリの利用状況を制御することができるのですが、メモリはどの領域の制御なのかが気になったので調べてみました。
PFS / GAM / DCM / は何ページごとに存在する??
SQL Server には Allocation Page として、PFS / GAM / SGAM / IAM / DCM / BCM というような管理ページがあります。
SQL Server のページ情報のヘッダには、[m_prevPage] [m_nextPage] という前ページ、次ページの情報が格納されています。
Allocation Page がフルになった時に、このヘッダ情報がどのようになるのだろうということが気になり調べてみました。
VM Role で Azure Drive を使って SQL Server を実行してみる
VM Role で SQL Server を実行するための方法を少しまとめてみたいと思います。
MSDN フォーラムでもこの辺は話題になるみたいですね。
VMロール上でSQL Server
SQL Server installation using Azure VM role
実行することはできますが非サポートになるようですのでご利用は計画的に。
今回は Microsoft SQL Server2008 R2 RTM – Express with Advanced Services を使用しています。
SQL Server Code-Named "Denali" CTP1 の BOL のインストール
先週 [Microsoft Books Online for SQL Server Code-Named "Denali" CTP1] がダウンロードできるようになりました。
このインストール方法がちょっと独特でしたので軽くまとめてみました。
今回、提供されたファイルで初めてオフラインで使用できるようになったのかと思ったのですが、これ以前からオフラインで利用できたんですね…。
その方法も合わせてまとめてみたいと思います。
SQL Server のクエリ実行時の簡易 / 強制パラメーター化について
SQL Server には単純なクエリが実行された際に、内部的に自動でパラメーター化して実行される [簡易パラメーター化] (SQL Server 2000 では自動パラメーター化と呼ばれていました)? という機能があります。
# 私はずっと自動パラメーター化と言っていたのですが、この投稿を書くために調べたら簡易パラメーター化と呼ぶということを知りました…。
[強制パラメーター化] は単純でないクエリに対しても自動でパラメーター化をして実行する機能になります。
# 強制パラメーター化を有効にしてもパラメーター化の条件に当てはまらないと通常のクエリとして実行されますが。
このパラメーター化クエリについて少しまとめてみたいと思います。
今回の投稿ではパラメーター化は、簡易パラメーター化で検証をしています。
# 強制パラメーター化でも基本的な動作は同じになるはずですので。
Read the rest of this entry »
SQL Server の仮想ログファイルの管理オーバーヘッドについて
間にいくつか投稿をはさんでしまいましたが仮想ログファイルの管理オーバーヘッドについてみていきたいと思います。
トランザクション ログのファイルサイズは同一にして、仮想ログファイル数を変更し、トランザクション ログのバックアップの時間の変化を確認してみます。
Windows Sysprep と SQL Server Sysprep を連動して VM Role に SQL Server Express をインストール
前回投稿した、SQL Server Sysprep の [イメージの完了] ですが、setup.exe で起動することで実行しているため、コマンドから開始することが可能です。
コマンドで実行できるのであれば Sysprep に簡単に組み込むことが可能ですので今回は VM Role のイメージに SQL Server Sysprep を組み込んで、VM Role 上で SQL Server 2008 R2 Express Edition を起動してみたいと思います。
SSRS につていては設定の詰めが甘いので、セキュリティ設定ができていないですが起動後に HTTP でアクセスはできる状態では起動します。
作業の流れとしては以下のようになります。
# VM Role のイメージは Sysprep を実行する直前までは完了している状態です。 ![]()
Sysprep 中にコマンドを実行するための方法は以下の技術情報が参考になります。
Sysprep 中に任意のコマンドを実行する方法について
本手順ですが、データベースのデータの永続化に関しては考慮をしていません。
そのため、SQL Server 内のデータに関しては非永続化された揮発性のデータとなります。
一週間ほど VM Role を使っていて感じたのは、このロールはアプリケーションの実行環境としての利用用途として考えた方が良いのではないかということです。
VPS のようなイメージで考えていると要件にマッチしないと思います。
永続化するようなデータは Web / Worker Role と同様に Windows Azure Storage を使う必要があると思いますので、Windows Azure の作法に乗っ取ったアプリケーションを実行するための環境を VM Role で作ることができるという感じかと。
# カスタマイズした VHD を使用することができるので汎用性が高いのかなと。