狠狠撸

狠狠撸Share a Scribd company logo
SQL Server Data Store & Data Access Internals
Masayuki Ozawa
Microsoft MVP for SQL Server (July 2011 - June 2014)
自己紹介
2014/03/22MVP Community Camp 20142
? SQL Server を中心とした案件に携わりたいと思っているフリーランスの
エンジニアです。
? 主に IT Pro 領域の業務に携わっています。
… というより開発ができません。
何か案件のご相談がありましたらお声掛けください。
? SQL Server の SQLTO / Azure の JAZUG というコミュニティで活動しています。
? ブログでSQL Server を中心とした Microsoft 製品の情報を発信をしています。
? SE の雑記
http://engineermemo.wordpress.com/
? Twitter
@Masayuki_Ozawa
? Facebook
https://www.facebook.com/masayuki.ozawa
本日の Agenda
2014/03/22MVP Community Camp 20143
? SQL Server Data Store Internals
? SQL Server Data Access Internals
Deep Dive / Internals というようなセッションタイトルを聞くと
グッとくる方向けの誰得情報になればいいかなと。
本日使用するクエリ
2014/03/22MVP Community Camp 20144
? 本日は以下のクエリの動作を見ていきます
? SELECT Col2 FROM Table_1 WHERE Col1 = 40
? SELECT COUNT(*) FROM Table_1
? SELECT Col1 FROM Table_1 WHERE Col2 = 400
? ぱっと見は単純なクエリ
? しかし、このクエリ、SQL Server の内部動作と
絡めると、とても奥が深いです!!
SQL Server Data Store Internals
2014/03/22MVP Community Camp 20145
Question : 内部動作はどうなるでしょう
2014/03/22MVP Community Camp 20146
? SELECT Col2 FROM Table_1 WHERE Col1 = 40
1. Col1 = 40 と Col2 = 400 (対象の列) が取得される
2. Col1= 40 の行が取得される
Col1
(int)
Col2
(int)
Col3
(nvarchar(100))
Col4
(nchar(450))
10 100 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
20 200 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
30 300 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
40 400 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
50 500 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
60 600 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
70 700 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
80 800 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
90 900 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
~ 省略 ~
8000 80000 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
Answer
2014/03/22MVP Community Camp 20147
? 1. / 2. のどちらでもありません
Col1
(int)
Col2
(int)
Col3
(nvarchar(100))
Col4
(nchar(450))
10 100 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
20 200 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
30 300 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
40 400 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
50 500 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
60 600 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
70 700 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
80 800 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
90 900 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
~ 省略 ~
8000 80000 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
この範囲のデータが
取得されます
SQL Server のデータストア
2014/03/22MVP Community Camp 20148
? 行ストア (Row Store)
? 行単位でデータを格納する
? デフォルトのデータストア方式
? 列ストア (Column Store)
? 行のデータを列単位で格納する
? SQL Server では Column Store Index を使用
? 今回の内容は一般的な行ストアについて
? 列ストアや In-Memory OLTP だとちょっと違ってきます
Col1 Col2 Col3 Col4
10 100 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
20 200 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
30 300 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
40 400 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
50 500 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
データ格納単位
2014/03/22MVP Community Camp 20149
? 行 (レコード) が最小のデータ単位だが内部ではページで格納
? ページ : 8KB のデータ格納領域
? 8 ページをまとめたものをエクステントとして管理 (64KB)
? ページレベルでチェックサムを保持しいている
行データ
(最大 8,060 バイト)
行オフセット
(レコードの位置情報)
ページの構造
8KB ページ
行ヘッダー
(96 バイト)
エクステント (64KB)
ページ ページ
ページ ページ
ページ ページ
ページ ページ
先ほどのテーブルの実際の格納状態
2014/03/22MVP Community Camp 201410
列 バイト数
Col1 4
Col2 4
Col3 72
Col4 900
合計 980
Col1
(int)
Col2
(int)
Col3
(nvarchar(100))
Col4
(nchar(450))
10 100 xxxxxxxx NULL
20 200 xxxxxxxx NULL
30 300 xxxxxxxx NULL
40 400 xxxxxxxx NULL
50 500 xxxxxxxx NULL
60 600 xxxxxxxx NULL
70 700 xxxxxxxx NULL
80 800 xxxxxxxx NULL
90 900 xxxxxxxx NULL
~ 省略 ~
8000 80000 xxxxxxxx NULL
8060 / 980 = 8 レコード
全レコード数 = 800 レコード
ページ #1
ページ #2
ページ #100
Undocumented Command
2014/03/22MVP Community Camp 201411
? SQL Server の Books Online (SQL Server のヘルプドキュメント) には記載
されておらず公開されていないコマンド
? 主に内部情報を取得するために使用
? Undocumented DBCC
? Undocumented Function
? Undocumented Dynamic Management View
? Undocumented Trace Flag
2014/03/22MVP Community Camp 201412
レコードの格納状態を確認
データの密度を考える
2014/03/22MVP Community Camp 201413
? ポイント
? データの密度が高い = 1 ページに格納されているレコード数が多い
? ディスクとメモリ間の I/O はページ単位で実施される
? レコード単位ではない
? エクステント単位 (64KB = 8 ページ)で実施されることもある
メモリ ディスク
DB
Col1 Col2 Col3 Col4
10 100 xxxxxxxx NULL
20 200 xxxxxxxx NULL
30 300 xxxxxxxx NULL
40 400 xxxxxxxx NULL
~ 省略 ~
8000 80000 xxxxxxxx NULL
ページ
ページ
ページページ
データをキャッシュする
=
ページをキャッシュする
データ密度を上げるには
2014/03/22MVP Community Camp 201414
? 固定長のデータ型が必要かを検討
? char / nchar で格納する必要があるか??
? 固定長データ型のメリット
? 格納するデータ長の変更を受けにくい
? 断片化の発生を抑えることができる
? データの圧縮機能を使用
? SQL Server のデータ圧縮は圧縮されたデータをディスク/メモリ上に格納する
? CDA (Compression Data Array) 形式でデータを格納し圧縮
? ディスク使用量 / メモリ使用量 / ディスク I/O を抑えることが可能
(ただし CPU 負荷とのトレードオフ)
? Enterprise Edition の機能
? SQL Database (Windows Azure) では全エディションで使用可能
断片化
2014/03/22MVP Community Camp 201415
? ページ内の格納領域が不足した場合に、新規のページにデータの半分
を移動して空き領域を確保 (50/50分割)
Col1 Col2 Col3 Col4
10 100 xxxxxxxx NULL
20 200 xxxxxxxx NULL
30 300 xxxxxxxx NULL
40 400 xxxxxxxx NULL
50 500 xxxxxxxx NULL
60 600 xxxxxxxx NULL
70 700 xxxxxxxx NULL
80 800 xxxxxxxx NULL
Col1 Col2 Col3 Col4
10 100 xxxxxxxx NULL
20 200 xxxxxxxx NULL
25 250 xxxxxxxx NULL
30 300 xxxxxxxx NULL
空き領域
Col1 Col2 Col3 Col4
40 400 xxxxxxxx NULL
50 500 xxxxxxxx NULL
60 600 xxxxxxxx NULL
70 700 xxxxxxxx NULL
80 800 xxxxxxxx NULL
空き領域
Col1 Col2 Col3 Col4
25 250 Xxxxxxxx NULL
断片化による影響
2014/03/22MVP Community Camp 201416
? ページ内の密度が下がる
? データの取得に複数のページを読み込む必要がある
? FILLFACTOR を設定することで事前に空き領域を確保しておくことが可能
? ページ内に空きがあったとしても 8KB のサイズはメモリに確保される
(データが書き込まれている領域のみキャッシュされるわけではない)
? ページの連続性がなくなる (Extent Scan Fragmentation)
? 連続したデータを読むのにアクセスコストが高くなる
? 一般的なアクセスコスト : ランダムアクセス > シーケンシャルアクセス
ページ #1 ページ #2 ページ #3 ページ #100
2014/03/22MVP Community Camp 201417
ディスクとメモリ間のデータアクセス
断片化を確認
SQL Server Data Access Internals
2014/03/22MVP Community Camp 201418
Question 2 : 内部動作はどうなるでしょう
2014/03/22MVP Community Camp 201419
? SELECT COUNT(*) FROM Table_1
1. 内部のメタデータから件数が取得される
2. テーブル全体を検索する
Col1
(int)
Col2
(int)
Col3
(nvarchar(100))
Col4
(nchar(450))
10 100 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
20 200 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
30 300 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
40 400 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
50 500 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
60 600 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
70 700 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
80 800 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
90 900 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
~ 省略 ~
8000 80000 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
Answer
2014/03/22MVP Community Camp 201420
? 2. テーブル全体を検索します。
Col1
(int)
Col2
(int)
Col3
(nvarchar(100))
Col4
(nchar(450))
10 100 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
20 200 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
30 300 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
40 400 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
50 500 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
60 600 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
70 700 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
80 800 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
90 900 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
~ 省略 ~
8000 80000 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
Full Scan
Scan と Seek
2014/03/22MVP Community Camp 201421
? Scan
? データをすべて走査
? Table Scan
? Clustered Index Scan
? Index Scan
? Seek
? 特定の範囲のデータを走査
? Clustered Index Seek
? Index Seek
? 一般的な I/O コストとしては Scan > Seek
? 過度な Scan は I/O コストだけでなく、CPU コストにもつながる
実行プランを確認 #1
2014/03/22MVP Community Camp 201422
実行プランを確認 #2
2014/03/22MVP Community Camp 201423
SET STATISTICS PROFILE ON
SELECT COUNT(*) FROM Table_1
件数取得の注意点
2014/03/22MVP Community Camp 201424
? 非クラスター化インデックスが設定されていないテーブルへの COUNT
はテーブルスキャンが行われる
? 非クラスター化インデックスのないテーブルへの COUNT はコストが高い
? Non Clustered Index Scan も該当インデックスの全件スキャンではあるが、イン
デックス列のスキャンになるので I/O コストは Clustered Index Scan より低い
? 概算の件数取得でよい場合は sys.dm_db_partition_stats を利用
? オブジェクト単位のデータ格納状況を取得するための動的管理ビュー
? 大量のデータ変更をした後などは実際の件数と差が出ることがあるが、
瞬時に件数を取得することが可能
2014/03/22MVP Community Camp 201425
件数取得の動作確認
Col1
(int)
Col2
(int)
Col3
(nvarchar(100))
Col4
(nchar(450))
10 100 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
20 200 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
30 300 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
40 400 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
50 500 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
60 600 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
70 700 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
80 800 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
90 900 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
~ 省略 ~
8000 80000 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
Question : 内部動作はどうなるでしょう
2014/03/22MVP Community Camp 201426
? SELECT Col1 FROM Table_1 WHERE Col2 = 400
1. Col1 (クラスター化インデックス) と Col2 (非クラスターインデックス) のデータを利用
2. Col2 (非クラスターインデックス) だけで完結
Answer
2014/03/22MVP Community Camp 201427
? 1. / 2. のどちらも正解と言えなくもない
? クラスター化インデックスが設定されているテーブルの非クラスター
化インデックスにはクラスター化インデックスの列が含まれる
インデックス
項目
クラスター化
インデックス項目
100 10
200 20
300 30
400 40
500 50
600 60
700 70
800 80
900 90
実データへの
リンク
Col1
(int)
Col2
(int)
Col3
(nvarchar(100))
Col4
(nchar(450))
10 100 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
20 200 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
30 300 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
40 400 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
50 500 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
60 600 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
70 700 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
80 800 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
90 900 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
~ 省略 ~
8000 80000 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
非クラスター化インデックス
2014/03/22MVP Community Camp 201428
? 行を高速に特定するための索引
? インデックスが設定されていない項目に対しての検索は Scan が行われる
? 必要なデータのみを取得するためのデータ格納領域
? クラスター化インデックス = 行の実体 (キー項目順でデータを格納する)
? 非クラスター化インデックス = 指定項目のみ
? インデックスに格納されている項目のみを取得することでクエリが完結するの
がベスト
? カバードインデックス
? 付加列インデックス
? フィルタされたインデックス
2014/03/22MVP Community Camp 201429
非クラスター化インデックスの動作確認
最後に
2014/03/22MVP Community Camp 201430
? 今回はシンプルなクエリを例にしていますが、基本的な考えは複雑な
クエリでも変わりません。
? テーブル最適化 / インデックス最適化の目的
→データを効率よく格納し、データを効率よく取得する
? 今回は参照系の処理でお話をしましたが、更新系の処理についても単
純な処理でも奥が深いので興味ある方は是非調べてみてください!!
? 懇親会にも参加していますので、質問等ありましたらお声掛け下さい
? 仕事のご相談も大歓迎です!!

