Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
超入門!  DataBase基礎の基礎〜どうしてDBはデータを高速検索できるのか〜2013/7/1松澤	 文明
今回は、DBがどうしてデータを高速検索できるのかをテーマにざっくりと検索の仕組みを解説します。2
DBって難しい仕組みで検索してるって思っていません?3
DBを本に例えるなら「DBからデータを取得すること」は「本から語句を調べること」をイメージすればOKです。4
まずは、オプティマイザって知ってますか?5
オプティマイゼーション:最適化(optimization )6
オプティマイザってDBにあって、こいつが人間の命令を解析してDBのデータを効率的に検索する役割をしています。7
オプティマイザは人間の命令を受けて、「統計情報」というデータに関する情報を使ってデータの検索方法を考えます。8
そのオプティマイザの考えた検索方法を、9
実行計画10
でも、ちゃんと指示してあげないとデータを一個一個調べていきます。11
だから、その実行計画が良くないと大量のデータ(分厚い本)は調べるのに時間が掛かることも・・・12
そして、「DB遅せーよ!」と言われるのです。13
14© カラー・GAINAX
人間は本から何か調べるとき、本の後ろをみると索引があって、それを使うと早く調べられますよね15
ん・・・索引?=インデックス!16
でも、DBのインデックスってなんだかよくわからないですよね?17
解説の前にちょっと前知識ユニークID・・・DB内でレコードを一意に識別し、物理的に格納している位置を示すID18
では、インデックスってデータを見れない表をイメージして下さい。19
例えば、顧客名のインデックスは20ユニークID 顧客ID	456781	 A0001	387907	 A0002	975578	 B0002	987656	 C0001	ユニークID 顧客ID	 顧客名	 ・・・	 ・・・	 項目	456781...
インデックスがないと表を全部読みこんでから取得するので大変!21ユニークID 顧客ID	 顧客名	 ・・・	 ・・・	 項目	456781	 A0001	 うの さぶろう	 ・・・	 ・・・	 うううう	387907	 A0002	 あいかわ ...
なので、インデックスを使うと22ユニークID 顧客ID	456781	 A0001	387907	 A0002	975578	 B0002	987656	 C0001	ユニークID 顧客ID	 顧客名	 ・・・	 ・・・	 項目	456781	...
でも、いいことばかりじゃないです23
インデックスがいっぱいあると・・・24ユニークID 顧客ID	 顧客名	 ・・・	 ・・・	 項目	456781	 A0001	 うの さぶろう	 ・・・	 ・・・	 うううう	387907	 A0002	 あいかわ たろう	 ・・・	 ・・・...
B-木インデックスNULLをインデックスにすることができない。25あ〜と	 な〜よ	 ら〜ん	あ〜お	 か〜こ	 さ〜そ	 な〜の	 ・・・	 や〜よあ	 ・・・	 お	ID	 ・・・	 ID
ビットマップインデックスNULLをインデックスにすることができる。26ユニークID 顧客区分  =“個人”	顧客区分  =“法人”	性別=“男性”	 性別=“女性”	275438	 0	 1	 0	 0	975578	 1	 0	 1	 0	4...
こんな仕組みで検索するので、インデックスはソートされている必要があります。27
コンピュータの仕組みと同じでデータの追加/更新を頻繁にするとインデックスもDB内の保存場所が断片化の様な状態になります。28
だから、デフラグ=再編成(再構築)を時々して解消します。29
インデックスのメンテナンスも検索スピードを高速に保つには重要な要素となります。30
こんな仕組みでDBはデータを高速検索するのです。31
おわり32
Upcoming SlideShare
Loading in …5
×

超入門データベース基礎の基礎

2,056 views

Published on

Published in: Technology
  • Be the first to comment

