SlideShare uma empresa Scribd logo
1 de 59
45分で理解する
SQL Serverでできることできないこと


                                                  株式会社インサイトテクノロジー
                                                  テクノロジーソリューション部
                                                           内山 義夫


       Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   1
Agenda

• 1.SQL Serverってどうなの?
• 2.SQL Serverでできることできないこと
 – 2-1.ロックの仕様の違いを理解する
 – 2-2.オブジェクトの仕様の違いを理解する
 – 2-3.パフォーマンス管理ツールを理解する
• 3.まとめ




           Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   2
1. SQL Serverってどうなの?
       Serverってどうなの?




    Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   3
SQL Serverのイメージ

• SQL Serverといえば・・・?




   出荷本数シェァNo.1                                       GUIによる高いユーザビリティ




    洗練されたBI機能                                        オールインワンによる低コスト



                Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   4
現場の本音

これからOracle以外の
これから                             Oracle以外で提案すると
                                 Oracle
DBを覚えるのが大変                      失敗した時に「何でOracleに
                                失敗した時に「何で
                                 しなかった」と言われそう
          ロック待ちが多発
                                                                                 SQL Server
                                                                                     Serverができる人
          するんじゃない?
                                                                                  って誰かいたっけ?


            チューニングって
            できないんでしょ?


                                この前導入した案件は
                                うまくいかなかった
                                  らしい・・・
 •アプリケーション開発者                            •お客様に提案する⽴場の人




                Copyright © 2011 Insight Technology, Inc. All Rights Reserved.                     5
データベースの現実

• データベースのデファクトスタンダードは間違いなくOracle
• ただし、一昔前のように何でもOracle、というわけではなく
  なってきつつある
  ⇒適材適所にデータベースを配置
• トップダウンでデータベースが決まるケースも・・・
 ⇒Oracleしか知らないでは済まされなくなってきている
• ひとつのデータベース技術だけでは生き残れない
• SQL Serverも⻤熱い(弊社⼩幡談)



DBでできることできないことを正しく理解することが重要!


            Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   6
2.SQL Serverでできることできないこと
      Serverで




      Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   7
SQL Serverでできることできないこと



• 理解すべきポイント
   設計フェーズ                  開発フェーズ                                              運用フェーズ

  •ロックの仕様の             •オブジェクトの                                                •パフォーマンス
  違いを理解する                仕様の違いを                                                管理ツールを
                         理解する                                                  理解する




 フェーズが後になればなるほど手戻りも増大!


              Copyright © 2011 Insight Technology, Inc. All Rights Reserved.              8
2-1.ロックの仕様の違いを理解する
  1.ロックの仕様の違いを理解する




    Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   9
設計フェーズ

ロックの仕様の違いを理解する                                                         開発フェーズ
                                                                       運用フェーズ
                                                                       運用フェーズ




 ロックの仕様の違いを理解するポイント

    •トランザクション分離レベル


     •ロックエスカレーション




      Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            10
設計フェーズ

 ロックの仕様の違いを理解する                                                                    開発フェーズ
                                                                                   運用フェーズ
                                                                                   運用フェーズ



• トランザクション分離レベル
 – 同時に複数のトランザクションが実⾏した時の影響を定義
 – Oracle、SQL Server共にread committed
 – Read Committed…コミットしたデータが読める隔離レベル
                   Read Committed
       Oracle
   マルチバージョニング⽅式(オプティミスティック同時実⾏制御)
    - 対象となるリソースに対して排他ロックを取得
    - 排他ロック取得中でも更新前コミット済みデータが⾒れる
    - 更新前データはUndo Segmentに保持

     SQL Server
   ロック⽅式(ペシミスティック同時実⾏制御)
    - 対象となるリソースに対して排他ロックを取得
    - 排他ロック取得中は他の処理を待機させる



                  Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            11
設計フェーズ

          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 売上;


                                  トランザクションAが
                      UserA:500                                                                                   ロック待ち
                      UserB:200   更新する前の値を参照
                                  UserA:400
Commit;                                                                  Commit;
                                  UserB:200

                                  Commit;                                                                         Commit;
                                                                                  ロック待ち解放
                                                                                  UserA:500
                                                                                  UserB:200




                                     Copyright © 2011 Insight Technology, Inc. All Rights Reserved.                                   12
設計フェーズ

   トランザクション分離レベルの変更                                                               開発フェーズ
                                                                                  開発フェーズ
                                                                                  運用フェーズ
                                                                                  運用フェーズ




• 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
設計フェーズ

Read Committed Snapshot時の動き                                                                             開発フェーズ
                                                                                                        開発フェーズ
                                                                                                        運用フェーズ
                                                                                                        運用フェーズ




                     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
設計フェーズ

  SQl ServerのRead Committed                                                   開発フェーズ
                                                                              開発フェーズ
                                                                              運用フェーズ
                                                                              運用フェーズ




