SlideShare a Scribd company logo
SQL Server   インデックスの仕組みと
             断片化、
             再構築の必要性について



2012/02/14
インフラグループ 大和屋貴仁
細かいお話の前に……

データベースのデータは、


FusionIOなどの物理ディスク


に書き込んで、保存します。
Chapter. 1
物理ディスクのデータ格納のおさらい
    ざっくりとした説明をします。
    概念レベルなので、
    詳しい人にしたら、間違ってる箇所も。。。
物理ディスクのデータ格納

物理ディスクにデータを格納する時は、
最初に部屋を確保します。

どーんと、広いフロアから人を探すの
大変ですよね?
              ↓まず、部屋を確保
              ●




   Aさん→   ●
                  ↑Aさん専用の部屋
物理ディスクのデータ格納

どーんと、広いフロアに部屋を
たくさん作っていきます。




 ●      ←こんな感じで、新しいデータを
        いれる度に部屋を確保します。
物理ディスクのデータ格納

Aさんが太って、
部屋におさまらない場合は?




●
  ←はみ出しちゃう!!でも、はみ出したら迷惑。
物理ディスクのデータ格納

Aさんの部屋を
大きくしてあげたら良いよね!




          ●
          ↑Aさんの部屋を大きくしてあげれば良い。
物理ディスクのデータ格納

部屋を並べ替えたら、
Aさんの部屋も収納できるけど……




 ●
        ←部屋を並べ替えてあげれば、
         Aさんの部屋を確保できるけど……
         Aさんだけの為に、わざわざ部屋並べ替えるの
         手間だよね。
物理ディスクのデータ格納

Aさんを切り刻め!!
物理ディスクのデータ格納

切り刻んだAさんを
あっちこっちにあるAさんの部屋に格納。
物理ディスクのデータ格納

え!?
Aさんが必要!?まじか……。
Aさん切り刻んでるから、まず集めなきゃ。



         あっちこちにちらばっているAさんの部屋から
         Aさんだった残骸を集めて!
物理ディスクのデータ格納

集めたAさんを
くっつけて、Aさん復活!。




           ●
物理ディスクのデータ格納

ちなみに、
もっとAさんがでっかくなったり、
タイミングによっては……




         Aさんの部屋が増えて、
         あっちこっちに散らばって、
         集めるのが大変!!
物理ディスクのデータ格納

どれぐらい散らばっているかを示すのが

断片化率

と言います。
物理ディスクのデータ格納

デフラグ
って聞いたことありません?


  こんな画面でやったデフラグ→
物理ディスクのデータ格納

デフラグって、
切り刻んだAさんをくっつけて、
1個の部屋を用意してあげること。




 ●
         そう!
         面倒だから、やらなかった
         部屋の並べ替えですね。
Chapter. 2
SQL Serverのインデックスの再構築
      ざっくりとした説明をします。
      概念レベルなので、
      詳しい人にしたら、間違ってる箇所も。。。
もう一度言います

データベースのデータは、


FusionIOなどの物理ディスク


に書き込んで、保存します。
物理ディスクのデータ格納

データはディスクに書き込むんだから、

断片化とは無縁ではありません。
SQL Serverのインデックス

  B-Tree式です。
                           UserID



         UserID                                 UserID
         1~10000                                10001~


UserID             UserID               UserID           UserID
1~5000             5001~10000           10001~15000      15001~

UserID    UserID        UserID
1~1000    1001~2000     2001~3000


                   UserID           UserID      UserID
                   2001~2100        2101~2200   2201~2300
SQL Serverのインデックス

  インデックスとディスクが
  関係しています。

UserID   UserID       UserID
1~1000   1001~2000    2001~3000


                 UserID       UserID      UserID
                 2001~2100    2101~2200   2201~2300




                インデックスの下に物理ディスクがあります。
SQL Serverのインデックス

  で、断片化が進むと……。
                            ユーザID2001~2100を参照するのに
     UserID
     2001~3000              あっちこちを見ないと、いけなくなる。