超入門データベース基礎の基礎

  1. 1. 超入門!  DataBase基礎の基礎〜どうしてDBはデータを高速検索できるのか〜2013/7/1松澤 文明
  2. 2. 今回は、DBがどうしてデータを高速検索できるのかをテーマにざっくりと検索の仕組みを解説します。2
  3. 3. DBって難しい仕組みで検索してるって思っていません?3
  4. 4. DBを本に例えるなら「DBからデータを取得すること」は「本から語句を調べること」をイメージすればOKです。4
  5. 5. まずは、オプティマイザって知ってますか?5
  6. 6. オプティマイゼーション:最適化(optimization )6
  7. 7. オプティマイザってDBにあって、こいつが人間の命令を解析してDBのデータを効率的に検索する役割をしています。7
  8. 8. オプティマイザは人間の命令を受けて、「統計情報」というデータに関する情報を使ってデータの検索方法を考えます。8
  9. 9. そのオプティマイザの考えた検索方法を、9
  10. 10. 実行計画10
  11. 11. でも、ちゃんと指示してあげないとデータを一個一個調べていきます。11
  12. 12. だから、その実行計画が良くないと大量のデータ(分厚い本)は調べるのに時間が掛かることも・・・12
  13. 13. そして、「DB遅せーよ!」と言われるのです。13
  14. 14. 14© カラー・GAINAX
  15. 15. 人間は本から何か調べるとき、本の後ろをみると索引があって、それを使うと早く調べられますよね15
  16. 16. ん・・・索引?=インデックス!16
  17. 17. でも、DBのインデックスってなんだかよくわからないですよね?17
  18. 18. 解説の前にちょっと前知識ユニークID・・・DB内でレコードを一意に識別し、物理的に格納している位置を示すID18
  19. 19. では、インデックスってデータを見れない表をイメージして下さい。19
  20. 20. 例えば、顧客名のインデックスは20ユニークID 顧客ID 456781 A0001 387907 A0002 975578 B0002 987656 C0001 ユニークID 顧客ID 顧客名 ・・・ ・・・ 項目 456781 A0001 うの さぶろう ・・・ ・・・ うううう 387907 A0002 あいかわ たろう ・・・ ・・・ あああ 975578 B0002 いしい じろう ・・・ ・・・ いいい 987656 C0001 えのき はなこ ・・・ ・・・ ええええ インデックス 表
  21. 21. インデックスがないと表を全部読みこんでから取得するので大変!21ユニークID 顧客ID 顧客名 ・・・ ・・・ 項目 456781 A0001 うの さぶろう ・・・ ・・・ うううう 387907 A0002 あいかわ たろう ・・・ ・・・ あああ 975578 B0002 いしい じろう ・・・ ・・・ いいい 987656 C0001 えのき はなこ ・・・ ・・・ ええええ 表
  22. 22. なので、インデックスを使うと22ユニークID 顧客ID 456781 A0001 387907 A0002 975578 B0002 987656 C0001 ユニークID 顧客ID 顧客名 ・・・ ・・・ 項目 456781 A0001 うの さぶろう ・・・ ・・・ うううう 387907 A0002 あいかわ たろう ・・・ ・・・ あああ 975578 B0002 いしい じろう ・・・ ・・・ いいい 987656 C0001 えのき はなこ ・・・ ・・・ ええええ 表 インデックス
  23. 23. でも、いいことばかりじゃないです23
  24. 24. インデックスがいっぱいあると・・・24ユニークID 顧客ID 顧客名 ・・・ ・・・ 項目 456781 A0001 うの さぶろう ・・・ ・・・ うううう 387907 A0002 あいかわ たろう ・・・ ・・・ あああ 975578 B0002 いしい じろう ・・・ ・・・ いいい 999999 D0001 おの あきこ ・・・ ・・・ おおお XXX X X X X X X X 更新のときに、インデックスにも更新が必要なので、処理時間が増加する。
  25. 25. B-木インデックスNULLをインデックスにすることができない。25あ〜と な〜よ ら〜ん あ〜お か〜こ さ〜そ な〜の ・・・ や〜よあ ・・・ お ID ・・・ ID
  26. 26. ビットマップインデックスNULLをインデックスにすることができる。26ユニークID 顧客区分  =“個人” 顧客区分  =“法人” 性別=“男性” 性別=“女性” 275438 0 1 0 0 975578 1 0 1 0 456781 1 0 1 0 987656 1 0 0 1
  27. 27. こんな仕組みで検索するので、インデックスはソートされている必要があります。27
  28. 28. コンピュータの仕組みと同じでデータの追加/更新を頻繁にするとインデックスもDB内の保存場所が断片化の様な状態になります。28
  29. 29. だから、デフラグ=再編成(再構築)を時々して解消します。29
  30. 30. インデックスのメンテナンスも検索スピードを高速に保つには重要な要素となります。30
  31. 31. こんな仕組みでDBはデータを高速検索するのです。31
  32. 32. おわり32

×