• 気を付けるべきポイント
 – Update文やDelete文の実⾏には注意が必要!
   ⇒インデックスの有無で動きが大きく異なる




             Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            15
設計フェーズ

    OracleとSQL Serverの動き方                                                                               開発フェーズ
                                                                                                        開発フェーズ
                                                                                                        運用フェーズ
                                                                                                        運用フェーズ




                 トランザクションA開始
                                                                     トランザクションB開始
                                                UserA:400
                                                UsarB:200
                 Update 売上
                 Set 売上 = 売上 + 100
                 Where ID = ‘UserA’;
                                                                     Select * From 売上;



IDにインデックス有                                                                                      IDにインデックス無




                        トランザクションAが                                                              ロック待ち発生!
                        更新する前の値を参照
Commit;                 UserA:400                              Commit;

                        UserB:200
          UserA:500                                                                        UserA:500
          UserB:200                                                                        UserB:200
                                                                                                       ロック待ち解放




                          Copyright © 2011 Insight Technology, Inc. All Rights Reserved.                         16
設計フェーズ

     SQL Serverのロック                                                             開発フェーズ
                                                                                開発フェーズ
                                                                                運用フェーズ
                                                                                運用フェーズ




• SQL Serverではロックを考慮した設計した設計が必要
 –   ⾏を大量にロックするような処理はなるべく控える
 –   アプリケーションはできるだけショートトランザクションにする
 –   Update文やDelete文で指定する条件の項目にはインデックスは必須
 –   ロック待ちやデッドックの情報を取得しておく




               Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            17
設計フェーズ

  ロックの仕様の違いを理解する                                                                    開発フェーズ
                                                                                    開発フェーズ
                                                                                    運用フェーズ
                                                                                    運用フェーズ