UserID       UserID      UserID
2001~2100    2101~2200   2201~2300
物理ディスクのデータ格納

データベースの中で、
断片化したデータを整理整頓するのが
インデックスの再構築です。

物理ディスク上に散らばっているデータを
整理整頓する作業です。
インデックスの再構築は

物理ディスク上に散らばっているデータを
物理的に整理整頓する作業です。

物理的に並べ替えているので、
途中でキャンセルすると、
元に戻します。
       掃除をはじめて20分たったときに、
       キャンセルすると
       掃除をやめるのではなく、
       掃除を始める前の状態にもどします。

       キャンセルすると20分とは言いませんが、
       案外時間かかることもあります。
テーブルが断片化すると?

• データを参照するのに、
       CPU負荷が増えます。
       Disk I/Oが増えます。
       参照時間が増えます。
• データを更新するのに
       Diskスペースを確保し、
       データを切り刻むので、
       CPU負荷が増えます。
       Disk I/Oが増えます。
       更新時間が増えます。
データの断片化は……

• データの更新、削除をしていけば
  必ず断片化します。
• データ量が増えれば、増えるほど、
  断片化によるオーバヘッドが増えます。
インデックスの再構築は

• 断片化率が高いほど、再構築に時間が
  かかります。
• データ量が多いほど、再構築に時間が
  かかります。
ご利用は計画的に。

DB性能に問題が無い段階でも、
定期的に、
断片化率の高いテーブルのインデックスを
再構築しておくことで、
トータルでのメンテ時間は短縮できます。
IndexView
 ツールの準備中。
 再構築が必要なインデックスの選定、
 再構築時の進捗確認
 などが、
 しやすいようにツールを作り始めてます。




 http://sqlazure.jp/r/sql-server/260/

More Related Content

PDF
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
PDF
Embulk 20150411
PPTX
技術者として抑えておきたい Power BI アーキテクチャ
PDF
Redmine + MySQL 応答性能の調査結果と対策
PPTX
分散システムについて語らせてくれ
PDF
使ってみた!ioMemoryで実現する噂のAtomic write!
 
PPTX
Sql server のバックアップとリストアの基礎
PDF
Dockerfile を書くためのベストプラクティス解説編
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
Embulk 20150411
技術者として抑えておきたい Power BI アーキテクチャ
Redmine + MySQL 応答性能の調査結果と対策
分散システムについて語らせてくれ
使ってみた!ioMemoryで実現する噂のAtomic write!
 
Sql server のバックアップとリストアの基礎
Dockerfile を書くためのベストプラクティス解説編

What's hot (20)

PDF
DDDを実践できるエンジニアを育成するための取り組みについて
PPTX
データ分析基盤を支えるエンジニアリング
PDF
SQL Server運用実践 - 3年間80台の運用経験から20の教訓
PDF
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
PDF
Hadoopの標準GUI HUEの最新情報
PDF
مقدمة في قواعد البيانات
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
PDF
DB2の使い方 管理ツール編
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
PPTX
CPUの創りかた
PDF
リクルートライフスタイル流!分析基盤との賢い付き合い方
PDF
データベース技術の羅針盤
PDF
FIDO認証によるパスワードレスログイン実装入門
PDF
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
PDF
Datadog Agent on CloudRunによるGCPトレービリティ向上
PDF
ソーシャルゲームのためのデータベース設計
PDF
OpenID ConnectとSCIMの標準化動向
PDF
意識の低い自動化
PDF
イミュータブルデータモデル(入門編)
DDDを実践できるエンジニアを育成するための取り組みについて
データ分析基盤を支えるエンジニアリング
SQL Server運用実践 - 3年間80台の運用経験から20の教訓
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
Hadoopの標準GUI HUEの最新情報
مقدمة في قواعد البيانات
分散トレーシング技術について(Open tracingやjaeger)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
DB2の使い方 管理ツール編
コンテナの作り方「Dockerは裏方で何をしているのか?」
CPUの創りかた
リクルートライフスタイル流!分析基盤との賢い付き合い方
データベース技術の羅針盤
FIDO認証によるパスワードレスログイン実装入門
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
Datadog Agent on CloudRunによるGCPトレービリティ向上
ソーシャルゲームのためのデータベース設計
OpenID ConnectとSCIMの標準化動向
意識の低い自動化
イミュータブルデータモデル(入門編)
Ad

