DB/SQL Server †
※ ここに記載されてる内容は、SQL Server 2008の情報になります
オブジェクトメモ †
INFORMATION_SCHEMA | 説明 |
COLUMNS | 現在のデータベースの現在のユーザーがアクセスできる列 |
INDEXES | 現在のデータベースに含まれるインデックス |
KEY_COLUMN_USAGE | 現在のデータベースに含まれるキー |
PROVIDER_TYPES | SQL Server Compact 3.5 でサポートされるデータ型 |
TABLES | 現在のデータベースの現在のユーザーがアクセスできるテーブル |
TABLE_CONSTRAINTS | 現在のデータベースに含まれるテーブル制約 |
REFERENTIAL_CONSTRAINTS | 現在のデータベースに含まれる外部制約 |
組み込み関数 | 取得する値 |
OBJECT_NAME(object_id) | オブジェクト名 |
FILE_NAME(file_id) | 論理ファイル名 |
COL_NAME(object_id,column_id) | カラム名取得 |
DB_NAME() | データーベース名 |
ORIGINAL_LOGIN() | ログインしたユーザー名 |
CURRENT_USER | 現在接続中のスキーマー |
⇒組み込み関数一覧
グローバル変数 | 戻す値 |
@@VERSION | インストールされているSQL Serverのバージョン |
@@CONNECTIONS | SQL Server の起動後に、成功または失敗した接続試行数 |
@@ERROR | 直前に実行したクエリのエラー状態を保持 |
@@LOCK_TIMEOUT | デットロックのタイムアウト時間(秒) |
@@ROWCOUNT | 直前に実行したクエリの件数 |
@@SERVICENAME | インスタンス名 |
その他コマンド | 説明 |
use DB名 | DBの切り替え |
SET STATISTICS IO | SQL実行時にページのI/Oを確認 |
SET STATISTICS TIME | SQL実行時にページの経過時間等が確認できる |
SET SHOWPLAN_ALL | 実行プランの表示。ALLの替わりにXML/TEXTもある |
DBCC DROPCLEANBUFFERS | プロシージャキャッシュをクリア |
DBCC IND(DB名,TBL名,INDID) | テーブルが使用しているページIDの確認をする |
DBCC PAGE(DB名,FileID,PageID,出力オプション) | ページに格納されているデータの内容を出力する |
メモリープール †
サーバパラメータ max server memory で指定した値を利用しOSメモリが逼迫しない限り解放されない。
メモリープールは以下の種類がある。
- System Data Structures
- Lock
- Procedure Cache
- Buffer Cache
- Log Cache
- Users Connection Context
パフォーマンスカウンタで、現在のメモリ使用量が確認できる
Memory Maanger | 説明 |
Target Server Memory (KB) | max server memoryの値 |
Total Server Memory (KB) | SQL Serverがコミットしているメモリ合計容量 |
SQL Server: Memory Manager オブジェクト
Buffer Cache †
データベース上のデータページとインデックスページのデータが入る。
検索結果が同じ結果の場合I/Oを発生させず、メモリ内にあるキャッシュからデータを返すことでパフォーマンスを向上。
Procedure Cache †
種類 | カラム名 |
オブジェクトプラン | ストアドプロシージャや関数、トリガーといった、再利用可能なクエリをキャッシュ |
SQLプラン | クエリの実行プランでアドホッククエリ(使い捨て)や「パラメータ化クエリ」の実行プランを蓄積。 パラメータ化クエリとは、クエリの中から変動する数値の部分を変数のようにして、コンパイルしたクエリを指す。 ※実行するたびに、ユーザーが指定した数値を当てはめて実行するが再コンパイルは必要ない |
メモリ容量の搭載要領によってサイズが変動する。
搭載メモリ(GB) | 確保容量 |
0〜4 | 0〜4GB領域の75% |
4〜64 | 4〜64GB領域の10% |
64以上 | 64GB以上の領域の5% |
※96GB搭載している場合は、(4 x 0.75) + (60 x 0.1) + (32 x 0.05) = 3 + 6 + 1.6 = 10.6GB
パフォーマンスモニターで確認すべきカウンター †
※ 64bit OS に 32bit SQLServerをインストールしている場合は、32bit の perfmon を実行しないとカウンタが表示されない(ファイル名指定して実行だと64bit版のperfmonになる)
オブジェクトの変更 †
sp_rename '変更前','変更後','タイプ'
タイプ | 説明 |
COLUMN | 名前を変更する列 |
DATABASE | ユーザー定義のデータベース |
INDEX | ユーザー定義のインデックス |
OBJECT | sys.objects に記録される型の項目 |
CREATE | TYPE または sp_addtype を実行すると追加される別名データ型または CLR ユーザー定義型 |
SQL文による列データの変更操作
列 | 説明 |
追加 | ALTER TABLE テーブル名 ADD 列名 列定義 |
削除 | ALTER TABLE テーブル名 DROP COLUMN 列名 |
変更 | ALTER TABLE テーブル名 ALTER COLUMN 列名 列定義 |
sqlcmdによるSQLインスタンスへの接続 †
sqlcmd -S インスタンス名
インスタンス名は[コンピュータ名\インスタンス]
オプション | 説明 |
-U | ログインIDを指定(省略した場合、Windows認証になる) |
-P | パスワードを指定(省略した場合、Windows認証になる) |
-S | 接続先のインスタンスを指定(省略時は既定のインスタンス) |
-H | ホスト名(IPアドレス)を指定 |
-d | 接続先のデータベースを指定(省略した場合はmaster) |
-i | 入力ファイル名を指定。SQLファイルを実行する場合などに使用 |
ストアドプロシージャ †
圧倒的、時間を見つけて作成せざるを得ない。
判定分や、四則演算や、何か色々。
all_objectsは使用頻度高いので、ストアドプロシージャにした方が良い。
CREATE PROCEDURE [dbo].[t] @objname varchar(50)
AS
select name from sys.all_objects
where name like @objname
調査用SQL †
メモ †
インデックス INDEX Seek と INDEX Scanの違い。 †
Seekは、特定の部分検索。Scanは全参照。
複合インデックスで、一番左に指定したカラム以外で絞るとINDEXのScanになる。
クラスター化インデックスの場合、実データを持っているのでTABLEのフルスキャンと全く同じになる。
外部リンク †