• ロックエスカレーション(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
設計フェーズ

 Oracleのようにした場合・・・                                                               開発フェーズ
                                                                                 運用フェーズ
                                                                                 運用フェーズ




 トランザクション分離レベル                                                 ロックエスカレーション
Read Committed
                                                    Trace flag 1211に設定
Read Committed Snapshot                             (ロックエスカレーションOFF)




       オーバーヘッドはどうなるか?


                Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            19
設計フェーズ

       オーバーヘッド                                                                                                              開発フェーズ
                                                                                                                            開発フェーズ
                                                                                                                            運用フェーズ
                                                                                                                            運用フェーズ


    • 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

                                                                        20                                  30              @tempdb
                                      10

    • ロックエスカレーションさせない場合のリソースの変化
                                      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
2-2.オブジェクトの仕様の違いを理解する
  2.オブジェクトの仕様の違いを理解する




     Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   21
設計フェーズ

オブジェクトの仕様の違いを理解する                                                      開発フェーズ
                                                                       開発フェーズ
                                                                       運用フェーズ
                                                                       運用フェーズ




 オブジェクトの仕様を理解するポイント

                    シーケンス

             パーティション

     マテリアライズドビュー

                        PL/SQL



      Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            22
設計フェーズ

オブジェクトの仕様の違いを理解する                                                      開発フェーズ
                                                                       開発フェーズ
                                                                       運用フェーズ
                                                                       運用フェーズ




 オブジェクトの仕様を理解するポイント

                    シーケンス

             パーティション

     マテリアライズドビュー

                        PL/SQL



      Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            23
設計フェーズ

  SQL Server de シーケンス                                                           開発フェーズ
                                                                                開発フェーズ
                                                                                運用フェーズ
                                                                                運用フェーズ

    Sequence
・連続した数値を采番するオブジェクト
・複数のセッションからでもユニークな値を采番可能
・SQL Serverにはオブジェクトとして采番するものは存在しない
 ⇒采番する機能としてはIdentity属性が該当

Oracle:シーケンス                                          SQL Server:Identity

・値を自動的に采番                                           ・○値を自動的に采番
・オブジェクトとして作成                                        ・×オブジェクトとして作成
・特定のカラムに依存しないで采番可能                                  ・×特定のカラムに依存しないで采番可能
・増分値や開始値が設定可能                                       ・○増分値や開始値が設定可能
・最大値が設定可能                                           ・△最大値はデータ型の最大値固定
・⽂字列のカラムにも指定可能                                      ・○⽂字列のカラムにも指定可能
・カラム属性として定義可能                                       ・○カラムの属性として定義可能
                                                    ・※1つのテーブルに1つのみ作成可能



               Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            24
設計フェーズ

  SQL Server de シーケンス                                                         開発フェーズ
                                                                              開発フェーズ
                                                                              運用フェーズ
                                                                              運用フェーズ




• SQL Serverでシーケンスを理解するポイント:
  ⇒SQL ServerのIdentityでOracleのシーケンスのような動
  きがどこまでできるのか?




             Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            25
設計フェーズ

   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
設計フェーズ

  SQL Server de シーケンス                                                        開発フェーズ
                                                                             開発フェーズ
                                                                             運用フェーズ
                                                                             運用フェーズ




• ちなみに・・・
• SQL Server次期バージョンリリース




   ポイント
  シーケンスオブジェクトが追加



            Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            27
設計フェーズ

 SQL Server de シーケンス                                                            開発フェーズ
                                                                                開発フェーズ
                                                                                運用フェーズ
                                                                                運用フェーズ




Oracle:シーケンス                                          SQL Server:シーケンス

・値を自動的に采番                                           ・○値を自動的に采番
・オブジェクトとして作成                                        ・○オブジェクトとして作成
・特定のカラムに依存しないで采番可能                                  ・○特定のカラムに依存しないで采番可能
・増分値や開始値が設定可能                                       ・○増分値や開始値が設定可能
・最大値が設定可能                                           ・○最大値が設定可能
・⽂字列のカラムにも指定可能                                      ・○⽂字列のカラムにも指定可能
・カラム属性として定義可能                                       ・○カラム属性として定義可能




               Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            28
設計フェーズ

   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
設計フェーズ

オブジェクトの仕様の違いを理解する                                                      開発フェーズ
                                                                       開発フェーズ
                                                                       運用フェーズ
                                                                       運用フェーズ




 オブジェクトの仕様を理解するポイント

                    シーケンス

             パーティション

     マテリアライズドビュー

                        PL/SQL



      Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            30
設計フェーズ

  SQL Server de パーティション                                                            開発フェーズ
                                                                                   開発フェーズ
                                                                                   運用フェーズ
                                                                                   運用フェーズ

   Partitioning
・1 つのテーブルを一定の基準で分割する
 - 複数パーティションに格納されたデータをパラレルに抽出可能
 - データ抽出範囲(障害範囲)の極⼩化
・アプリケーションから透過的

Oracle:パーティション                                           SQL Server:パーティション

・パーティションによる負荷分散                                        ・○パーティションによる負荷分散
・パーティション可能なオブジェクト                                      ・○パーティション可能なオブジェクト
  -テーブル、インデックス                                           -テーブル、インデックス
・パーティション⽅式を選択可能                                        ・×パーティション⽅式を選択可能
  -レンジ/リスト/ハッシュ                                         △ -レンジ/リスト/ハッシュ
・パーティション毎にバックアップが可能                                    ・○パーティション毎にバックアップが可能
・障害範囲の極小化                                              ・○障害範囲の極小化




                  Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            31
設計フェーズ

  SQL Server 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
設計フェーズ

 SQL Server de パーティション                                                     開発フェーズ
                                                                           開発フェーズ
                                                                           運用フェーズ
                                                                           運用フェーズ




• パーティションのポイント:
  ⇒パーティションのパフォーマンスは?




          Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            33
設計フェーズ

  SQL Server 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
設計フェーズ

 SQL Server de パーティション                                                                        開発フェーズ
                                                                                              開発フェーズ
                                                                                              運用フェーズ
                                                                                              運用フェーズ




• ちなみに・・・
 – 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
設計フェーズ

オブジェクトの仕様の違いを理解する                                                      開発フェーズ
                                                                       開発フェーズ
                                                                       運用フェーズ
                                                                       運用フェーズ




 オブジェクトの仕様を理解するポイント

                    シーケンス

             パーティション

     マテリアライズドビュー

                        PL/SQL



      Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            36
設計フェーズ

  SQL Server 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
設計フェーズ

 SQL Server de マテビュー                                                                    開発フェーズ
                                                                                        開発フェーズ
                                                                                        運用フェーズ
                                                                                        運用フェーズ


• インデックス付きビュー
 – 通常のビューを作成し、そのビューにインデックスを作成
 – 作成するインデックスはクラスタインデックスのみ
     • クラスタインデックス≒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
設計フェーズ

  SQL Server de マテビュー                                                        開発フェーズ
                                                                             開発フェーズ
                                                                             運用フェーズ
                                                                             運用フェーズ




• SQL Server de マテビューのポイント:
  ⇒制約の多さ+パフォーマンス




            Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            39
設計フェーズ

 SQL Server de マテビュー                                                              開発フェーズ
                                                                                  開発フェーズ
                                                                                  運用フェーズ
                                                                                  運用フェーズ



• インデックス付きビューの懸念点
 – インデックス付きビューの制約
   •   インデックス付きビュー内で他のビューは参照不可
   •   外部結合または⾃⼰結合は不可
   •   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
設計フェーズ

オブジェクトの仕様の違いを理解する                                                      開発フェーズ
                                                                       開発フェーズ
                                                                       運用フェーズ
                                                                       運用フェーズ




 オブジェクトの仕様を理解するポイント

                    シーケンス

             パーティション

     マテリアライズドビュー

                        PL/SQL



      Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            41
設計フェーズ

  4.SQL Server 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
設計フェーズ

   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
設計フェーズ

 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
設計フェーズ

         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
設計フェーズ

 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
設計フェーズ

     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
設計フェーズ

関数エラー 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
設計フェーズ

      関数エラー 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
設計フェーズ

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
2-3. パフォーマンス管理ツールを理解する




     Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   51
設計フェーズ

パフォーマンス管理ツールを理解する                                                      開発フェーズ
                                                                       開発フェーズ
                                                                       運用フェーズ
                                                                       運用フェーズ




    パフォーマンス管理ツール
   パフォーマンスデータコレクション




      Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            52
設計フェーズ

パフォーマンス管理ツール                                                                    開発フェーズ
                                                                                開発フェーズ
                                                                                運用フェーズ
                                                                                運用フェーズ




• パフォーマンスデータコレクション
 – SQL ServerやOSのパフォーマンス情報を収集
 – 過去データも参照可能(SQL Server2008)
 – OracleのEnterprise ManagerやStatspackと同等




               Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            53
設計フェーズ

パフォーマンスデータコレクション                                                               開発フェーズ
                                                                               開発フェーズ
                                                                               運用フェーズ
                                                                               運用フェーズ



• クエリ統計
 – 負荷の高いSQLTOP10の抽出が容易

                                    •クエリ統計によるレポート画面
 •   実⾏時間の⻑いSQL
 •   CPU使用時間の⻑いSQL
 •   物理読み込みの多いSQL
 •   論理書き込みの多いSQL




              Copyright © 2011 Insight Technology, Inc. All Rights Reserved.            54
設計フェーズ

パフォーマンスデータコレクション                                                              開発フェーズ
                                                                              開発フェーズ
                                                                              運用フェーズ
                                                                              運用フェーズ


• 抽出したSQLのチューニング
 ①.SQLの
 統計データ表示

                                                                             ②.サンプリ
                                                                             ングされた待
                                                                             機情報表示




                                                   ③.SQLの
                                                   実⾏計画表示




           •Copyright © 2011 Insight Technology, Inc. All Rights Reserved.             55
3.まとめ
           3.まとめ




Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   56
まとめ

• データを格納するハコとしてはどのデータベー
  スも同じ
 ⇒僅かな機能差や実績が製品の差になっている
• 違いを理解することで、適材適所にデータベー
  スを配置することができる
                               更に・・・


・お客様に対して攻めの提案が可能
・設計・開発時の手戻り削減
・運用後の障害発生を回避

      •Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   57
ひとつのデータベース技術だけでは生き残れない




       Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   58
•無断転載を禁ず

•この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。
•株式会社インサイトテクノロジーは本書の内容に関していかなる保証もしません。また、本書の内容に関連したいかな
る損害についても責任を負いかねます。
•本書で使用している製品やサービス名の名称は、各社の商標または登録商標です。




                 Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   59

Mais conteúdo relacionado

Mais procurados

SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかShogo Wakayama
 
待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイント待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイントMasayuki Ozawa
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやyoku0825
 
SQL Server運用実践 - 3年間80台の運用経験から20の教訓
SQL Server運用実践 - 3年間80台の運用経験から20の教訓SQL Server運用実践 - 3年間80台の運用経験から20の教訓
SQL Server運用実践 - 3年間80台の運用経験から20の教訓貴仁 大和屋
 
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 featuresMasayuki Ozawa
 
クラウドDWHにおける観点とAzure Synapse Analyticsの対応
クラウドDWHにおける観点とAzure Synapse Analyticsの対応クラウドDWHにおける観点とAzure Synapse Analyticsの対応
クラウドDWHにおける観点とAzure Synapse Analyticsの対応Ryoma Nagata
 
CloudFront経由でのCORS利用
CloudFront経由でのCORS利用CloudFront経由でのCORS利用
CloudFront経由でのCORS利用Yuta Imai
 
老朽化したオンプレ環境をクラウドへ移設
老朽化したオンプレ環境をクラウドへ移設老朽化したオンプレ環境をクラウドへ移設
老朽化したオンプレ環境をクラウドへ移設修平 富田
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Web Services Japan
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Amazon Web Services Japan
 
Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果Masayuki Ozawa
 
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQLAmazon Web Services Japan
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性Ohyama Masanori
 
日本のお客様におけるAmazon Auroraへの移行・検証事例と技術ポイント
日本のお客様におけるAmazon Auroraへの移行・検証事例と技術ポイント日本のお客様におけるAmazon Auroraへの移行・検証事例と技術ポイント
日本のお客様におけるAmazon Auroraへの移行・検証事例と技術ポイントAmazon Web Services Japan
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テストTakahiro Moteki
 
Oracleからamazon auroraへの移行にむけて
Oracleからamazon auroraへの移行にむけてOracleからamazon auroraへの移行にむけて
Oracleからamazon auroraへの移行にむけてYoichi Sai
 
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)Masaya Tahara
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Noritaka Sekiyama
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 