Similar to Sql serverインデックスの断片化と再構築の必要性について (20)

PPTX
Sql server 運用 101
PDF
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
PDF
Sql server 構築 運用 tips
PDF
C13 SQL Server2012知られざるTips集 by 平山理
PDF
データベースのインデックスの種類と内部の仕組み.pdf
PPTX
SQL Server Performance Tuning Essentials
PDF
Sql server data store data access internals
PDF
COD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアル
PDF
SQL Server のインデックス設計
PDF
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
PDF
SQL Server中級者のための実践で使えるかもしれないTips集
PDF
A25 sql server data page structure deep dive
PDF
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
PPTX
Sql server sql database 最新機能紹介
PDF
Seas で語られたこととは?
PPTX
Microsoft Azure - SQL Data Warehouse
PDF
Dat004 開発者に捧ぐ「sql server_2016_
PDF
[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...
PDF
MySQL 5.5 Update #denatech
PPTX
開発者の方向けの Sql server(db) t sql 振り返り
Sql server 運用 101
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
Sql server 構築 運用 tips
C13 SQL Server2012知られざるTips集 by 平山理
データベースのインデックスの種類と内部の仕組み.pdf
SQL Server Performance Tuning Essentials
Sql server data store data access internals
COD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアル
SQL Server のインデックス設計
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
SQL Server中級者のための実践で使えるかもしれないTips集
A25 sql server data page structure deep dive
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
Sql server sql database 最新機能紹介
Seas で語られたこととは?
Microsoft Azure - SQL Data Warehouse
Dat004 開発者に捧ぐ「sql server_2016_
[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...
MySQL 5.5 Update #denatech
開発者の方向けの Sql server(db) t sql 振り返り
Ad

More from 貴仁 大和屋 (20)

PPTX
SQL Server 2016 :Managed backup to Azure
PPTX
PPTX
Instrumentation and Telemetry ガイダンス
PPTX
Azure sql database 入門 2014年10月版
PDF
組織のナレッジ共有の促進方法 - 人を動かす
PDF
Azure LT at Japan Oracle User Group
PPTX
Memcached api搭載の「my sql cluster 7.2」
PPTX
2011/12/3 わんくま同盟
PPTX
2011/11/26 Dot netlab
PPTX
Sql azureデータバックアップ方法
PPTX
Windows azureストレージの耐障害性
PPTX
Sql azure入門
PPTX
2012年1月技術ひろば
PDF
マニアックス5Sql azure
PPTX
Light switch × sql azure
PPTX
Sqlto azure前座
PPTX
Windows Azure BootCamp - SQL Azure
PPTX
Sql azure database copy
PPTX
Windows Phone 7 Series初めの一歩
PDF
SQL Server 2016 :Managed backup to Azure
Instrumentation and Telemetry ガイダンス
Azure sql database 入門 2014年10月版
組織のナレッジ共有の促進方法 - 人を動かす
Azure LT at Japan Oracle User Group
Memcached api搭載の「my sql cluster 7.2」
2011/12/3 わんくま同盟
2011/11/26 Dot netlab
Sql azureデータバックアップ方法
Windows azureストレージの耐障害性
Sql azure入門
2012年1月技術ひろば
マニアックス5Sql azure
Light switch × sql azure
Sqlto azure前座
Windows Azure BootCamp - SQL Azure
Sql azure database copy
Windows Phone 7 Series初めの一歩

Sql serverインデックスの断片化と再構築の必要性について