More Related Content
PDF
45分で理解する SQL Serverでできることできないこと PDF
[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura PDF
PDF
MySQL 5.7 Technical Update (日本語) PDF
C13 SQL Server2012知られざるTips集 by 平山理 PDF
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama PDF
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料 PDF
States of Dolphin - MySQL最新技術情報2013秋 - What's hot
PDF
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング PDF
パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦 PDF
20150131 ChugokuDB-Shimane-MySQL PDF
PDF
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか PDF
DBP-008_SQL Server on Azure VM 最新情報とベスト プラクティス PDF
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能 PDF
PostgreSQL9.1同期レプリケーションとPacemakerによる高可用クラスタ化の紹介 PDF
Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男 PDF
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い PPT
障害とオペミスに備える! ~Oracle Databaseのバックアップを考えよう~ PDF
PDF
Corruption And Revive - db tech showcase 2013 特濃JPOUG PDF
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0) PDF
MySQL57 Update@OSC Fukuoka 20151003 PDF
第九回中国地方DB勉強会 in 米子 MySQL 5.7+ PDF
PDF
Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男 PPTX
[db tech showcase 2017 Tokyo] A23 - MySQLのセキュリティ関連機能の現状 PDF
Viewers also liked
PPTX
Sql server これだけはやっておこう 最終版 PDF
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ PPTX
PDF
SQL Server 現状診断サービス ご紹介資料 PPTX
PDF
SQL Server運用実践 - 3年間80台の運用経験から20の教訓 PDF
OSSV [Open System SnapVault] PDF
Board support package_on_linux PDF
Linux for embedded_systems PPT
Kernel module programming PPT
Driver development – memory management PDF
STelligence Savvius Thai Datasheet PDF
KEY
FRT Vol. 5 クラウド時代の企業アプリケーションとマーケティング PPT
Caching Data For Performance PPT
MoodleMoot Brasil 2011 - O Moodle na UFSC (Infraestrutura de TI) PDF
SQL Server 簡易診断サービス ご紹介資料 PDF
Global Knowledge Training Courses & Promotion 2015-Sep PPT
Trabalhando com o Moodle e a Comunidade PDF
ThaiCert Phishing and Malicious Code Infographic 2015 Similar to [INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)
PDF
RWC2012(ワコムアイティ&テクノプロジェクト) PDF
PPTX
PDF
PDF
PDF
PDF
VSUG Day 2010 Summer Tokyo - keynote PDF
PDF
PDF
New Integration "X" 新インテグレーションソリューション PDF
PDF
これからの「アジャイル」の話をしよう 2012 ――今を生き延びるための開発手法とエンジニアに求められるスキル PDF
20121130 solaris-11.1-day.ohsone PDF
【17-C-1】 Big Data を扱うアーキテクチャーの原則 PDF
PDF
PDF
20120302 第4回iocj info_scoop_sfdc連携紹介 PDF
PDF
PDF
More from Insight Technology, Inc.
PDF
PDF
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 PDF
PDF
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー PDF
SQL Server エンジニアのためのコンテナ入門 PPTX
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』... PPTX
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介 PPTX
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ... PDF
Docker and the Oracle Database PDF
PDF
PPTX
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018] PPTX
難しいアプリケーション移行、手軽に試してみませんか? PDF
db tech showcase2019 オープニングセッション @ 石川 雅也 PDF
Lunch & Learn, AWS NoSQL Services PDF
db tech showcase2019オープニングセッション @ 森田 俊哉 PDF
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン PPTX
PDF
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~ PDF
Recently uploaded
PDF
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと... PDF
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup PPTX
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool PDF
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2 PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1 [INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)
- 1.
- 2.
Agenda
• 1.SQL Serverってどうなの?
•2.SQL Serverでできることできないこと
– 2-1.ロックの仕様の違いを理解する
– 2-2.オブジェクトの仕様の違いを理解する
– 2-3.パフォーマンス管理ツールを理解する
• 3.まとめ
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 2
- 3.
- 4.
SQL Serverのイメージ
• SQLServerといえば・・・?
出荷本数シェァNo.1 GUIによる高いユーザビリティ
洗練されたBI機能 オールインワンによる低コスト
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 4
- 5.
現場の本音
これからOracle以外の
これから Oracle以外で提案すると
Oracle
DBを覚えるのが大変 失敗した時に「何でOracleに
失敗した時に「何で
しなかった」と言われそう
ロック待ちが多発
SQL Server
Serverができる⼈
するんじゃない?
って誰かいたっけ?
チューニングって
できないんでしょ?
この前導入した案件は
うまくいかなかった
らしい・・・
•アプリケーション開発者 •お客様に提案する⽴場の⼈
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 5
- 6.
- 7.
- 8.
SQL Serverでできることできないこと
• 理解すべきポイント
設計フェーズ 開発フェーズ 運用フェーズ
•ロックの仕様の •オブジェクトの •パフォーマンス
違いを理解する 仕様の違いを 管理ツールを
理解する 理解する
フェーズが後になればなるほど手戻りも増大!
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 8
- 9.
- 10.
設計フェーズ
ロックの仕様の違いを理解する 開発フェーズ
運用フェーズ
運用 フェーズ
ロックの仕様の違いを理解するポイント
•トランザクション分離レベル
•ロックエスカレーション
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 10
- 11.
設計フェーズ
ロックの仕様の違いを理解する 開発フェーズ
運用フェーズ
運用 フェーズ
• トランザクション分離レベル
– 同時に複数のトランザクションが実⾏した時の影響を定義
– Oracle、SQL Server共にread committed
– Read Committed…コミットしたデータが読める隔離レベル
Read Committed
Oracle
マルチバージョニング⽅式(オプティミスティック同時実⾏制御)
- 対象となるリソースに対して排他ロックを取得
- 排他ロック取得中でも更新前コミット済みデータが⾒れる
- 更新前データはUndo Segmentに保持
SQL Server
ロック⽅式(ペシミスティック同時実⾏制御)
- 対象となるリソースに対して排他ロックを取得
- 排他ロック取得中は他の処理を待機させる
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 11
- 12.
設計フェーズ
OracleとSQL Serverの動き方 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
Oracle SQL Server
マルチバージョニング⽅式 ロック⽅式
トランザクションA開始 トランザクションA開始
トランザクションB開始 トランザクションB開始
UserA:400 UserA:400
UserB:200 UserB:200
Update 売上 Update 売上
Set 売上 = 売上 + 100 Set 売上 = 売上 + 100
Where ID = ‘UserA’; Where ID = ‘UserA’;
UserA:500 UserA:500
UserB:200 UserB:200
Select * From 売上; Select * From 売上;
UserA:500 トランザクションAが
ロック待ち
UserB:200 更新する前の値を参照
UserA:400
Commit; Commit;
UserB:200
Commit; Commit;
ロック待ち解放
UserA:500
UserB:200
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 12
- 13.
設計フェーズ
トランザクション分離レベルの変更 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• Oracleの仕様を前提に開発する場合、SQL Serverのトランザ
クション分離レベルをRead Committed Snapshotに変更する
SQL Server
Read Committed
Oracle
Read Committed ≒ Read Committed Snapshot
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 13
- 14.
設計フェーズ
Read CommittedSnapshot時の動き 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
Select⽂実⾏時
トランザクションA開始
トランザクションB開始
UserA:400 インデックスの
UserB:200
Update 売上 有無は関係無
Set 売上 = 売上 + 100
Where ID = ‘UserA’;
UserA:500
UserB:200
Select * From 売上;
更新前データは
tempDBに保持 トランザクションAが
更新する前の値を参照
UserA:400
Commit;
UserB:200
Commit;
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 14
- 15.
設計フェーズ
SQlServerのRead Committed 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• 気を付けるべきポイント
– Update文やDelete文の実⾏には注意が必要!
⇒インデックスの有無で動きが大きく異なる
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 15
- 16.
設計フェーズ
OracleとSQL Serverの動き方 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
トランザクションA開始
トランザクションB開始
UserA:400
UsarB:200
Update 売上
Set 売上 = 売上 + 100
Where ID = ‘UserA’;
Select * From 売上;
IDにインデックス有 IDにインデックス無
トランザクションAが ロック待ち発生!
更新する前の値を参照
Commit; Commit;
UserA:400
UserB:200
UserA:500 UserA:500
UserB:200 UserB:200
ロック待ち解放
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 16
- 17.
設計フェーズ
SQL Serverのロック 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• SQL Serverではロックを考慮した設計した設計が必要
– ⾏を大量にロックするような処理はなるべく控える
– アプリケーションはできるだけショートトランザクションにする
– Update文やDelete文で指定する条件の項目にはインデックスは必須
– ロック待ちやデッドックの情報を取得しておく
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 17
- 18.
設計フェーズ
ロックの仕様の違いを理解する 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• ロックエスカレーション(SQL Serverのみ)
– 粒度の⼩さいロックを変換し粒度が大きいロックにする動き
– ロックエスカレーションが発生する条件
• メモリリソースのしきい値
– SQL Serverが使用するメモリの40%を超えた場合
• ロック数のしきい値
– 1SQLステートメントで5000以上のロックを取得する場合
– ロックエスカレーションを使用しないようにするには・・・
• Trace flag 1211で制御
• ※テーブル単位の場合
alter table [テーブル名] set ( LOCK_ESCALATION = DISABLE );
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 18
- 19.
設計フェーズ
Oracleのようにした場合・・・ 開発フェーズ
運用フェーズ
運用 フェーズ
トランザクション分離レベル ロックエスカレーション
Read Committed
Trace flag 1211に設定
Read Committed Snapshot (ロックエスカレーションOFF)
オーバーヘッドはどうなるか?
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 19
- 20.
設計フェーズ
オーバーヘッド 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• Read Committed Snapshotのオーバーヘッド
50 100 150
TPS
142 100%
Read Committed
100%
TPS
128 90% I/O req/sec@tempdb
Read Committed Snapshot
30 30,000%
I/O req/sec
30 @tempdb
10 20
• ロックエスカレーションさせない場合のリソースの変化
50 100 150
TPS
Read Committed 69 100%
with Lock Escalation 171 100%
TPS
136 198% Memory Size@Lock
Read Committed
With trace flag 1211 184 108%
Memory Size(MB)
100 150 200 @Lock
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 20
- 21.
- 22.
設計フェーズ
オブジェクトの仕様の違いを理解する 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
オブジェクトの仕様を理解するポイント
シーケンス
パーティション
マテリアライズドビュー
PL/SQL
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 22
- 23.
設計フェーズ
オブジェクトの仕様の違いを理解する 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
オブジェクトの仕様を理解するポイント
シーケンス
パーティション
マテリアライズドビュー
PL/SQL
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 23
- 24.
設計フェーズ
SQLServer de シーケンス 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
Sequence
・連続した数値を采番するオブジェクト
・複数のセッションからでもユニークな値を采番可能
・SQL Serverにはオブジェクトとして采番するものは存在しない
⇒采番する機能としてはIdentity属性が該当
Oracle:シーケンス SQL Server:Identity
・値を自動的に采番 ・○値を自動的に采番
・オブジェクトとして作成 ・×オブジェクトとして作成
・特定のカラムに依存しないで采番可能 ・×特定のカラムに依存しないで采番可能
・増分値や開始値が設定可能 ・○増分値や開始値が設定可能
・最大値が設定可能 ・△最大値はデータ型の最大値固定
・⽂字列のカラムにも指定可能 ・○⽂字列のカラムにも指定可能
・カラム属性として定義可能 ・○カラムの属性として定義可能
・※1つのテーブルに1つのみ作成可能
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 24
- 25.
設計フェーズ
SQLServer de シーケンス 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• SQL Serverでシーケンスを理解するポイント:
⇒SQL ServerのIdentityでOracleのシーケンスのような動
きがどこまでできるのか?
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 25
- 26.
設計フェーズ
SQL Server de シーケンス 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
Oracle:シーケンス SQL Server:Identity
■シーケンス作成
CREATE SEQUENCE seq_1
START WITH 1
INCREMENT BY 1
MAXVALUE 1
MINVALUE 10000;
※テーブルの属性として定義する場合 ※テーブルの属性として定義する場合
CREATE TABLE table1 CREATE TABLE table1
(col1 NUMBER DEFAULT seq_1.NEXTVAL (col1 int IDENTITY(1,1),
col2 NUMBER); col2 int);
■番号取得⇒更新 ■番号取得⇒更新
DECLARE v_seq NUMBER; INSERT INTO table1 (col2)
SELECT seq_1.NEXTVAL INTO v_seq FROM DUAL; OUTPUT inserted.col1
VALUES(100) ;
INSERT INTO table1
VALUES (v_seq,100);
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 26
- 27.
設計フェーズ
SQLServer de シーケンス 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• ちなみに・・・
• SQL Server次期バージョンリリース
ポイント
シーケンスオブジェクトが追加
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 27
- 28.
設計フェーズ
SQL Serverde シーケンス 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
Oracle:シーケンス SQL Server:シーケンス
・値を自動的に采番 ・○値を自動的に采番
・オブジェクトとして作成 ・○オブジェクトとして作成
・特定のカラムに依存しないで采番可能 ・○特定のカラムに依存しないで采番可能
・増分値や開始値が設定可能 ・○増分値や開始値が設定可能
・最大値が設定可能 ・○最大値が設定可能
・⽂字列のカラムにも指定可能 ・○⽂字列のカラムにも指定可能
・カラム属性として定義可能 ・○カラム属性として定義可能
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 28
- 29.
設計フェーズ
SQL Server de シーケンス 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
Oracle:シーケンス SQL Server:シーケンス
■シーケンス作成 ■シーケンス作成
CREATE SEQUENCE seq_1 CREATE SEQUENCE seq_1 AS INT
START WITH 1 MINVALUE 1
INCREMENT BY 1 MAXVALUE 100000
MAXVALUE 1 START WITH 1
MINVALUE 10000; INCREMENT BY 1;
※テーブルの属性として定義する場合 ※テーブルの属性として定義する場合
CREATE TABLE table1 CREATE TABLE table1
(col1 NUMBER DEFAULT seq_1.NEXTVAL (col1 NUMBER DEFAULT NEXT VALUE
col2 NUMBER); col2 NUMBER);
■番号取得⇒更新 ■番号取得⇒更新
DECLARE v_seq NUMBER;
SELECT seq_1.NEXTVAL INTO v_seq FROM DUAL; DECLARE @v_seq INT = NEXT VALUE FOR seq_1;
INSERT INTO table1 VALUES (v_seq,100); INSERT INTO table1 VALUES (@v_seq,100);
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 29
- 30.
設計フェーズ
オブジェクトの仕様の違いを理解する 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
オブジェクトの仕様を理解するポイント
シーケンス
パーティション
マテリアライズドビュー
PL/SQL
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 30
- 31.
設計フェーズ
SQLServer de パーティション 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
Partitioning
・1 つのテーブルを一定の基準で分割する
- 複数パーティションに格納されたデータをパラレルに抽出可能
- データ抽出範囲(障害範囲)の極⼩化
・アプリケーションから透過的
Oracle:パーティション SQL Server:パーティション
・パーティションによる負荷分散 ・○パーティションによる負荷分散
・パーティション可能なオブジェクト ・○パーティション可能なオブジェクト
-テーブル、インデックス -テーブル、インデックス
・パーティション⽅式を選択可能 ・×パーティション⽅式を選択可能
-レンジ/リスト/ハッシュ △ -レンジ/リスト/ハッシュ
・パーティション毎にバックアップが可能 ・○パーティション毎にバックアップが可能
・障害範囲の極小化 ・○障害範囲の極小化
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 31
- 32.
設計フェーズ
SQLServer de パーティション 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• パーティションの種類
SQL Server
レンジパーティション でも使用可能 リストパーティション ハッシュパーティション
売上テーブル 売上テーブル 売上テーブル
date tokid Id
2008 TOKA 1
2008 2008年 TOKA 得意先A 103 Hash key 1
2008 TOKA 177
date tokid
2009 TOKB 2
2009 2009年 TOKB 得意先B 333 Hash key 2
2009 TOKB 457
date Tokid
2010 TOKC 8
2010 2010年 TOKC 得意先C 128 Hash key 3
2010 TOKC 134
date tokid
2011 TOKD 9
2011 2011年 TOKZ その他 113 Hash key 4
2011 TOKN 198
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 32
- 33.
設計フェーズ
SQL Serverde パーティション 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• パーティションのポイント:
⇒パーティションのパフォーマンスは?
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 33
- 34.
設計フェーズ
SQLServer de パーティション 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• SQL Serverパーティション
– パーティションによる負荷分散
非partitioned partitioned ・1,000,000件データ
table table
・select count(*)
・非Partitioned table
… 7.8GB 8分14秒
Physical Physical Physical ・・・
Table Partition Partition ・Partitioned table
… 7.8GB 4分03秒
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 34
- 35.
設計フェーズ
SQL Serverde パーティション 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• ちなみに・・・
– SQL Serverのデータ圧縮と組み合わせることで高速化可能
•パーティション分割のみ •パーティション分割+データ圧縮
・1,000,000件データ ・1,000,000件データ
・select count(*) ・select count(*)
・非Partitioned table ・非Compression table
… 7.8GB 8分14秒 … 7.8GB 8分14秒
・Partitioned table ・Compression table
… 7.8GB 4分03秒 … 20.8MB 1.3秒
シーケンスだけ
異なるほぼ同じデータを
ページ単位で圧縮
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 35
- 36.
設計フェーズ
オブジェクトの仕様の違いを理解する 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
オブジェクトの仕様を理解するポイント
シーケンス
パーティション
マテリアライズドビュー
PL/SQL
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 36
- 37.
設計フェーズ
SQLServer de マテビュー 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
Materialized View
・実体のあるビューのこと
・マテビューへの更新タイミングは任意に指定可能
・DBリンクと組み合わせることで、テーブルレプリケーションも可能
・SQL Serverではインデックス付きビューが最も近い機能
Oracle:マテリアライズドビュー SQL Server:インデックス付きビュー
・マテビューへデータを反映する ・×マテビューへデータを反映する
タイミングは任意に指定可能 タイミングは任意に指定可能
- 完全リフレッシュ × - 完全リフレッシュ
- 高速リフレッシュ(On Demand) × - 高速リフレッシュ(On Demand)
- 高速リフレッシュ(On Commit) × - 高速リフレッシュ(On Commit)
・クエリーリライト機能(クエリを自動 ・○クエリーリライト機能(クエリを自動
で書き換え) で書き換え)
・DBリンクと組み合わせてテーブル単位 ・× DBリンクと組み合わせてテーブル単位
のレプリケーション のレプリケーション
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 37
- 38.
設計フェーズ
SQL Serverde マテビュー 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• インデックス付きビュー
– 通常のビューを作成し、そのビューにインデックスを作成
– 作成するインデックスはクラスタインデックスのみ
• クラスタインデックス≒Oracleの索引構成表
– インデックス付きビュー作成例
– 基テーブル
Sales.SalesOrderHeader ( AdventureWorks DBを使用)
– ビューの作成
CREATE VIEW v_SalesOrderCount WITH SCHEMABINDING AS
SELECT SOH.CustomerID, COUNT_BIG(*) order_cnt
FROM Sales.SalesOrderHeader SOH
GROUP BY SOH.CustomerID;
– インデックス付きビューの作成
CREATE UNIQUE CLUSTERED INDEX v_SalesOrderCount_idx
ON v_SalesOrderCount(CustomerID)
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 38
- 39.
設計フェーズ
SQLServer de マテビュー 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• SQL Server de マテビューのポイント:
⇒制約の多さ+パフォーマンス
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 39
- 40.
設計フェーズ
SQL Serverde マテビュー 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• インデックス付きビューの懸念点
– インデックス付きビューの制約
• インデックス付きビュー内で他のビューは参照不可
• 外部結合または⾃⼰結合は不可
• ORDER BY句は不可
• UNION、EXCEPT、INTERSECT句は不可
• DISTINCTオプションは不可
• AVG、MAX、MIN、STDEV、STDEVP、VAR、または VARP 集計関数は不可
• ⇒ただし、SUM関数やCOUNT_BIG関数と一緒に使うことは可能
– パフォーマンス懸念点
• 基テーブル更新時のオーバーヘッド
• トランザクションの同時実⾏性
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 40
- 41.
設計フェーズ
オブジェクトの仕様の違いを理解する 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
オブジェクトの仕様を理解するポイント
シーケンス
パーティション
マテリアライズドビュー
PL/SQL
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 41
- 42.
設計フェーズ
4.SQLServer de PL/SQL(拡張SQL) 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
PL/SQL(拡張SQL)
・SQLを拡張して手続き型言語として作成可能
・業務ロジックをデータベースに実装可能
・プロシージャやファンクション、トリガー等をストアドとして定義
・SQL ServerではTransact-SQLが該当
Oracle:PL/SQL SQL Server:Transact-SQL
・パッケージ、プロシージャ、 ・△パッケージ、プロシージャ、
ファンクション、トリガー ファンクション、トリガー
・変数、定数、CURSORの定義 ・○変数、定数、 CURSORの定義
・FOR LOOP、WHILE、IF⽂の使用 ・○FOR LOOP、WHILE、IF⽂の使用
・動的SQLの使用 ・○動的SQLの使用
・エラーハンドリング ・○エラーハンドリング
・ストアドとして定義 ・○ストアドとして定義
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 42
- 43.
設計フェーズ
SQL Server Migration Assistantとは 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• PL/SQLをより詳細に比較する為に・・・
– ツールを使用してPL/SQLを比較
• SQL Server Migration Assistant for Oracle(SSMA)
• SQL Server Migration Assistant for Oracle(SSMA)
– データベースのマイグレーションを分析、評価、支援するツール
– スキーマのマイグレーション
– PL/SQLをTransact-SQLにマイグレーション
– 一部の関数やシーケンスは、SSMAがエミューレート
– Microsoft社から無償で提供
– 最新は5.1。最新はDenaliにも対応(らしい)
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 43
- 44.
設計フェーズ
SSMAの画面 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
Oracle:PL/SQL SQL Server:Transact-SQL
エラー一覧
(資料: http://blogs.msdn.com/b/ssma/archive/2010/11/30/video-creating-custom-ssma-report.aspx )
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 44
- 45.
設計フェーズ
SSMAの結果 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
SSMAによるオブジェクト変換率
オブジェクト変換率(PL/SQL以外) PL/SQL変換率
Object type Total With errors Converted Object type Total With errors Converted
index 2735 17 99% function 294 74 75%
schema 21 18 14% package 1958 1571 20%
sequence 177 0 100% packaged-function 9640 2899 70%
synonym 16 15 6% packaged-procedure 2429 1104 55%
table 7008 867 88% private-packaged-function 1239 466 62%
view 1100 269 76% private-packaged-procedure 1693 452 73%
Total 11057 1186 89% procedure 1145 586 49%
trigger 2744 1705 38%
Total 21142 8857 58%
タイプ型変換率
Object type Total With errors Converted
collection-type 6 6 0%
object-type 6 6 0%
packaged-type 2927 0 100%
private-packaged-type 561 0 100%
Total 3500 12 100%
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 45
- 46.
設計フェーズ
PL/SQL変換エラーTop.8 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
関数一覧(使用数別)
SQL文が不正 58168
関数が変換不可 13594
%type等型の変数の使用 6562
SQLCODE、SQLERRMの不正使用 4223
動的に作成されたクエリは手動変換が必要 2029
関数内ではグローバルカーソルを使用不可 1672
定義が不正な変数(%type等)の使用 979
ROWIDは使用不可 449
0 20000 40000 60000
使用数
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 46
- 47.
設計フェーズ
PL/SQL変換エラーTop.8 詳細 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
Package/Procedure/Function/Trigger/View
Messages Cause Workaround 件数
SQL文の不正
- SELECT句のカラム VIEWのコンパイルエラー VIEWのエラー原因を特定
- INTO句で指定した変数 変数の宣言エラー(%type等) 変数の定義し直し 58168
- SQLの構文が不正 SQL Serverに未対応のSQL文 SQL文の書き換え
(Merge文)
関数が変換不可
⇒別ページ参照 ⇒別ページ参照 13594
(SUBSTRB関数やDBMS_OUTPUTなど)
%type等型の変数の使用 SQL Serverに%typeや%rowtypeが存在しない 変数の定義し直し 6562
EXCEPTION ブロック外でSQLCODE、SQLERRM
SQLCODE、SQLERRMの不正使用 仕様の確認、構文の修正 4223
を使用
動的SQL⾃体は実⾏可
動的に作成されたクエリは手動での変換が必要 変換後のSQL文を確認 2029
組み替えられたSQLは確認が必要
関数内ではグローバルカーソルを使用不可 グローバルカーソル 1672
定義が不正な変数(%type等)の使用 %typeで定義された変数を計算式等で使用している変数の定義を確認 979
ROWIDは使用不可 ROWIDはSQL Serverに存在せず 主キーを指定するよう変更 449
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 47
- 48.
設計フェーズ
関数エラー Top.8 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
関数一覧(使用数別)
SUBSTRB 12067
LENGTHB 530
MAX 168
UTL_FILE 166
INSTRB 128
DBMS_SQL 100
DBMS_OUTPUT 91
TO_MULTI_BYTE 85
0 5000 10000 15000
使用数
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 48
- 49.
設計フェーズ
関数エラー Top.8 詳細 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
Function Cause 件数
SUBSTRB SUBSTRB関数に対応する関数がない 12067
LENGTHB LENGTHB関数に対応する関数がない 530
GROUP BY句が不正
MAX GROUP BYで関数を使用 168
不正なVIEWの使用
UTL_FILE ほとんどがUTL_FILE.FCLOSE_ALLが使用不可 166
INSTRB INSTRB関数に対応する関数がない 128
DBMS_SQL ほとんどがDBMS_SQL.COLUMN_VALUEが使用不可 100
DBMS_OUTPUT DBMS_OUTPUT.DISABLE/ENABLEが使用不可 91
TO_MULTI_BYTE INSTRB関数に対応する関数がない 85
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 49
- 50.
設計フェーズ
SSMAでの変換エラー Top.8 ~PL/SQL以外~ 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
Table/Index/Synonym/Sequence
Messages Workaround LEVEL 件数
PUBLIC SYNONYMの使用 スキーマ毎にSYNONYMを作成 Warning 1797
NUMBER型の桁数未指定 仕様確認後桁数を定義 Warning 182
シーケンスが変換できない 2-2参照 Warning 173
一時テーブルの使用 セッション単位で一時テーブルを作成 Warning 64
マテリアライズドビューの使用 2-2参照 Error 49
RANGE PARTITIONの使用 SSMAでは自動変換されない Error 41
LIST PARTITIONの 使用 2-2参照 Error 30
INDEXのカラム数が多すぎ INDEXの見直し Error 30
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 50
- 51.
- 52.
設計フェーズ
パフォーマンス管理ツールを理解する 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
パフォーマンス管理ツール
パフォーマンスデータコレクション
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 52
- 53.
設計フェーズ
パフォーマンス管理ツール 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• パフォーマンスデータコレクション
– SQL ServerやOSのパフォーマンス情報を収集
– 過去データも参照可能(SQL Server2008)
– OracleのEnterprise ManagerやStatspackと同等
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 53
- 54.
設計フェーズ
パフォーマンスデータコレクション 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• クエリ統計
– 負荷の高いSQLTOP10の抽出が容易
•クエリ統計によるレポート画面
• 実⾏時間の⻑いSQL
• CPU使用時間の⻑いSQL
• 物理読み込みの多いSQL
• 論理書き込みの多いSQL
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 54
- 55.
設計フェーズ
パフォーマンスデータコレクション 開発フェーズ
開発 フェーズ
運用フェーズ
運用 フェーズ
• 抽出したSQLのチューニング
①.SQLの
統計データ表示
②.サンプリ
ングされた待
機情報表示
③.SQLの
実⾏計画表示
•Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 55
- 56.
3.まとめ
3.まとめ
Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 56
- 57.
まとめ
• データを格納するハコとしてはどのデータベー
スも同じ
⇒僅かな機能差や実績が製品の差になっている
• 違いを理解することで、適材適所にデータベー
スを配置することができる
更に・・・
・お客様に対して攻めの提案が可能
・設計・開発時の手戻り削減
・運用後の障害発生を回避
•Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 57
- 58.
- 59.