Mais procurados (20)

AWS Database Migration Service ご紹介
AWS Database Migration Service ご紹介AWS Database Migration Service ご紹介
AWS Database Migration Service ご紹介
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイント待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイント
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
 
SQL Server運用実践 - 3年間80台の運用経験から20の教訓
SQL Server運用実践 - 3年間80台の運用経験から20の教訓SQL Server運用実践 - 3年間80台の運用経験から20の教訓
SQL Server運用実践 - 3年間80台の運用経験から20の教訓
 
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
 
クラウドDWHにおける観点とAzure Synapse Analyticsの対応
クラウドDWHにおける観点とAzure Synapse Analyticsの対応クラウドDWHにおける観点とAzure Synapse Analyticsの対応
クラウドDWHにおける観点とAzure Synapse Analyticsの対応
 
CloudFront経由でのCORS利用
CloudFront経由でのCORS利用CloudFront経由でのCORS利用
CloudFront経由でのCORS利用
 
老朽化したオンプレ環境をクラウドへ移設
老朽化したオンプレ環境をクラウドへ移設老朽化したオンプレ環境をクラウドへ移設
老朽化したオンプレ環境をクラウドへ移設
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
 
Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果
 
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
 
日本のお客様におけるAmazon Auroraへの移行・検証事例と技術ポイント
日本のお客様におけるAmazon Auroraへの移行・検証事例と技術ポイント日本のお客様におけるAmazon Auroraへの移行・検証事例と技術ポイント
日本のお客様におけるAmazon Auroraへの移行・検証事例と技術ポイント
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト
 
