SlideShare a Scribd company logo
SQL Server 2012
知られざるTips集
日本マイクロソフト
プレミアフィールドエンジニアリング
シニアプレミアフィールドエンジニア
平山 理
Agenda


        Lock 獲得動作の変更
        統計情報自動更新の変更
        FORCESEEK 機能拡張
        クエリプラン収集機能拡張
        ページ割り当て状況の確認方法の改善
        Cardinality Estimate Framework




©2011 Microsoft Corporation. All Rights Reserved.
Lock 獲得動作の変更




               3
SQL Server 2012 より前の動作


                                             クライアント A
                                             SELECT * FROM T
                                             - T はパーティションテーブル
                                             - SCH-S ロックが必要

                                             クライアント B
                                             ALTER TABLE T2 SWITCH PARTITION 1 TO T PARTITION 1
                                             - パーティションをスイッチするDDLを実行
                                             - SCH-M ロックが必要


                                             クライアント C
  DDL                                        - SELECT * FROM T WITH (NOLOCK)
  Starvation                                 - SCH-S ロックが必要(Dirty Read であっても)


©2011 Microsoft Corporation. All Rights Reserved.
SQL Server 2012 より前の動作(続き)

                                          SCH-S (スキーマ共有ロック)
                                          - DDL によるスキーマ変更防止
                                          - Dirty Read にも必要



                                          SCH-M
                                          - スキーマ変更ロック
         ロック                              - スキーマ変更時の排他制御




                                          SCH-S とSCH-Mは互換性なし




                                          -    後続の SCH-S が付与され続ける
         問題点                              -    SCH-M は待機し続ける


©2011 Microsoft Corporation. All Rights Reserved.
SQL Server 2012 の動作


                                             15000 パーティションまで分割可能




         パーティション数                            DDL Starvation の機会増加



                                             アルゴリズムの変更
                                             - FIFOの採用
                                             - SCH-SはSCH-Mをスキップしない



                                             旧動作への復帰
                                             - トレースフラグ 617
         改善策                                 - 再起動不要


©2011 Microsoft Corporation. All Rights Reserved.
統計情報

自動更新のための閾値変更




               7
従来の統計情報更新アルゴリズム




      テーブル基数 =< 500                                 500 回の変更で統計情報を更新




       テーブル基数 > 500                                 500 回+テーブル基数20% の変更で統計情報を更新


                                                    テーブル基数が大きい場合は統計情報の更新頻度低
                                                    例:
                                                    1,000,000,000 件のデータが存在するテーブルの場合

      考慮点                                           1,000,000,000 * 0.2 + 500 = 200,000,500


©2011 Microsoft Corporation. All Rights Reserved.
トレースフラグ 2371 の導入



                                                    例:
                                                    1,000,000,000 件のデータが存在するテーブルの場合
        更新タイミング:
        SQRT(データ件数*1000)                            SQRT(1,000,000,000*1000) = 1,000,000




        有効なバージョン:
        SQL Server 2012 RTM
        SQL Server 2008 R2 SP1 以降




        再起動不要

©2011 Microsoft Corporation. All Rights Reserved.
sys.dm_db_stats_properties 動的管理ビュー




        統計情報の内容を出力                                  サンプル数、更新日時、更新回数などを含む




        有効なバージョン:
        SQL Server 2012 SP1 以降
        SQL Server 2008 R2 SP2 以降




        DBCC SHOW_STATISTICS の代替

©2011 Microsoft Corporation. All Rights Reserved.
FORCESEEK クエリヒント機能拡張




                       11
FORCESEEK クエリヒント




                                     オプティマイザの決定をオーバライド




                                     SEEK 操作のみを使用してデータにアクセス




     FORCESEEK                       クラスタ化インデックス、非クラスタ化インデックスに有効



©2011 Microsoft Corporation. All Rights Reserved.
FORCESEEK クエリヒント




                                                    SEEK 操作のみ指定可能




   ~SQL Server 2008 R2                              select * from t with (forceseek)



                                                    SEEK 操作に使用するインデックスと列を指定可能




   SQL Server 2012                                  select * from t with with (forceseek (ix(c1, c2)) )

©2011 Microsoft Corporation. All Rights Reserved.
クエリプラン収集機能拡張




               14
SQL Server 2008 R2 までは…




           クエリプラン                         SQL Server
           収集方法                           プロファイラ       SQLTrace


                                          収集する

                                          OR

           収集条件                           収集しない        自由度低




                                                       収集できない
           収集時の負荷                         高い           環境が多い