More Related Content

What's hot (20)

Sql database 基本構成と直近で追加されていた機能の紹介
Sql database 基本構成と直近で追加されていた機能の紹介Sql database 基本構成と直近で追加されていた機能の紹介
Sql database 基本構成と直近で追加されていた機能の紹介
Masayuki Ozawa
?
待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイント待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイント
Masayuki Ozawa
?
オンプレの顿产补が补锄耻谤别のデータベースを使ってみた
オンプレの顿产补が补锄耻谤别のデータベースを使ってみたオンプレの顿产补が补锄耻谤别のデータベースを使ってみた
オンプレの顿产补が补锄耻谤别のデータベースを使ってみた
Masayuki Ozawa
?
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみようSql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
Masayuki Ozawa
?
COD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアル
COD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアルCOD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアル
COD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアル
Masayuki Ozawa
?
Oracle と sql server 比べてみよう (sql server)
Oracle と sql server 比べてみよう (sql server)Oracle と sql server 比べてみよう (sql server)
Oracle と sql server 比べてみよう (sql server)
Masayuki Ozawa
?
Sql server 2012 の新機能を使ってみよう。db 管理者向け機能の紹介
Sql server 2012 の新機能を使ってみよう。db 管理者向け機能の紹介Sql server 2012 の新機能を使ってみよう。db 管理者向け機能の紹介
Sql server 2012 の新機能を使ってみよう。db 管理者向け機能の紹介
Masayuki Ozawa
?
Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版
elanlilac
?
Sql server 構築 運用 tips
Sql server 構築 運用 tipsSql server 構築 運用 tips
Sql server 構築 運用 tips
Masayuki Ozawa
?
SQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンターSQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンター
Masayuki Ozawa
?
SQL Server 2014 In Memory OLTP Overview
SQL Server 2014 In Memory OLTP OverviewSQL Server 2014 In Memory OLTP Overview
SQL Server 2014 In Memory OLTP Overview
Masayuki Ozawa
?
ここからはじめる SQL Server の状態取得
ここからはじめる SQL Server の状態取得ここからはじめる SQL Server の状態取得
ここからはじめる SQL Server の状態取得
Masayuki Ozawa
?
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチSql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Masayuki Ozawa
?
Sql server 2016 ctp 3.0 新機能
Sql server 2016 ctp 3.0 新機能Sql server 2016 ctp 3.0 新機能
Sql server 2016 ctp 3.0 新機能
Masayuki Ozawa
?
COD2012 T2/T3 : 実機で試す SQL Server の現状取得
COD2012 T2/T3 : 実機で試す SQL Server の現状取得COD2012 T2/T3 : 実機で試す SQL Server の現状取得
COD2012 T2/T3 : 実機で試す SQL Server の現状取得
Masayuki Ozawa
?
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
Insight Technology, Inc.
?
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎
Masayuki Ozawa
?
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
Insight Technology, Inc.
?
de:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tips
de:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tipsde:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tips
de:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tips
Masayuki Ozawa
?
Sql server浅く広く
Sql server浅く広くSql server浅く広く
Sql server浅く広く
okumar savurou
?
Sql database 基本構成と直近で追加されていた機能の紹介
Sql database 基本構成と直近で追加されていた機能の紹介Sql database 基本構成と直近で追加されていた機能の紹介
Sql database 基本構成と直近で追加されていた機能の紹介
Masayuki Ozawa
?
待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイント待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイント
Masayuki Ozawa
?
オンプレの顿产补が补锄耻谤别のデータベースを使ってみた
オンプレの顿产补が补锄耻谤别のデータベースを使ってみたオンプレの顿产补が补锄耻谤别のデータベースを使ってみた
オンプレの顿产补が补锄耻谤别のデータベースを使ってみた
Masayuki Ozawa
?
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみようSql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
Masayuki Ozawa
?
COD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアル
COD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアルCOD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアル
COD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアル
Masayuki Ozawa
?
Oracle と sql server 比べてみよう (sql server)
Oracle と sql server 比べてみよう (sql server)Oracle と sql server 比べてみよう (sql server)
Oracle と sql server 比べてみよう (sql server)
Masayuki Ozawa
?
Sql server 2012 の新機能を使ってみよう。db 管理者向け機能の紹介
Sql server 2012 の新機能を使ってみよう。db 管理者向け機能の紹介Sql server 2012 の新機能を使ってみよう。db 管理者向け機能の紹介
Sql server 2012 の新機能を使ってみよう。db 管理者向け機能の紹介
Masayuki Ozawa
?
Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版
elanlilac
?
Sql server 構築 運用 tips
Sql server 構築 運用 tipsSql server 構築 運用 tips
Sql server 構築 運用 tips
Masayuki Ozawa
?
SQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンターSQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンター
Masayuki Ozawa
?
SQL Server 2014 In Memory OLTP Overview
SQL Server 2014 In Memory OLTP OverviewSQL Server 2014 In Memory OLTP Overview
SQL Server 2014 In Memory OLTP Overview
Masayuki Ozawa
?
ここからはじめる SQL Server の状態取得
ここからはじめる SQL Server の状態取得ここからはじめる SQL Server の状態取得
ここからはじめる SQL Server の状態取得
Masayuki Ozawa
?
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチSql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Masayuki Ozawa
?
Sql server 2016 ctp 3.0 新機能
Sql server 2016 ctp 3.0 新機能Sql server 2016 ctp 3.0 新機能
Sql server 2016 ctp 3.0 新機能
Masayuki Ozawa
?
COD2012 T2/T3 : 実機で試す SQL Server の現状取得
COD2012 T2/T3 : 実機で試す SQL Server の現状取得COD2012 T2/T3 : 実機で試す SQL Server の現状取得
COD2012 T2/T3 : 実機で試す SQL Server の現状取得
Masayuki Ozawa
?
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
Insight Technology, Inc.
?
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎
Masayuki Ozawa
?
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
Insight Technology, Inc.
?
de:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tips
de:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tipsde:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tips
de:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tips
Masayuki Ozawa
?