Oracleからamazon auroraへの移行にむけて
Oracleからamazon auroraへの移行にむけてOracleからamazon auroraへの移行にむけて
Oracleからamazon auroraへの移行にむけて
 
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 

Destaque

[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
[B24] Oracle から SQL Server システム移行の勘所 by Norio NakamuraInsight Technology, Inc.
 
[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)
[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)
[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)Insight Technology, Inc.
 
Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版elanlilac
 
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチSql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチMasayuki Ozawa
 
Sql server パーティション 概要
Sql server パーティション 概要Sql server パーティション 概要
Sql server パーティション 概要Masayuki Ozawa
 
SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料Masayuki Ozawa
 
SQL Server 現状診断サービス ご紹介資料
SQL Server 現状診断サービス ご紹介資料SQL Server 現状診断サービス ご紹介資料
SQL Server 現状診断サービス ご紹介資料Masayuki Ozawa
 
SQL Server replication overview (JP)
SQL Server replication overview (JP)SQL Server replication overview (JP)
SQL Server replication overview (JP)elanlilac
 
オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用elanlilac
 
Microsoft SQL Server Query Tuning
Microsoft SQL Server Query TuningMicrosoft SQL Server Query Tuning
Microsoft SQL Server Query TuningMark Ginnebaugh
 
[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa
[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa
[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawaInsight Technology, Inc.
 
Always on 可用性グループ 構築時のポイント
Always on 可用性グループ 構築時のポイントAlways on 可用性グループ 構築時のポイント
Always on 可用性グループ 構築時のポイントMasayuki Ozawa
 
SQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンターSQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンターMasayuki Ozawa
 
FRT Vol. 5 クラウド時代の企業アプリケーションとマーケティング
FRT Vol. 5 クラウド時代の企業アプリケーションとマーケティングFRT Vol. 5 クラウド時代の企業アプリケーションとマーケティング
FRT Vol. 5 クラウド時代の企業アプリケーションとマーケティングYasunari Goto (iChain. Inc.)
 
Trabalhando com o Moodle e a Comunidade
Trabalhando com o Moodle e a ComunidadeTrabalhando com o Moodle e a Comunidade
Trabalhando com o Moodle e a ComunidadeDaniel Neis
 
Global Knowledge Training Courses & Promotion 2015-Sep
Global Knowledge Training Courses & Promotion 2015-SepGlobal Knowledge Training Courses & Promotion 2015-Sep
Global Knowledge Training Courses & Promotion 2015-SepAruj Thirawat
 
STelligence Savvius Thai Datasheet
STelligence Savvius Thai DatasheetSTelligence Savvius Thai Datasheet
STelligence Savvius Thai DatasheetAruj Thirawat
 
Caching Data For Performance
Caching Data For PerformanceCaching Data For Performance
Caching Data For PerformanceDave Ross
 

Destaque (20)

[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
 
[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)
[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)
[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)
 
Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版
 
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチSql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
 
SQL Server 入門
SQL Server 入門SQL Server 入門
SQL Server 入門
 
Sql server パーティション 概要
Sql server パーティション 概要Sql server パーティション 概要
Sql server パーティション 概要
 
SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料
 
SQL Server 現状診断サービス ご紹介資料
SQL Server 現状診断サービス ご紹介資料SQL Server 現状診断サービス ご紹介資料
SQL Server 現状診断サービス ご紹介資料
 
SQL Server replication overview (JP)
SQL Server replication overview (JP)SQL Server replication overview (JP)
SQL Server replication overview (JP)
 
オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用
 
Microsoft SQL Server Query Tuning
Microsoft SQL Server Query TuningMicrosoft SQL Server Query Tuning
Microsoft SQL Server Query Tuning
 
[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa
[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa
[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa
 
[プレゼン]Db moto
[プレゼン]Db moto[プレゼン]Db moto
[プレゼン]Db moto
 
Always on 可用性グループ 構築時のポイント
Always on 可用性グループ 構築時のポイントAlways on 可用性グループ 構築時のポイント
Always on 可用性グループ 構築時のポイント
 
SQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンターSQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンター
 
FRT Vol. 5 クラウド時代の企業アプリケーションとマーケティング
FRT Vol. 5 クラウド時代の企業アプリケーションとマーケティングFRT Vol. 5 クラウド時代の企業アプリケーションとマーケティング
FRT Vol. 5 クラウド時代の企業アプリケーションとマーケティング
 
Trabalhando com o Moodle e a Comunidade
Trabalhando com o Moodle e a ComunidadeTrabalhando com o Moodle e a Comunidade
Trabalhando com o Moodle e a Comunidade
 
Global Knowledge Training Courses & Promotion 2015-Sep
Global Knowledge Training Courses & Promotion 2015-SepGlobal Knowledge Training Courses & Promotion 2015-Sep
Global Knowledge Training Courses & Promotion 2015-Sep
 
STelligence Savvius Thai Datasheet
STelligence Savvius Thai DatasheetSTelligence Savvius Thai Datasheet
STelligence Savvius Thai Datasheet
 
Caching Data For Performance
Caching Data For PerformanceCaching Data For Performance
Caching Data For Performance
 

Semelhante a 45分で理解する SQL Serverでできることできないこと

MySQLをGUIで触ろう!! ~MySQL Workbenchのご紹介~
MySQLをGUIで触ろう!! ~MySQL Workbenchのご紹介~MySQLをGUIで触ろう!! ~MySQL Workbenchのご紹介~
MySQLをGUIで触ろう!! ~MySQL Workbenchのご紹介~yoyamasaki
 
20131213 OSC enterprise
20131213 OSC enterprise20131213 OSC enterprise
20131213 OSC enterprisesamemoon
 
MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003Shinya Sugiyama
 
Intro2 Sqlanalyzer
Intro2 SqlanalyzerIntro2 Sqlanalyzer
Intro2 Sqlanalyzersaeka
 
20150920 中国地方db勉強会
20150920 中国地方db勉強会20150920 中国地方db勉強会
20150920 中国地方db勉強会yoyamasaki
 
OpsWorks aws-cli#11
OpsWorks aws-cli#11OpsWorks aws-cli#11
OpsWorks aws-cli#11Yuta Shimada
 
Sql server 2014 新機能の紹介
Sql server 2014 新機能の紹介Sql server 2014 新機能の紹介
Sql server 2014 新機能の紹介Oda Shinsuke
 
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive ProgrammingScalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive ProgrammingTomoharu ASAMI
 
OpenStack 向けネットワーク入門
OpenStack 向けネットワーク入門OpenStack 向けネットワーク入門
OpenStack 向けネットワーク入門Dell TechCenter Japan
 
とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...
とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...
とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...オラクルエンジニア通信
 
20110708 dist_study okuyama
20110708 dist_study okuyama20110708 dist_study okuyama
20110708 dist_study okuyamaTakahiro Iwase
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチMonadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチTomoharu ASAMI
 
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+Ryusuke Kajiyama
 
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングオラクルエンジニア通信
 
What is doobie? - database access for scala -
What is doobie? - database access for scala -What is doobie? - database access for scala -
What is doobie? - database access for scala -chibochibo
 
経営を支えるIT部門実現の記録2005
経営を支えるIT部門実現の記録2005経営を支えるIT部門実現の記録2005
経営を支えるIT部門実現の記録2005Makoto Shimizu
 
20100520 【qpstudy01】 チームでトライ!インフラ構築のススメ
20100520 【qpstudy01】 チームでトライ!インフラ構築のススメ20100520 【qpstudy01】 チームでトライ!インフラ構築のススメ
20100520 【qpstudy01】 チームでトライ!インフラ構築のススメYukitaka Ohmura
 

Semelhante a 45分で理解する SQL Serverでできることできないこと (20)

MySQLをGUIで触ろう!! ~MySQL Workbenchのご紹介~
MySQLをGUIで触ろう!! ~MySQL Workbenchのご紹介~MySQLをGUIで触ろう!! ~MySQL Workbenchのご紹介~
MySQLをGUIで触ろう!! ~MySQL Workbenchのご紹介~
 
20131213 OSC enterprise
20131213 OSC enterprise20131213 OSC enterprise
20131213 OSC enterprise
 
MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
Intro2 Sqlanalyzer
Intro2 SqlanalyzerIntro2 Sqlanalyzer
Intro2 Sqlanalyzer
 
20150920 中国地方db勉強会
20150920 中国地方db勉強会20150920 中国地方db勉強会
20150920 中国地方db勉強会
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
OpsWorks aws-cli#11
OpsWorks aws-cli#11OpsWorks aws-cli#11
OpsWorks aws-cli#11
 
Sql server 2014 新機能の紹介
Sql server 2014 新機能の紹介Sql server 2014 新機能の紹介
Sql server 2014 新機能の紹介
 
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive ProgrammingScalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive Programming
 
OpenStack 向けネットワーク入門
OpenStack 向けネットワーク入門OpenStack 向けネットワーク入門
OpenStack 向けネットワーク入門
 
とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...
とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...
とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...
 
20110708 dist_study okuyama
20110708 dist_study okuyama20110708 dist_study okuyama
20110708 dist_study okuyama
 
Oracle設計
Oracle設計Oracle設計
Oracle設計
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチMonadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
 
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
 
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
 
What is doobie? - database access for scala -
What is doobie? - database access for scala -What is doobie? - database access for scala -
What is doobie? - database access for scala -
 
経営を支えるIT部門実現の記録2005
経営を支えるIT部門実現の記録2005経営を支えるIT部門実現の記録2005
経営を支えるIT部門実現の記録2005
 
20100520 【qpstudy01】 チームでトライ!インフラ構築のススメ
20100520 【qpstudy01】 チームでトライ!インフラ構築のススメ20100520 【qpstudy01】 チームでトライ!インフラ構築のススメ
20100520 【qpstudy01】 チームでトライ!インフラ構築のススメ
 

Mais de Insight Technology, Inc.

グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?Insight Technology, Inc.
 
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~Insight Technology, Inc.
 
事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明する事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明するInsight Technology, Inc.
 
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーンInsight Technology, Inc.
 
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとMBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとInsight Technology, Inc.
 
グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?Insight Technology, Inc.
 
DBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームDBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームInsight Technology, Inc.
 
SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門Insight Technology, Inc.
 
db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉 db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉 Insight Technology, Inc.
 
db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也Insight Technology, Inc.
 
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー Insight Technology, Inc.
 
難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?Insight Technology, Inc.
 
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介Insight Technology, Inc.
 
そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?Insight Technology, Inc.
 
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...Insight Technology, Inc.
 
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 Insight Technology, Inc.
 
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...Insight Technology, Inc.
 
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]Insight Technology, Inc.
 

Mais de Insight Technology, Inc. (20)

グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?
 
Docker and the Oracle Database
Docker and the Oracle DatabaseDocker and the Oracle Database
Docker and the Oracle Database
 
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
Great performance at scale~次期PostgreSQL12のパーティショニング性能の実力に迫る~
 
事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明する事例を通じて機械学習とは何かを説明する
事例を通じて機械学習とは何かを説明する
 
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
仮想通貨ウォレットアプリで理解するデータストアとしてのブロックチェーン
 
MBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごとMBAAで覚えるDBREの大事なおしごと
MBAAで覚えるDBREの大事なおしごと
 
グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?
 
DBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームDBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォーム
 
SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門
 
Lunch & Learn, AWS NoSQL Services
Lunch & Learn, AWS NoSQL ServicesLunch & Learn, AWS NoSQL Services
Lunch & Learn, AWS NoSQL Services
 
db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉 db tech showcase2019オープニングセッション @ 森田 俊哉
db tech showcase2019オープニングセッション @ 森田 俊哉
 
db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也
 
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
db tech showcase2019 オープニングセッション @ マイナー・アレン・パーカー
 
難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?難しいアプリケーション移行、手軽に試してみませんか?
難しいアプリケーション移行、手軽に試してみませんか?
 
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
Attunityのソリューションと異種データベース・クラウド移行事例のご紹介
 
そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?そのデータベース、クラウドで使ってみませんか?
そのデータベース、クラウドで使ってみませんか?
 
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
コモディティサーバー3台で作る高速処理 “ハイパー・コンバージド・データベース・インフラストラクチャー(HCDI)” システム『Insight Qube』...
 
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
 
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
 
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
レガシーに埋もれたデータをリアルタイムでクラウドへ [ATTUNITY & インサイトテクノロジー IoT / Big Data フォーラム 2018]
 

Último

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Último (9)

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

45分で理解する SQL Serverでできることできないこと

  • 1. 45分で理解する SQL Serverでできることできないこと 株式会社インサイトテクノロジー テクノロジーソリューション部 内山 義夫 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 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. 1. SQL Serverってどうなの? Serverってどうなの? Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 3
  • 4. SQL Serverのイメージ • SQL Serverといえば・・・? 出荷本数シェァ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. データベースの現実 • データベースのデファクトスタンダードは間違いなくOracle • ただし、一昔前のように何でもOracle、というわけではなく なってきつつある ⇒適材適所にデータベースを配置 • トップダウンでデータベースが決まるケースも・・・ ⇒Oracleしか知らないでは済まされなくなってきている • ひとつのデータベース技術だけでは生き残れない • SQL Serverも⻤熱い(弊社⼩幡談) DBでできることできないことを正しく理解することが重要! Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 6
  • 7. 2.SQL Serverでできることできないこと Serverで Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 7
  • 8. SQL Serverでできることできないこと • 理解すべきポイント 設計フェーズ 開発フェーズ 運用フェーズ •ロックの仕様の •オブジェクトの •パフォーマンス 違いを理解する 仕様の違いを 管理ツールを 理解する 理解する フェーズが後になればなるほど手戻りも増大! Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 8
  • 9. 2-1.ロックの仕様の違いを理解する 1.ロックの仕様の違いを理解する Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 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 売上; トランザクションAが UserA:500 ロック待ち 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 Committed Snapshot時の動き 開発フェーズ 開発フェーズ 運用フェーズ 運用フェーズ 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. 設計フェーズ SQl Serverの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; UserA:400 Commit; 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 20 30 @tempdb 10 • ロックエスカレーションさせない場合のリソースの変化 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
  • 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. 設計フェーズ SQL Server de シーケンス 開発フェーズ 開発フェーズ 運用フェーズ 運用フェーズ Sequence ・連続した数値を采番するオブジェクト ・複数のセッションからでもユニークな値を采番可能 ・SQL Serverにはオブジェクトとして采番するものは存在しない ⇒采番する機能としてはIdentity属性が該当 Oracle:シーケンス SQL Server:Identity ・値を自動的に采番 ・○値を自動的に采番 ・オブジェクトとして作成 ・×オブジェクトとして作成 ・特定のカラムに依存しないで采番可能 ・×特定のカラムに依存しないで采番可能 ・増分値や開始値が設定可能 ・○増分値や開始値が設定可能 ・最大値が設定可能 ・△最大値はデータ型の最大値固定 ・⽂字列のカラムにも指定可能 ・○⽂字列のカラムにも指定可能 ・カラム属性として定義可能 ・○カラムの属性として定義可能 ・※1つのテーブルに1つのみ作成可能 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 24
  • 25. 設計フェーズ SQL Server 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. 設計フェーズ SQL Server de シーケンス 開発フェーズ 開発フェーズ 運用フェーズ 運用フェーズ • ちなみに・・・ • SQL Server次期バージョンリリース ポイント シーケンスオブジェクトが追加 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 27
  • 28. 設計フェーズ SQL Server de シーケンス 開発フェーズ 開発フェーズ 運用フェーズ 運用フェーズ 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. 設計フェーズ SQL Server de パーティション 開発フェーズ 開発フェーズ 運用フェーズ 運用フェーズ Partitioning ・1 つのテーブルを一定の基準で分割する - 複数パーティションに格納されたデータをパラレルに抽出可能 - データ抽出範囲(障害範囲)の極⼩化 ・アプリケーションから透過的 Oracle:パーティション SQL Server:パーティション ・パーティションによる負荷分散 ・○パーティションによる負荷分散 ・パーティション可能なオブジェクト ・○パーティション可能なオブジェクト -テーブル、インデックス -テーブル、インデックス ・パーティション⽅式を選択可能 ・×パーティション⽅式を選択可能 -レンジ/リスト/ハッシュ △ -レンジ/リスト/ハッシュ ・パーティション毎にバックアップが可能 ・○パーティション毎にバックアップが可能 ・障害範囲の極小化 ・○障害範囲の極小化 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 31
  • 32. 設計フェーズ SQL Server 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 Server de パーティション 開発フェーズ 開発フェーズ 運用フェーズ 運用フェーズ • パーティションのポイント: ⇒パーティションのパフォーマンスは? Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 33
  • 34. 設計フェーズ SQL Server 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 Server de パーティション 開発フェーズ 開発フェーズ 運用フェーズ 運用フェーズ • ちなみに・・・ – 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. 設計フェーズ SQL Server 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 Server de マテビュー 開発フェーズ 開発フェーズ 運用フェーズ 運用フェーズ • インデックス付きビュー – 通常のビューを作成し、そのビューにインデックスを作成 – 作成するインデックスはクラスタインデックスのみ • クラスタインデックス≒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. 設計フェーズ SQL Server de マテビュー 開発フェーズ 開発フェーズ 運用フェーズ 運用フェーズ • SQL Server de マテビューのポイント: ⇒制約の多さ+パフォーマンス Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 39
  • 40. 設計フェーズ SQL Server de マテビュー 開発フェーズ 開発フェーズ 運用フェーズ 運用フェーズ • インデックス付きビューの懸念点 – インデックス付きビューの制約 • インデックス付きビュー内で他のビューは参照不可 • 外部結合または⾃⼰結合は不可 • 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.SQL Server 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. 2-3. パフォーマンス管理ツールを理解する Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 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. ひとつのデータベース技術だけでは生き残れない Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 58