©2011 Microsoft Corporation. All Rights Reserved.
SQL Server 2012 からは…




        ツールの追加                         拡張イベント


                                       Duration

                                       OR
        収集条件の                                       収集対象の    収集時の   収集可能な
        柔軟な設定                          CPU Time     絞り込み可能   負荷軽減   環境の増加




©2011 Microsoft Corporation. All Rights Reserved.
サンプルコード


      クエリプラン収集イベント:                                 収集条件:
      query_post_execution_showplan                 CPU使用時間 10 秒以上

       CREATE EVENT SESSION test_session
       ADD EVENT sqlserver.query_post_execution_showplan(
         WHERE ([cpu_time]>=(10000000)))
       ADD TARGET package0.event_file(SET filename=N'C:¥Program Files¥Microsoft SQL
       Server¥MSSQL11.ENGINE_DEV¥MSSQL¥Log¥test.xel')
       WITH (
       MAX_MEMORY=4096KB,
       EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
       MAX_DISPATCH_LATENCY=30 SECONDS,
       MAX_EVENT_SIZE=0 KB,
       MEMORY_PARTITION_MODE=NONE,
       TRACK_CAUSALITY=OFF,
       STARTUP_STATE=OFF
       )
       GO




©2011 Microsoft Corporation. All Rights Reserved.
ページ割り当て状況確認方法の改善




                   18
ページ割り当て状況確認




                                                                 DBCC IND
       ~SQL Server 2008 R2                    DBCC コマンドのみ        DBCC EXTENTINFO    データの加工に難あり




                                              動的管理関数:
       SQL Server 2012                        sys.dm_db_database_page_allocations   フィルタなどが容易




©2011 Microsoft Corporation. All Rights Reserved.
パラメータなど


                                      sys.dm_db_database_page_allocations
                                      ( データベースID,
                                      オブジェクトID,
                                      インデックスID,
                                      パーティションID,
                                      出力オプション) – ‘LIMITED’ / ‘DETAILED’
       パラメータ



                                      select * from sys.dm_db_database_page_allocations( DB_ID(‘db1') ,
                                      OBJECT_ID(‘tb1') , NULL , NULL , 'DETAILED' )
                                      go

       サンプルコード




©2011 Microsoft Corporation. All Rights Reserved.
Cardinality Estimate Framework




                                 21
クエリ実行に時間がかかる(終わらない)……




                                                                    統計情報不正

                        不適切な                        カージナリティ
                        クエリ実行プラン                    見積もり不正          インデックス不足

                                                    クエリ実行プラン収集:
                                                    実行プラン内の不正イテレータの特定



                        調査方法                        estimated = ×      actual = ○




©2011 Microsoft Corporation. All Rights Reserved.
Cardinality estimate framework



                                                SET STATISTICS XML ON


        ~SQL Server 2008 R2
        [Actual]プランの収集                          SET STATISTICS PROFILE ON   クエリが完了時に取得



                                                Cardinality estimate framework(拡張イベント):
                                                inaccurate_cardinality_estimate イベント


                                                イテレータの実際の出力件数と、見積もり件数との差が閾値を超
        SQL Server 2012                         えたタイミングでイベント発生




©2011 Microsoft Corporation. All Rights Reserved.
イベント発生のしきい値


       見積もり行数が1行の場合
       オプティマイザがイテレータの見積もり行数を1行と見積もったケース。
       イテレータの実際の処理数が2行以上になるとイベントが発生。




       見積もり行数が2から100,000の場合
       見積もり行数の5倍以上の行数をイテレータが処理するとイベントが発生。




       見積もり行数が100,000より大きい場合
       見積もり行数が、100,000より大きい場合。
       イベントが発生するときの閾値は次の式で算出。

       100,000 * (5-1.2) + 1.2 *[見積もり行数].




©2011 Microsoft Corporation. All Rights Reserved.
注意が必要なポイント

                                       クエリが効率的に実行されていてもイベントが発生す
                                       ることがある
      ノイズ                              (FALSE POSITIVE ケース)




      負荷                               内部的には statistics profile の収集が有効化される


                                       - 過少見積もり
                                          パフォーマンスへの影響大
      過剰見積もり                           - 過剰見積もり
      不検知                                 パフォーマンスへの影響小

                                       ノイズ 発生率高
                                       - 並列クエリの見積もり
                                          見積もり行数を単純に並列数で均等に割った値
                                       - 実際に各スレッドが処理する行数
      並列クエリ                               データの配置状況などによって必ずしも均等に処理されるとは限らない

©2011 Microsoft Corporation. All Rights Reserved.
©
 © 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
    conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
                                        MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
                                                                                                                                                                                                            26

More Related Content

What's hot (20)

PDF
使ってみませんか?pg_hint_plan
NTT DATA OSS Professional Services
 
PDF
C16 45分でわかるPostgreSQLの仕組み by 山田努
Insight Technology, Inc.
 
PDF
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Masayuki Ozawa
 
PDF
Osc2015北海道 札幌my sql勉強会_波多野_r3
Nobuhiro Hatano
 
PDF
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
PDF
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
Insight Technology, Inc.
 
PDF
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
Insight Technology, Inc.
 
PDF
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
PDF
OSS-DB Goldへの第一歩~実践!運用管理~
Shigeru Hanada
 
PDF
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
IBM Analytics Japan
 
PDF
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
 
PDF
雑なMySQLパフォーマンスチューニング
yoku0825
 
PPTX
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
NTT DATA Technology & Innovation
 
PDF
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
 
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PDF
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
nftables: the Next Generation Firewall in Linux
Tomofumi Hayashi
 
PDF
MySQLアーキテクチャ図解講座
Mikiya Okuno
 
PDF
基本に戻ってInnoDBの話をします
yoku0825
 
PDF
Always on 可用性グループ 構築時のポイント
Masayuki Ozawa
 
使ってみませんか?pg_hint_plan
NTT DATA OSS Professional Services
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
Insight Technology, Inc.
 
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Masayuki Ozawa
 
Osc2015北海道 札幌my sql勉強会_波多野_r3
Nobuhiro Hatano
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
Insight Technology, Inc.
 
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
Insight Technology, Inc.
 
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
OSS-DB Goldへの第一歩~実践!運用管理~
Shigeru Hanada
 
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
IBM Analytics Japan
 
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
 
雑なMySQLパフォーマンスチューニング
yoku0825
 
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
NTT DATA Technology & Innovation
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
 
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
nftables: the Next Generation Firewall in Linux
Tomofumi Hayashi
 
MySQLアーキテクチャ図解講座
Mikiya Okuno
 
基本に戻ってInnoDBの話をします
yoku0825
 
Always on 可用性グループ 構築時のポイント
Masayuki Ozawa
 

Similar to C13 SQL Server2012知られざるTips集 by 平山理 (20)

PDF
COD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアル
Masayuki Ozawa
 
PDF
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
Insight Technology, Inc.
 
PPTX
開発者の方向けの Sql server(db) t sql 振り返り
Oda Shinsuke
 
PDF
Seas で語られたこととは?
Masayuki Ozawa
 
PDF
Sql server 2012 の新機能を使ってみよう。db 管理者向け機能の紹介
Masayuki Ozawa
 
PDF
Sql server 2012 の新機能を 3 つの視点でご紹介(大阪版)
Masayuki Ozawa
 
PPTX
SQL Server 2019 とともに知る Microsoft Data Platform
Daiyu Hatakeyama
 
PDF
COD2012 T2/T3 : 実機で試す SQL Server の現状取得
Masayuki Ozawa
 
PDF
Sql server data store data access internals
Masayuki Ozawa
 
PDF
Sql database その裏側に迫る
Masayuki Ozawa
 
PDF
SQL Azure のシームレスな管理
junichi anno
 
PDF
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
Ryota Watabe
 
PPTX
T sql 振り返り
Oda Shinsuke
 
PDF
Denali ctp3 always on availability groups 概要
Masayuki Ozawa
 
PDF
過去事例から学ぶ SharePoint パフォーマンス問題とその対策
Atsuo Yamasaki
 
PDF
SQL Server パフォーマンスカウンター
Masayuki Ozawa
 
PDF
45分で理解する SQL Serverでできることできないこと
Insight Technology, Inc.
 
PDF
Dat004 開発者に捧ぐ「sql server_2016_
Tech Summit 2016
 
PDF
C25 SQL Server 2012 概要と Microsoft の Self-Service BI by Tsuyosi Kitagawa
Insight Technology, Inc.
 
PDF
はじめてのSSAS開発
Masaya Sawada
 
COD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアル
Masayuki Ozawa
 
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
Insight Technology, Inc.
 
開発者の方向けの Sql server(db) t sql 振り返り
Oda Shinsuke
 
Seas で語られたこととは?
Masayuki Ozawa
 
Sql server 2012 の新機能を使ってみよう。db 管理者向け機能の紹介
Masayuki Ozawa
 
Sql server 2012 の新機能を 3 つの視点でご紹介(大阪版)
Masayuki Ozawa
 
SQL Server 2019 とともに知る Microsoft Data Platform
Daiyu Hatakeyama
 
COD2012 T2/T3 : 実機で試す SQL Server の現状取得
Masayuki Ozawa
 
Sql server data store data access internals
Masayuki Ozawa
 
Sql database その裏側に迫る
Masayuki Ozawa
 
SQL Azure のシームレスな管理
junichi anno
 
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
Ryota Watabe
 
T sql 振り返り
Oda Shinsuke
 
Denali ctp3 always on availability groups 概要
Masayuki Ozawa
 
過去事例から学ぶ SharePoint パフォーマンス問題とその対策
Atsuo Yamasaki
 
SQL Server パフォーマンスカウンター
Masayuki Ozawa
 
45分で理解する SQL Serverでできることできないこと
Insight Technology, Inc.
 
Dat004 開発者に捧ぐ「sql server_2016_
Tech Summit 2016
 
C25 SQL Server 2012 概要と Microsoft の Self-Service BI by Tsuyosi Kitagawa
Insight Technology, Inc.
 
はじめてのSSAS開発
Masaya Sawada
 
Ad

More from Insight Technology, Inc. (20)

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

Recently uploaded (9)

PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
 
PDF
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
 
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
 
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
 
PDF
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
 
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
 
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
 
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
 
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
 
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
 
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
 
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
 
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
 
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
 

C13 SQL Server2012知られざるTips集 by 平山理

  • 2. Agenda  Lock 獲得動作の変更  統計情報自動更新の変更  FORCESEEK 機能拡張  クエリプラン収集機能拡張  ページ割り当て状況の確認方法の改善  Cardinality Estimate Framework ©2011 Microsoft Corporation. All Rights Reserved.
  • 4. SQL Server 2012 より前の動作 クライアント A SELECT * FROM T - T はパーティションテーブル - SCH-S ロックが必要 クライアント B ALTER TABLE T2 SWITCH PARTITION 1 TO T PARTITION 1 - パーティションをスイッチするDDLを実行 - SCH-M ロックが必要 クライアント C DDL - SELECT * FROM T WITH (NOLOCK) Starvation - SCH-S ロックが必要(Dirty Read であっても) ©2011 Microsoft Corporation. All Rights Reserved.
  • 5. SQL Server 2012 より前の動作(続き) SCH-S (スキーマ共有ロック) - DDL によるスキーマ変更防止 - Dirty Read にも必要 SCH-M - スキーマ変更ロック ロック - スキーマ変更時の排他制御 SCH-S とSCH-Mは互換性なし - 後続の SCH-S が付与され続ける 問題点 - SCH-M は待機し続ける ©2011 Microsoft Corporation. All Rights Reserved.
  • 6. SQL Server 2012 の動作 15000 パーティションまで分割可能 パーティション数 DDL Starvation の機会増加 アルゴリズムの変更 - FIFOの採用 - SCH-SはSCH-Mをスキップしない 旧動作への復帰 - トレースフラグ 617 改善策 - 再起動不要 ©2011 Microsoft Corporation. All Rights Reserved.
  • 8. 従来の統計情報更新アルゴリズム テーブル基数 =< 500 500 回の変更で統計情報を更新 テーブル基数 > 500 500 回+テーブル基数20% の変更で統計情報を更新 テーブル基数が大きい場合は統計情報の更新頻度低 例: 1,000,000,000 件のデータが存在するテーブルの場合 考慮点 1,000,000,000 * 0.2 + 500 = 200,000,500 ©2011 Microsoft Corporation. All Rights Reserved.
  • 9. トレースフラグ 2371 の導入 例: 1,000,000,000 件のデータが存在するテーブルの場合 更新タイミング: SQRT(データ件数*1000) SQRT(1,000,000,000*1000) = 1,000,000 有効なバージョン: SQL Server 2012 RTM SQL Server 2008 R2 SP1 以降 再起動不要 ©2011 Microsoft Corporation. All Rights Reserved.
  • 10. sys.dm_db_stats_properties 動的管理ビュー 統計情報の内容を出力 サンプル数、更新日時、更新回数などを含む 有効なバージョン: SQL Server 2012 SP1 以降 SQL Server 2008 R2 SP2 以降 DBCC SHOW_STATISTICS の代替 ©2011 Microsoft Corporation. All Rights Reserved.
  • 12. FORCESEEK クエリヒント オプティマイザの決定をオーバライド SEEK 操作のみを使用してデータにアクセス FORCESEEK クラスタ化インデックス、非クラスタ化インデックスに有効 ©2011 Microsoft Corporation. All Rights Reserved.
  • 13. FORCESEEK クエリヒント SEEK 操作のみ指定可能 ~SQL Server 2008 R2 select * from t with (forceseek) SEEK 操作に使用するインデックスと列を指定可能 SQL Server 2012 select * from t with with (forceseek (ix(c1, c2)) ) ©2011 Microsoft Corporation. All Rights Reserved.
  • 15. SQL Server 2008 R2 までは… クエリプラン SQL Server 収集方法 プロファイラ SQLTrace 収集する OR 収集条件 収集しない 自由度低 収集できない 収集時の負荷 高い 環境が多い ©2011 Microsoft Corporation. All Rights Reserved.
  • 16. SQL Server 2012 からは… ツールの追加 拡張イベント Duration OR 収集条件の 収集対象の 収集時の 収集可能な 柔軟な設定 CPU Time 絞り込み可能 負荷軽減 環境の増加 ©2011 Microsoft Corporation. All Rights Reserved.
  • 17. サンプルコード クエリプラン収集イベント: 収集条件: query_post_execution_showplan CPU使用時間 10 秒以上 CREATE EVENT SESSION test_session ADD EVENT sqlserver.query_post_execution_showplan( WHERE ([cpu_time]>=(10000000))) ADD TARGET package0.event_file(SET filename=N'C:¥Program Files¥Microsoft SQL Server¥MSSQL11.ENGINE_DEV¥MSSQL¥Log¥test.xel') WITH ( MAX_MEMORY=4096KB, EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS, MAX_DISPATCH_LATENCY=30 SECONDS, MAX_EVENT_SIZE=0 KB, MEMORY_PARTITION_MODE=NONE, TRACK_CAUSALITY=OFF, STARTUP_STATE=OFF ) GO ©2011 Microsoft Corporation. All Rights Reserved.
  • 19. ページ割り当て状況確認 DBCC IND ~SQL Server 2008 R2 DBCC コマンドのみ DBCC EXTENTINFO データの加工に難あり 動的管理関数: SQL Server 2012 sys.dm_db_database_page_allocations フィルタなどが容易 ©2011 Microsoft Corporation. All Rights Reserved.
  • 20. パラメータなど sys.dm_db_database_page_allocations ( データベースID, オブジェクトID, インデックスID, パーティションID, 出力オプション) – ‘LIMITED’ / ‘DETAILED’ パラメータ select * from sys.dm_db_database_page_allocations( DB_ID(‘db1') , OBJECT_ID(‘tb1') , NULL , NULL , 'DETAILED' ) go サンプルコード ©2011 Microsoft Corporation. All Rights Reserved.
  • 22. クエリ実行に時間がかかる(終わらない)…… 統計情報不正 不適切な カージナリティ クエリ実行プラン 見積もり不正 インデックス不足 クエリ実行プラン収集: 実行プラン内の不正イテレータの特定 調査方法 estimated = × actual = ○ ©2011 Microsoft Corporation. All Rights Reserved.
  • 23. Cardinality estimate framework SET STATISTICS XML ON ~SQL Server 2008 R2 [Actual]プランの収集 SET STATISTICS PROFILE ON クエリが完了時に取得 Cardinality estimate framework(拡張イベント): inaccurate_cardinality_estimate イベント イテレータの実際の出力件数と、見積もり件数との差が閾値を超 SQL Server 2012 えたタイミングでイベント発生 ©2011 Microsoft Corporation. All Rights Reserved.
  • 24. イベント発生のしきい値 見積もり行数が1行の場合 オプティマイザがイテレータの見積もり行数を1行と見積もったケース。 イテレータの実際の処理数が2行以上になるとイベントが発生。 見積もり行数が2から100,000の場合 見積もり行数の5倍以上の行数をイテレータが処理するとイベントが発生。 見積もり行数が100,000より大きい場合 見積もり行数が、100,000より大きい場合。 イベントが発生するときの閾値は次の式で算出。 100,000 * (5-1.2) + 1.2 *[見積もり行数]. ©2011 Microsoft Corporation. All Rights Reserved.
  • 25. 注意が必要なポイント クエリが効率的に実行されていてもイベントが発生す ることがある ノイズ (FALSE POSITIVE ケース) 負荷 内部的には statistics profile の収集が有効化される - 過少見積もり パフォーマンスへの影響大 過剰見積もり - 過剰見積もり 不検知 パフォーマンスへの影響小 ノイズ 発生率高 - 並列クエリの見積もり 見積もり行数を単純に並列数で均等に割った値 - 実際に各スレッドが処理する行数 並列クエリ データの配置状況などによって必ずしも均等に処理されるとは限らない ©2011 Microsoft Corporation. All Rights Reserved.
  • 26. © © 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. 26