Viewers also liked (13)

カラムストアインデックス 最初の一歩
カラムストアインデックス 最初の一歩カラムストアインデックス 最初の一歩
カラムストアインデックス 最初の一歩
Masayuki Ozawa
?
Clustered Columnstore - Deep Dive
Clustered Columnstore - Deep DiveClustered Columnstore - Deep Dive
Clustered Columnstore - Deep Dive
Niko Neugebauer
?
Sql server 2014 x velocity – updateable columnstore indexes
Sql server 2014 x velocity – updateable columnstore indexesSql server 2014 x velocity – updateable columnstore indexes
Sql server 2014 x velocity – updateable columnstore indexes
Pat Sheehan
?
Clustered Columnstore Introduction
Clustered Columnstore IntroductionClustered Columnstore Introduction
Clustered Columnstore Introduction
Niko Neugebauer
?
COD2012 C3 : SQL Server 2012で振り返る、SQLOSのスレッド スケジューリング
COD2012 C3 : SQL Server 2012で振り返る、SQLOSのスレッド スケジューリングCOD2012 C3 : SQL Server 2012で振り返る、SQLOSのスレッド スケジューリング
COD2012 C3 : SQL Server 2012で振り返る、SQLOSのスレッド スケジューリング
Masayuki Ozawa
?
SQL Server 2014 データベースエンジン新機能
SQL Server 2014 データベースエンジン新機能SQL Server 2014 データベースエンジン新機能
SQL Server 2014 データベースエンジン新機能
Masayuki Ozawa
?
Sql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせ
Sql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせSql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせ
Sql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせ
Masayuki Ozawa
?
DBTS2015_B35_SQLServer2016
DBTS2015_B35_SQLServer2016DBTS2015_B35_SQLServer2016
DBTS2015_B35_SQLServer2016
Tsuyoshi Kitagawa
?
Columnstore indexes in sql server 2014
Columnstore indexes in sql server 2014Columnstore indexes in sql server 2014
Columnstore indexes in sql server 2014
Antonios Chatzipavlis
?
[D35] インメモリーデータベース徹底比較 by Komori
[D35] インメモリーデータベース徹底比較 by Komori[D35] インメモリーデータベース徹底比較 by Komori
[D35] インメモリーデータベース徹底比較 by Komori
Insight Technology, Inc.
?
SQL server 2016 New Features
SQL server 2016 New FeaturesSQL server 2016 New Features
SQL server 2016 New Features
Amin Mesbahi
?
SQL 2016 Mejoras en InMemory OLTP y Column Store IndexSQL 2016 Mejoras en InMemory OLTP y Column Store Index
SQL 2016 Mejoras en InMemory OLTP y Column Store Index
Eduardo Castro
?
Sql server 2016 always on 可用性グループ new features
Sql server 2016 always on 可用性グループ new featuresSql server 2016 always on 可用性グループ new features
Sql server 2016 always on 可用性グループ new features
Masayuki Ozawa
?
カラムストアインデックス 最初の一歩
カラムストアインデックス 最初の一歩カラムストアインデックス 最初の一歩
カラムストアインデックス 最初の一歩
Masayuki Ozawa
?
Clustered Columnstore - Deep Dive
Clustered Columnstore - Deep DiveClustered Columnstore - Deep Dive
Clustered Columnstore - Deep Dive
Niko Neugebauer
?
Sql server 2014 x velocity – updateable columnstore indexes
Sql server 2014 x velocity – updateable columnstore indexesSql server 2014 x velocity – updateable columnstore indexes
Sql server 2014 x velocity – updateable columnstore indexes
Pat Sheehan
?
Clustered Columnstore Introduction
Clustered Columnstore IntroductionClustered Columnstore Introduction
Clustered Columnstore Introduction
Niko Neugebauer
?
COD2012 C3 : SQL Server 2012で振り返る、SQLOSのスレッド スケジューリング
COD2012 C3 : SQL Server 2012で振り返る、SQLOSのスレッド スケジューリングCOD2012 C3 : SQL Server 2012で振り返る、SQLOSのスレッド スケジューリング
COD2012 C3 : SQL Server 2012で振り返る、SQLOSのスレッド スケジューリング
Masayuki Ozawa
?
SQL Server 2014 データベースエンジン新機能
SQL Server 2014 データベースエンジン新機能SQL Server 2014 データベースエンジン新機能
SQL Server 2014 データベースエンジン新機能
Masayuki Ozawa
?
Sql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせ
Sql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせSql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせ
Sql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせ
Masayuki Ozawa
?
[D35] インメモリーデータベース徹底比較 by Komori
[D35] インメモリーデータベース徹底比較 by Komori[D35] インメモリーデータベース徹底比較 by Komori
[D35] インメモリーデータベース徹底比較 by Komori
Insight Technology, Inc.
?
SQL server 2016 New Features
SQL server 2016 New FeaturesSQL server 2016 New Features
SQL server 2016 New Features
Amin Mesbahi
?
SQL 2016 Mejoras en InMemory OLTP y Column Store IndexSQL 2016 Mejoras en InMemory OLTP y Column Store Index
SQL 2016 Mejoras en InMemory OLTP y Column Store Index
Eduardo Castro
?
Sql server 2016 always on 可用性グループ new features
Sql server 2016 always on 可用性グループ new featuresSql server 2016 always on 可用性グループ new features
Sql server 2016 always on 可用性グループ new features
Masayuki Ozawa
?

Similar to Sql server data store data access internals (20)

【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
Hideo Takagi
?
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
Naoki (Neo) SATO
?
Seas で語られたこととは?
Seas で語られたこととは?Seas で語られたこととは?
Seas で語られたこととは?
Masayuki Ozawa
?
[Japan Tech summit 2017] DAL 003
[Japan Tech summit 2017] DAL 003[Japan Tech summit 2017] DAL 003
[Japan Tech summit 2017] DAL 003
Microsoft Tech Summit 2017
?
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
Ryusuke Kajiyama
?
Microsoft Azure - SQL Data Warehouse
Microsoft Azure - SQL Data WarehouseMicrosoft Azure - SQL Data Warehouse
Microsoft Azure - SQL Data Warehouse
Microsoft
?
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
Suguru Ito
?
简単!础奥搁を贰齿颁贰尝ピボットグラフで分析しよう?
简単!础奥搁を贰齿颁贰尝ピボットグラフで分析しよう?简単!础奥搁を贰齿颁贰尝ピボットグラフで分析しよう?
简単!础奥搁を贰齿颁贰尝ピボットグラフで分析しよう?
Yohei Azekatsu
?
Snowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a ServiceSnowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a Service
Mineaki Motohashi
?
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6
Toshi Harada
?
UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用
UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用
UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用
Inoue Seki
?
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみたAwsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Sunao Tomita
?
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまでやりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
Daisuke Masubuchi
?
Microsoft Azure SQLマネージド インスタンスのソースとしての利用
Microsoft Azure SQLマネージド インスタンスのソースとしての利用Microsoft Azure SQLマネージド インスタンスのソースとしての利用
Microsoft Azure SQLマネージド インスタンスのソースとしての利用
QlikPresalesJapan
?
SQL Azure Management and Security
SQL Azure Management and SecuritySQL Azure Management and Security
SQL Azure Management and Security
junichi anno
?
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
Daiyu Hatakeyama
?
[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba
[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba
[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba
Insight Technology, Inc.
?
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
Hideo Takagi
?
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
Naoki (Neo) SATO
?
Seas で語られたこととは?
Seas で語られたこととは?Seas で語られたこととは?
Seas で語られたこととは?
Masayuki Ozawa
?
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
Ryusuke Kajiyama
?
Microsoft Azure - SQL Data Warehouse
Microsoft Azure - SQL Data WarehouseMicrosoft Azure - SQL Data Warehouse
Microsoft Azure - SQL Data Warehouse
Microsoft
?
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
Suguru Ito
?
简単!础奥搁を贰齿颁贰尝ピボットグラフで分析しよう?
简単!础奥搁を贰齿颁贰尝ピボットグラフで分析しよう?简単!础奥搁を贰齿颁贰尝ピボットグラフで分析しよう?
简単!础奥搁を贰齿颁贰尝ピボットグラフで分析しよう?
Yohei Azekatsu
?
Snowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a ServiceSnowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a Service
Mineaki Motohashi
?
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6
Toshi Harada
?
UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用
UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用
UNICORNの機械学習ワークロードにおけるSpot&AWS Batchの活用
Inoue Seki
?
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみたAwsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Sunao Tomita
?
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまでやりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
Daisuke Masubuchi
?
Microsoft Azure SQLマネージド インスタンスのソースとしての利用
Microsoft Azure SQLマネージド インスタンスのソースとしての利用Microsoft Azure SQLマネージド インスタンスのソースとしての利用
Microsoft Azure SQLマネージド インスタンスのソースとしての利用
QlikPresalesJapan
?
SQL Azure Management and Security
SQL Azure Management and SecuritySQL Azure Management and Security
SQL Azure Management and Security
junichi anno
?
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
Daiyu Hatakeyama
?
[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba
[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba
[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba
Insight Technology, Inc.
?

More from Masayuki Ozawa (12)

Sql database managed instance overview and internals
Sql database managed instance overview and internalsSql database managed instance overview and internals
Sql database managed instance overview and internals
Masayuki Ozawa
?
Power apps formula cheat sheet
Power apps formula cheat sheetPower apps formula cheat sheet
Power apps formula cheat sheet
Masayuki Ozawa
?
K8s install (single cluster)
K8s install (single cluster)K8s install (single cluster)
K8s install (single cluster)
Masayuki Ozawa
?
Managed Instance チートシート
Managed Instance チートシートManaged Instance チートシート
Managed Instance チートシート
Masayuki Ozawa
?
Pacemaker 操作方法メモ
Pacemaker 操作方法メモPacemaker 操作方法メモ
Pacemaker 操作方法メモ
Masayuki Ozawa
?
Windows エンジニア向け sql server on linux のためのスキルアップデート
Windows エンジニア向け sql server on linux のためのスキルアップデートWindows エンジニア向け sql server on linux のためのスキルアップデート
Windows エンジニア向け sql server on linux のためのスキルアップデート
Masayuki Ozawa
?
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
Masayuki Ozawa
?
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Masayuki Ozawa
?
SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料
Masayuki Ozawa
?
SQL Server 現状診断サービス ご紹介資料
SQL Server 現状診断サービス ご紹介資料SQL Server 現状診断サービス ご紹介資料
SQL Server 現状診断サービス ご紹介資料
Masayuki Ozawa
?
Always on 可用性グループ 構築時のポイント
Always on 可用性グループ 構築時のポイントAlways on 可用性グループ 構築時のポイント
Always on 可用性グループ 構築時のポイント
Masayuki Ozawa
?
和牛をおいしく食べるには
和牛をおいしく食べるには和牛をおいしく食べるには
和牛をおいしく食べるには
Masayuki Ozawa
?
Sql database managed instance overview and internals
Sql database managed instance overview and internalsSql database managed instance overview and internals
Sql database managed instance overview and internals
Masayuki Ozawa
?
Power apps formula cheat sheet
Power apps formula cheat sheetPower apps formula cheat sheet
Power apps formula cheat sheet
Masayuki Ozawa
?
K8s install (single cluster)
K8s install (single cluster)K8s install (single cluster)
K8s install (single cluster)
Masayuki Ozawa
?
Managed Instance チートシート
Managed Instance チートシートManaged Instance チートシート
Managed Instance チートシート
Masayuki Ozawa
?
Pacemaker 操作方法メモ
Pacemaker 操作方法メモPacemaker 操作方法メモ
Pacemaker 操作方法メモ
Masayuki Ozawa
?
Windows エンジニア向け sql server on linux のためのスキルアップデート
Windows エンジニア向け sql server on linux のためのスキルアップデートWindows エンジニア向け sql server on linux のためのスキルアップデート
Windows エンジニア向け sql server on linux のためのスキルアップデート
Masayuki Ozawa
?
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
Masayuki Ozawa
?
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Masayuki Ozawa
?
SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料
Masayuki Ozawa
?
SQL Server 現状診断サービス ご紹介資料
SQL Server 現状診断サービス ご紹介資料SQL Server 現状診断サービス ご紹介資料
SQL Server 現状診断サービス ご紹介資料
Masayuki Ozawa
?
Always on 可用性グループ 構築時のポイント
Always on 可用性グループ 構築時のポイントAlways on 可用性グループ 構築時のポイント
Always on 可用性グループ 構築時のポイント
Masayuki Ozawa
?
和牛をおいしく食べるには
和牛をおいしく食べるには和牛をおいしく食べるには
和牛をおいしく食べるには
Masayuki Ozawa
?

Recently uploaded (11)

LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?

Sql server data store data access internals

  • 1. SQL Server Data Store & Data Access Internals Masayuki Ozawa Microsoft MVP for SQL Server (July 2011 - June 2014)
  • 2. 自己紹介 2014/03/22MVP Community Camp 20142 ? SQL Server を中心とした案件に携わりたいと思っているフリーランスの エンジニアです。 ? 主に IT Pro 領域の業務に携わっています。 … というより開発ができません。 何か案件のご相談がありましたらお声掛けください。 ? SQL Server の SQLTO / Azure の JAZUG というコミュニティで活動しています。 ? ブログでSQL Server を中心とした Microsoft 製品の情報を発信をしています。 ? SE の雑記 http://engineermemo.wordpress.com/ ? Twitter @Masayuki_Ozawa ? Facebook https://www.facebook.com/masayuki.ozawa
  • 3. 本日の Agenda 2014/03/22MVP Community Camp 20143 ? SQL Server Data Store Internals ? SQL Server Data Access Internals Deep Dive / Internals というようなセッションタイトルを聞くと グッとくる方向けの誰得情報になればいいかなと。
  • 4. 本日使用するクエリ 2014/03/22MVP Community Camp 20144 ? 本日は以下のクエリの動作を見ていきます ? SELECT Col2 FROM Table_1 WHERE Col1 = 40 ? SELECT COUNT(*) FROM Table_1 ? SELECT Col1 FROM Table_1 WHERE Col2 = 400 ? ぱっと見は単純なクエリ ? しかし、このクエリ、SQL Server の内部動作と 絡めると、とても奥が深いです!!
  • 5. SQL Server Data Store Internals 2014/03/22MVP Community Camp 20145
  • 6. Question : 内部動作はどうなるでしょう 2014/03/22MVP Community Camp 20146 ? SELECT Col2 FROM Table_1 WHERE Col1 = 40 1. Col1 = 40 と Col2 = 400 (対象の列) が取得される 2. Col1= 40 の行が取得される Col1 (int) Col2 (int) Col3 (nvarchar(100)) Col4 (nchar(450)) 10 100 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 20 200 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 30 300 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 40 400 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 50 500 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 60 600 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 70 700 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 80 800 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 90 900 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL ~ 省略 ~ 8000 80000 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
  • 7. Answer 2014/03/22MVP Community Camp 20147 ? 1. / 2. のどちらでもありません Col1 (int) Col2 (int) Col3 (nvarchar(100)) Col4 (nchar(450)) 10 100 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 20 200 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 30 300 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 40 400 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 50 500 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 60 600 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 70 700 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 80 800 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 90 900 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL ~ 省略 ~ 8000 80000 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL この範囲のデータが 取得されます
  • 8. SQL Server のデータストア 2014/03/22MVP Community Camp 20148 ? 行ストア (Row Store) ? 行単位でデータを格納する ? デフォルトのデータストア方式 ? 列ストア (Column Store) ? 行のデータを列単位で格納する ? SQL Server では Column Store Index を使用 ? 今回の内容は一般的な行ストアについて ? 列ストアや In-Memory OLTP だとちょっと違ってきます Col1 Col2 Col3 Col4 10 100 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 20 200 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 30 300 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 40 400 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 50 500 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
  • 9. データ格納単位 2014/03/22MVP Community Camp 20149 ? 行 (レコード) が最小のデータ単位だが内部ではページで格納 ? ページ : 8KB のデータ格納領域 ? 8 ページをまとめたものをエクステントとして管理 (64KB) ? ページレベルでチェックサムを保持しいている 行データ (最大 8,060 バイト) 行オフセット (レコードの位置情報) ページの構造 8KB ページ 行ヘッダー (96 バイト) エクステント (64KB) ページ ページ ページ ページ ページ ページ ページ ページ
  • 10. 先ほどのテーブルの実際の格納状態 2014/03/22MVP Community Camp 201410 列 バイト数 Col1 4 Col2 4 Col3 72 Col4 900 合計 980 Col1 (int) Col2 (int) Col3 (nvarchar(100)) Col4 (nchar(450)) 10 100 xxxxxxxx NULL 20 200 xxxxxxxx NULL 30 300 xxxxxxxx NULL 40 400 xxxxxxxx NULL 50 500 xxxxxxxx NULL 60 600 xxxxxxxx NULL 70 700 xxxxxxxx NULL 80 800 xxxxxxxx NULL 90 900 xxxxxxxx NULL ~ 省略 ~ 8000 80000 xxxxxxxx NULL 8060 / 980 = 8 レコード 全レコード数 = 800 レコード ページ #1 ページ #2 ページ #100
  • 11. Undocumented Command 2014/03/22MVP Community Camp 201411 ? SQL Server の Books Online (SQL Server のヘルプドキュメント) には記載 されておらず公開されていないコマンド ? 主に内部情報を取得するために使用 ? Undocumented DBCC ? Undocumented Function ? Undocumented Dynamic Management View ? Undocumented Trace Flag
  • 12. 2014/03/22MVP Community Camp 201412 レコードの格納状態を確認
  • 13. データの密度を考える 2014/03/22MVP Community Camp 201413 ? ポイント ? データの密度が高い = 1 ページに格納されているレコード数が多い ? ディスクとメモリ間の I/O はページ単位で実施される ? レコード単位ではない ? エクステント単位 (64KB = 8 ページ)で実施されることもある メモリ ディスク DB Col1 Col2 Col3 Col4 10 100 xxxxxxxx NULL 20 200 xxxxxxxx NULL 30 300 xxxxxxxx NULL 40 400 xxxxxxxx NULL ~ 省略 ~ 8000 80000 xxxxxxxx NULL ページ ページ ページページ データをキャッシュする = ページをキャッシュする
  • 14. データ密度を上げるには 2014/03/22MVP Community Camp 201414 ? 固定長のデータ型が必要かを検討 ? char / nchar で格納する必要があるか?? ? 固定長データ型のメリット ? 格納するデータ長の変更を受けにくい ? 断片化の発生を抑えることができる ? データの圧縮機能を使用 ? SQL Server のデータ圧縮は圧縮されたデータをディスク/メモリ上に格納する ? CDA (Compression Data Array) 形式でデータを格納し圧縮 ? ディスク使用量 / メモリ使用量 / ディスク I/O を抑えることが可能 (ただし CPU 負荷とのトレードオフ) ? Enterprise Edition の機能 ? SQL Database (Windows Azure) では全エディションで使用可能
  • 15. 断片化 2014/03/22MVP Community Camp 201415 ? ページ内の格納領域が不足した場合に、新規のページにデータの半分 を移動して空き領域を確保 (50/50分割) Col1 Col2 Col3 Col4 10 100 xxxxxxxx NULL 20 200 xxxxxxxx NULL 30 300 xxxxxxxx NULL 40 400 xxxxxxxx NULL 50 500 xxxxxxxx NULL 60 600 xxxxxxxx NULL 70 700 xxxxxxxx NULL 80 800 xxxxxxxx NULL Col1 Col2 Col3 Col4 10 100 xxxxxxxx NULL 20 200 xxxxxxxx NULL 25 250 xxxxxxxx NULL 30 300 xxxxxxxx NULL 空き領域 Col1 Col2 Col3 Col4 40 400 xxxxxxxx NULL 50 500 xxxxxxxx NULL 60 600 xxxxxxxx NULL 70 700 xxxxxxxx NULL 80 800 xxxxxxxx NULL 空き領域 Col1 Col2 Col3 Col4 25 250 Xxxxxxxx NULL
  • 16. 断片化による影響 2014/03/22MVP Community Camp 201416 ? ページ内の密度が下がる ? データの取得に複数のページを読み込む必要がある ? FILLFACTOR を設定することで事前に空き領域を確保しておくことが可能 ? ページ内に空きがあったとしても 8KB のサイズはメモリに確保される (データが書き込まれている領域のみキャッシュされるわけではない) ? ページの連続性がなくなる (Extent Scan Fragmentation) ? 連続したデータを読むのにアクセスコストが高くなる ? 一般的なアクセスコスト : ランダムアクセス > シーケンシャルアクセス ページ #1 ページ #2 ページ #3 ページ #100
  • 17. 2014/03/22MVP Community Camp 201417 ディスクとメモリ間のデータアクセス 断片化を確認
  • 18. SQL Server Data Access Internals 2014/03/22MVP Community Camp 201418
  • 19. Question 2 : 内部動作はどうなるでしょう 2014/03/22MVP Community Camp 201419 ? SELECT COUNT(*) FROM Table_1 1. 内部のメタデータから件数が取得される 2. テーブル全体を検索する Col1 (int) Col2 (int) Col3 (nvarchar(100)) Col4 (nchar(450)) 10 100 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 20 200 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 30 300 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 40 400 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 50 500 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 60 600 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 70 700 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 80 800 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 90 900 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL ~ 省略 ~ 8000 80000 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
  • 20. Answer 2014/03/22MVP Community Camp 201420 ? 2. テーブル全体を検索します。 Col1 (int) Col2 (int) Col3 (nvarchar(100)) Col4 (nchar(450)) 10 100 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 20 200 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 30 300 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 40 400 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 50 500 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 60 600 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 70 700 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 80 800 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 90 900 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL ~ 省略 ~ 8000 80000 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL Full Scan
  • 21. Scan と Seek 2014/03/22MVP Community Camp 201421 ? Scan ? データをすべて走査 ? Table Scan ? Clustered Index Scan ? Index Scan ? Seek ? 特定の範囲のデータを走査 ? Clustered Index Seek ? Index Seek ? 一般的な I/O コストとしては Scan > Seek ? 過度な Scan は I/O コストだけでなく、CPU コストにもつながる
  • 23. 実行プランを確認 #2 2014/03/22MVP Community Camp 201423 SET STATISTICS PROFILE ON SELECT COUNT(*) FROM Table_1
  • 24. 件数取得の注意点 2014/03/22MVP Community Camp 201424 ? 非クラスター化インデックスが設定されていないテーブルへの COUNT はテーブルスキャンが行われる ? 非クラスター化インデックスのないテーブルへの COUNT はコストが高い ? Non Clustered Index Scan も該当インデックスの全件スキャンではあるが、イン デックス列のスキャンになるので I/O コストは Clustered Index Scan より低い ? 概算の件数取得でよい場合は sys.dm_db_partition_stats を利用 ? オブジェクト単位のデータ格納状況を取得するための動的管理ビュー ? 大量のデータ変更をした後などは実際の件数と差が出ることがあるが、 瞬時に件数を取得することが可能
  • 25. 2014/03/22MVP Community Camp 201425 件数取得の動作確認
  • 26. Col1 (int) Col2 (int) Col3 (nvarchar(100)) Col4 (nchar(450)) 10 100 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 20 200 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 30 300 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 40 400 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 50 500 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 60 600 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 70 700 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 80 800 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 90 900 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL ~ 省略 ~ 8000 80000 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL Question : 内部動作はどうなるでしょう 2014/03/22MVP Community Camp 201426 ? SELECT Col1 FROM Table_1 WHERE Col2 = 400 1. Col1 (クラスター化インデックス) と Col2 (非クラスターインデックス) のデータを利用 2. Col2 (非クラスターインデックス) だけで完結
  • 27. Answer 2014/03/22MVP Community Camp 201427 ? 1. / 2. のどちらも正解と言えなくもない ? クラスター化インデックスが設定されているテーブルの非クラスター 化インデックスにはクラスター化インデックスの列が含まれる インデックス 項目 クラスター化 インデックス項目 100 10 200 20 300 30 400 40 500 50 600 60 700 70 800 80 900 90 実データへの リンク Col1 (int) Col2 (int) Col3 (nvarchar(100)) Col4 (nchar(450)) 10 100 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 20 200 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 30 300 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 40 400 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 50 500 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 60 600 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 70 700 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 80 800 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL 90 900 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL ~ 省略 ~ 8000 80000 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx NULL
  • 28. 非クラスター化インデックス 2014/03/22MVP Community Camp 201428 ? 行を高速に特定するための索引 ? インデックスが設定されていない項目に対しての検索は Scan が行われる ? 必要なデータのみを取得するためのデータ格納領域 ? クラスター化インデックス = 行の実体 (キー項目順でデータを格納する) ? 非クラスター化インデックス = 指定項目のみ ? インデックスに格納されている項目のみを取得することでクエリが完結するの がベスト ? カバードインデックス ? 付加列インデックス ? フィルタされたインデックス
  • 29. 2014/03/22MVP Community Camp 201429 非クラスター化インデックスの動作確認
  • 30. 最後に 2014/03/22MVP Community Camp 201430 ? 今回はシンプルなクエリを例にしていますが、基本的な考えは複雑な クエリでも変わりません。 ? テーブル最適化 / インデックス最適化の目的 →データを効率よく格納し、データを効率よく取得する ? 今回は参照系の処理でお話をしましたが、更新系の処理についても単 純な処理でも奥が深いので興味ある方は是非調べてみてください!! ? 懇親会にも参加していますので、質問等ありましたらお声掛け下さい ? 仕事のご相談も大歓迎です!!