第 6 回 nt-committee2 北海道勉強会

53
6 6 NT-Committee2 NT-Committee2 第第第第第第 第第第第第第 NT-Committee2 & Tech-Ezo NT-Committee2 & Tech-Ezo Joint Meeting Joint Meeting (Tech-Ezo Round 16) (Tech-Ezo Round 16)

Upload: temima

Post on 28-Jan-2016

43 views

Category:

Documents


0 download

DESCRIPTION

第 6 回 NT-Committee2 北海道勉強会. NT-Committee2 & Tech-Ezo Joint Meeting (Tech-Ezo Round 16). アジェンダ. データベースシステムのセキュリティ SQL Server のパフォーマンスを味わう. データベースシステム セキュリティ. セキュリティの現状. Internet Explorer, Outlook, IIS の脆弱性は頻繁に報告されている。 しかし データベース関連の脆弱性はほとんど騒がれていない しかし 重要. マイクロソフトのセキュリティ. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第  6  回  NT-Committee2 北海道勉強会

第 第 6 6 回 回 NT-Committee2NT-Committee2北海道勉強会北海道勉強会

NT-Committee2 & Tech-Ezo Joint NT-Committee2 & Tech-Ezo Joint MeetingMeeting

(Tech-Ezo Round 16)(Tech-Ezo Round 16)

Page 2: 第  6  回  NT-Committee2 北海道勉強会

アジェンダアジェンダ

• データベースシステデータベースシステムのセキュリティムのセキュリティ

• SQL Server SQL Server のパフのパフォーマンスを味わうォーマンスを味わう

Page 3: 第  6  回  NT-Committee2 北海道勉強会

データベースシステムデータベースシステムセキュリティセキュリティ

Page 4: 第  6  回  NT-Committee2 北海道勉強会

セキュリティの現状セキュリティの現状

• Internet Explorer, Outlook, IIS Internet Explorer, Outlook, IIS の脆弱の脆弱性は頻繁に報告されている。性は頻繁に報告されている。

• しかししかし• データベース関連の脆弱性はほとんど騒データベース関連の脆弱性はほとんど騒

がれていないがれていない• しかししかし• 重要重要

Page 5: 第  6  回  NT-Committee2 北海道勉強会

マイクロソフトのセキュリティマイクロソフトのセキュリティ

• 昨年末に 昨年末に STPP STPP を発表を発表• ストラテジック・テクノロジ・プロテクストラテジック・テクノロジ・プロテク

ション・プログラムション・プログラム• Security Summit 2001Security Summit 2001

http://www.microsoft.com/japan/techhttp://www.microsoft.com/japan/technet/tcevents/olseminars/sec2001/net/tcevents/olseminars/sec2001/

Page 6: 第  6  回  NT-Committee2 北海道勉強会

ただしく理解していくただしく理解していく

• 「わたしは、「わたしは、 Outlook Outlook じゃないから大丈じゃないから大丈夫」夫」– でも、パスワードつけていませんね。でも、パスワードつけていませんね。– パスワードは暗号化されずにネットワークにパスワードは暗号化されずにネットワークに

流していますね。流していますね。– 無線無線 LANLAN の暗号キーも設定されていませんね。の暗号キーも設定されていませんね。– サーバーには誰でも触れますねサーバーには誰でも触れますね– では。。。では。。。

Page 7: 第  6  回  NT-Committee2 北海道勉強会

ソフトウェアの適材適所ソフトウェアの適材適所

• 「うちの部のサーバは、「うちの部のサーバは、 Windows 2000Windows 2000 で」で」• 「この部署は「この部署は Apache/Linux/Perl Apache/Linux/Perl でいいね」でいいね」

– でも、運用担当者はひとりですねでも、運用担当者はひとりですね– 開発者は数人で、開発者は数人で、 ASPASP 、、 CGI CGI のセキュリティ両方のセキュリティ両方

勉強しつづけるだけの体力はなさそう。勉強しつづけるだけの体力はなさそう。– どちらかがクラックされたら、代替サーバ、代替どちらかがクラックされたら、代替サーバ、代替

運用できるの 運用できるの ??

Page 8: 第  6  回  NT-Committee2 北海道勉強会

どうすればどうすれば

• 適切なコストの範囲内で、正しい理解と適切なコストの範囲内で、正しい理解と情報収集を続ける情報収集を続ける

• 重大な問題発生は、ウィルスやワームだ重大な問題発生は、ウィルスやワームだけではない。けではない。

• 組織に重大な打撃を与えるのは、内部犯組織に重大な打撃を与えるのは、内部犯

Page 9: 第  6  回  NT-Committee2 北海道勉強会

さらにさらに

• 定期的に監査定期的に監査– システムの設定、パッチが適切であるか確認システムの設定、パッチが適切であるか確認

• 定期的にペネトレーションテスト定期的にペネトレーションテスト– パスワードアタックや疑似攻撃パスワードアタックや疑似攻撃– システムに脆弱性がないか確認システムに脆弱性がないか確認

• システムの変更、更新を監視システムの変更、更新を監視• 体制、行動の明文化体制、行動の明文化

Page 10: 第  6  回  NT-Committee2 北海道勉強会

SQL ServerSQL Server のセキュリティのセキュリティ

• PASSJ PASSJ セキュリティ分科会セキュリティ分科会• Professional Association for SQL Server JaProfessional Association for SQL Server Ja

panpan• セキュリティ分科会を設置セキュリティ分科会を設置• 主にメーリングリストを中心主にメーリングリストを中心• メーリングリスト参加者 約メーリングリスト参加者 約 1,800-1,800-• http://www.sqlpassj.org/security/http://www.sqlpassj.org/security/

Page 11: 第  6  回  NT-Committee2 北海道勉強会

SQL Server SQL Server のセキュリティ のセキュリティ ??

• SQL ServerSQL Server のセキュリティ情報って、マのセキュリティ情報って、マイクロソフトの書籍やサイトにいろいろイクロソフトの書籍やサイトにいろいろ情報があって十分 情報があって十分 ??

• アクセス権の設定の仕方や、アカウントアクセス権の設定の仕方や、アカウントの管理方法のこと の管理方法のこと ??

Page 12: 第  6  回  NT-Committee2 北海道勉強会

SQL Server SQL Server の脆弱性 の脆弱性 ??

• SQL Server SQL Server の脆弱性って、別にたいしたの脆弱性って、別にたいした数はないように思うんですが 数はないように思うんですが !?!?

• 基本的にアカウント管理をしっかりして、基本的にアカウント管理をしっかりして、パスワードをつけていたら、だいじょうぶパスワードをつけていたら、だいじょうぶじゃない じゃない ??

• ファイアウォール設置しているからファイアウォール設置しているから ..

• それほど重要なデータを置いていないからそれほど重要なデータを置いていないから ..

Page 13: 第  6  回  NT-Committee2 北海道勉強会

わたしもわたしも ....

• わたしも分科会をはじめたときは。わたしも分科会をはじめたときは。• SQL Server SQL Server のハッキング、クラッキングのハッキング、クラッキング

情報って、どこに。。。情報って、どこに。。。• しかし、しかし、• 調べ始めると。。。調べ始めると。。。

Page 14: 第  6  回  NT-Committee2 北海道勉強会

PASSJ PASSJ セキュリティ分科会セキュリティ分科会

• 発言数 発言数 266 (2002/3/7 266 (2002/3/7 現在現在 ))

• 脆弱性報告脆弱性報告• 危険な設定危険な設定• 監査ツール監査ツール• ペネトレーションツールペネトレーションツール• 管理ツール管理ツール• イベント、サイト情報イベント、サイト情報

Page 15: 第  6  回  NT-Committee2 北海道勉強会

管理管理 : HFNetChk: HFNetChk

• マイクロソフト マイクロソフト HFNetChkHFNetChk– パッチ適応状況を確認するツールパッチ適応状況を確認するツール– 適応されていないパッチの一覧を表示適応されていないパッチの一覧を表示– サブネットを一気に調べることもできるサブネットを一気に調べることもできる– パッチ情報は、コマンド実行時に自動的にダパッチ情報は、コマンド実行時に自動的にダ

ウンロードウンロード– お勧めお勧め

毎日すべてコンピュータに自動毎日すべてコンピュータに自動

Page 16: 第  6  回  NT-Committee2 北海道勉強会

管理管理 :Tripwire:Tripwire

• トリップワイヤ トリップワイヤ TripwireTripwire

• ファイル、レジストリなどの変更を定期ファイル、レジストリなどの変更を定期的にテスト的にテスト

• 改ざん、トロイの木馬、バックドアの設改ざん、トロイの木馬、バックドアの設置を早期に検知置を早期に検知

• どのように守っていても、侵入を検知でどのように守っていても、侵入を検知できなければ意味がない。きなければ意味がない。

Page 17: 第  6  回  NT-Committee2 北海道勉強会

管理管理 : InstallWatch,InstallRite: InstallWatch,InstallRite

• 本来はインストーラ作成ツール本来はインストーラ作成ツール• Tripwire Tripwire の代わりにつかえそうの代わりにつかえそう• A poor-man Tripwire-like system on WindowA poor-man Tripwire-like system on Window

s 9x/NT by Floydian s 9x/NT by Floydian http://www.geocities.com/floydian_99/pohttp://www.geocities.com/floydian_99/poormantripwire.htmlormantripwire.html

Page 18: 第  6  回  NT-Committee2 北海道勉強会

管理管理 : Snort: Snort

• 侵入検知ツール侵入検知ツール• ネットワーク上に流れるパケットから、不正な情報ネットワーク上に流れるパケットから、不正な情報

を検出するを検出する• SQL7-libs.rules : SQL Server SQL7-libs.rules : SQL Server 用ルール用ルール

– 例例 ::セッションが セッションが sa sa ログインに失敗したときのエラーメッログインに失敗したときのエラーメッセージを検出するセージを検出するalert tcp $HOME_NET 139 -> any any (msg: "MS-SQL sa loalert tcp $HOME_NET 139 -> any any (msg: "MS-SQL sa logon failed"; content:gon failed"; content:"|e630fc30b630fc302000270073006100270020006f30"|e630fc30b630fc302000270073006100270020006f30ed30b030a430f33067304d307e305bed30b030a430f33067304d307e305b309330673057305f300230|"; flags: AP; offset:83;)309330673057305f300230|"; flags: AP; offset:83;)

Page 19: 第  6  回  NT-Committee2 北海道勉強会

管理管理 : Active Registory Monitor: Active Registory Monitor

• レジストリの記録、変化を見るツールレジストリの記録、変化を見るツール• ある時点のレジストリを記録しておけるある時点のレジストリを記録しておける• 任意の時点と比較することができる任意の時点と比較することができる• レジストリの変化を調べるのに便利レジストリの変化を調べるのに便利

Page 20: 第  6  回  NT-Committee2 北海道勉強会

管理管理 : Active Port: Active Port

• TCP/UDPTCP/UDP ポートの状況を確認するツールポートの状況を確認するツール• ポートを使用するプログラムを確認できポートを使用するプログラムを確認でき

るる• 意図しないプログラムがポートをオープ意図しないプログラムがポートをオープ

ンしていないか、確認する。ンしていないか、確認する。• バックドアプログラムの状況も確認バックドアプログラムの状況も確認

Page 21: 第  6  回  NT-Committee2 北海道勉強会

管理管理 : : ネットワークキャプチャネットワークキャプチャ

• ネットワーク上を流れるパケットを見るネットワーク上を流れるパケットを見る• セキュリティ対策の基本セキュリティ対策の基本• お勧めお勧め

– Vigil (SapporoWorks) Vigil (SapporoWorks) シェアウェアシェアウェア : \1,000-: \1,000-– HTTP,SMTP HTTP,SMTP などアプリケーションレイヤのなどアプリケーションレイヤの

デコードをサポートデコードをサポート– 単機能で見やすい単機能で見やすい– ※※Snort Snort と同時に起動すると不安定と同時に起動すると不安定

Page 22: 第  6  回  NT-Committee2 北海道勉強会

管理管理 : : ネットワークキャプチャネットワークキャプチャ

• ネットワークモニタネットワークモニタ– Windows NT/2000 Windows NT/2000 に標準に標準添付添付

• FreePeekFreePeek• PacMonPacMon• VigilVigil• EtherrealEtherreal• CommViewCommView• WinDumpWinDump• NATASNATAS

• NGSSniffNGSSniff• eEye IriseEye Iris• ObserverObserver• AnalyzerAnalyzer

– WinPcap WinPcap の開発元がの開発元が提供提供

• EtherealEthereal

Page 23: 第  6  回  NT-Committee2 北海道勉強会

監査監査 : AppDetective for SQL Serv: AppDetective for SQL Serverer•監査とペネトレーションテスト監査とペネトレーションテスト• サービス不能攻撃 サービス不能攻撃 (DoS)(DoS) 、ブルートフォース、ブルートフォース攻撃攻撃 (( パスワード攻撃パスワード攻撃 ) ) など、など、 3030種類以上種類以上

•現在、ベータ版現在、ベータ版• Oracle, Sybase, Lotus NotesOracle, Sybase, Lotus Notes テストもできるテストもできる• Exhcnage Server, MySQL, DB2 Exhcnage Server, MySQL, DB2 なども予定なども予定• 定期的にサーバーの状態を監視するのにお勧定期的にサーバーの状態を監視するのにお勧

めめ

Page 24: 第  6  回  NT-Committee2 北海道勉強会

危険危険 : xp_cmdshell: xp_cmdshell

• SQL Server SQL Server に標準で提供されているに標準で提供されている• xp_cmdshellxp_cmdshell•任意のコマンドをクエリーから実行できる任意のコマンドをクエリーから実行できる• アドホッククエリーに脆弱性があるとサーアドホッククエリーに脆弱性があるとサー

バーを自由にされてしまう。バーを自由にされてしまう。• 対策対策 : xp_cmdshell : xp_cmdshell を無効にするか、ダを無効にするか、ダミーにするミーにする

Page 25: 第  6  回  NT-Committee2 北海道勉強会

危険危険 : : レジストリを操作できるレジストリを操作できる

•任意のレジストリを操作する拡張スト任意のレジストリを操作する拡張ストアードプロシジャアードプロシジャ

• xp_regread, xp_regwrite xp_regread, xp_regwrite などなど•初期設定では、初期設定では、 sa sa など管理者のみ書きなど管理者のみ書き換え操作を許可。そのほかは、読み込み換え操作を許可。そのほかは、読み込み操作のみ許可操作のみ許可

• しかし、読み込みもできれば許可しないしかし、読み込みもできれば許可しない

Page 26: 第  6  回  NT-Committee2 北海道勉強会

危険危険 : SQL Server : SQL Server の実行権限の実行権限

• SQL Server SQL Server サービスを実行する権限を制サービスを実行する権限を制限すべき限すべき

• 権限が強いと、権限が強いと、 SQL Server SQL Server に侵入されたに侵入された場合、クエリー経由で任意の操作ができる場合、クエリー経由で任意の操作ができる

• 専用アカウントをつくり、必要最小限の権専用アカウントをつくり、必要最小限の権利を与える利を与える

• しかし、必要最小限とは しかし、必要最小限とは ??

Page 27: 第  6  回  NT-Committee2 北海道勉強会

危険危険 : : ストアドプロシジャの暗ストアドプロシジャの暗号化号化• SQL Server SQL Server はストアドプロシジャなどをはストアドプロシジャなどを

暗号化できる暗号化できる• しかししかし•解読ツールが提供されている解読ツールが提供されている• dSQLSRVD (dSQLSRVD ( フリーウェアフリーウェア ))

Page 28: 第  6  回  NT-Committee2 北海道勉強会

危険危険 : : 個人情報、パスワード個人情報、パスワード

•個人情報、認証用パスワードをレコード個人情報、認証用パスワードをレコードのそのまま保存している のそのまま保存している ??

• パスワードを全部持っていかれる可能性パスワードを全部持っていかれる可能性があるがある

• パスワードはハッシュのみ保存するパスワードはハッシュのみ保存する•個人情報は個別に暗号化個人情報は個別に暗号化• ツールツール : xp_crypt: xp_crypt

Page 29: 第  6  回  NT-Committee2 北海道勉強会

危険危険 : SQLServer : SQLServer 認証認証

• 方式方式 : Windows : Windows 認証認証 , SQL Server, SQL Server 認証認証• SQL Server SQL Server 認証方式を利用している人が多認証方式を利用している人が多

いい• しかし、ブルートフォースアタックには。。しかし、ブルートフォースアタックには。。• アタックを検知して、ロックアウトする仕組アタックを検知して、ロックアウトする仕組みがないみがない

• できれば、できれば、 Windows Windows 認証をお勧め認証をお勧め•少なくとも、少なくとも、 ASPASP にパスワードを直接書かにパスワードを直接書か

ないない

Page 30: 第  6  回  NT-Committee2 北海道勉強会

危険危険 : : アドホッククエリーアドホッククエリー

• 実行時にクエリーを組み立てる方法実行時にクエリーを組み立てる方法• s = “select * from U where n=‘” + n + s = “select * from U where n=‘” + n +

“’”“’”

• n n にもし ‘ が入っていたら。にもし ‘ が入っていたら。• うまくすると、別のクエリーを混ぜてしまえうまくすると、別のクエリーを混ぜてしまえ

るる• n : x’ update U set n = ‘-’ –n : x’ update U set n = ‘-’ –

• 推薦推薦 : : 特定のストアドプロシジャのみ許可特定のストアドプロシジャのみ許可

Page 31: 第  6  回  NT-Committee2 北海道勉強会

監査監査 : : パスワードがないユーザパスワードがないユーザ

• selectselect name , password name , passwordfromfrom syslogins sysloginswherewhere password is null password is null and isntuser = 0 and isntuser = 0 and isntgroup =0 and isntgroup =0

Page 32: 第  6  回  NT-Committee2 北海道勉強会

セキュリティまとめセキュリティまとめ

•詳細は、詳細は、 PASSJ PASSJ セキュリティ分科会セキュリティ分科会• データベース設計者・開発者は、エンドユデータベース設計者・開発者は、エンドユ

ーザのニーズを聞くだけではダメーザのニーズを聞くだけではダメ• エンドユーザ・発注者は、マスコミのうわエンドユーザ・発注者は、マスコミのうわ

べのセキュリティに惑わされがちべのセキュリティに惑わされがち• IIS, IEIIS, IE の脆弱性や、ウィルスは氷山の一角の脆弱性や、ウィルスは氷山の一角• 早期に設計者・開発者にもセキュリティ教早期に設計者・開発者にもセキュリティ教育をほどこす体制をつくるべき育をほどこす体制をつくるべき

Page 33: 第  6  回  NT-Committee2 北海道勉強会

SQL Server SQL Server のパフォーマンのパフォーマンスを味わうスを味わう

Page 34: 第  6  回  NT-Committee2 北海道勉強会

SQL Server SQL Server のパフォーマンスのパフォーマンス

• PASSJ PASSJ システム構築分科会を中心に。システム構築分科会を中心に。• Web Web テクノロジ分科会にても取り上げるテクノロジ分科会にても取り上げる

• 推薦本推薦本– アーキテクチャ徹底解説 アーキテクチャ徹底解説 ((日経日経 BP)BP)– SQL Server MagazineSQL Server Magazine– ともにカレン・デラニーさんともにカレン・デラニーさん

Page 35: 第  6  回  NT-Committee2 北海道勉強会

チューニングチューニング

• システム設計、デザインにも大きく関係システム設計、デザインにも大きく関係• SQL Server 2000 SQL Server 2000 の仕組みを理解するの仕組みを理解する• 大きなパフォーマンスアップ、より安価大きなパフォーマンスアップ、より安価

なサーバーでの運用も望めるなサーバーでの運用も望める

Page 36: 第  6  回  NT-Committee2 北海道勉強会

スケールアップ、スケールアウスケールアップ、スケールアウトト• スケールアップスケールアップ

– 4CPU-32CPU, 4CPU-32CPU, メモリ メモリ 4GB – 64GB4GB – 64GB– 単体マシンの性能アップ単体マシンの性能アップ

• スケールアウトスケールアウト– 複数複数 CPUCPU で分散処理で分散処理

Page 37: 第  6  回  NT-Committee2 北海道勉強会

アップか、アウトかアップか、アウトか

• システムに求められシステムに求められるアベイラビリティ、るアベイラビリティ、セキュリティと、かセキュリティと、かけられるコストは けられるコストは !?!?

• 32CPU/32CPU/メモリメモリ 32GB 32GB のサーバーのアベイのサーバーのアベイラビリティが ラビリティが 90% 90% で言い場合は少ないで言い場合は少ない

Page 38: 第  6  回  NT-Committee2 北海道勉強会

アップとアウトとコストアップとアウトとコスト

• セキュリティパッチ適応、修正といったセキュリティパッチ適応、修正といったシステムの計画停止を考えると、すくなシステムの計画停止を考えると、すくなくとも、くとも、 22 台の 台の SQL Server SQL Server が必要。が必要。

• IIS, Active DirectoryIIS, Active Directory は、それぞれ二重は、それぞれ二重化して、ネットワークも二重化化して、ネットワークも二重化

• インターネットの接続だけでなく、インターネットの接続だけでなく、 SQL SQL Server Server の前にも の前にも Firewall (Firewall ( もちろん二もちろん二重化重化 ))

Page 39: 第  6  回  NT-Committee2 北海道勉強会

9.11 9.11 以後以後

•遠隔地へのディザスタリカバリ体制遠隔地へのディザスタリカバリ体制• どんな災害時にもどんな災害時にも 11 時間以上前のトラン時間以上前のトラン

ザクションを消さない体制ザクションを消さない体制• クラックによる改ざんへの対応クラックによる改ざんへの対応

Page 40: 第  6  回  NT-Committee2 北海道勉強会

限られたコストの中で限られたコストの中で

• 限られたコストの中で、限られたコストの中で、 SQL Server SQL Server ををより効率的に使いきれる技術が必要より効率的に使いきれる技術が必要

• 2CPU 2CPU 必要な処理を 必要な処理を 1CPU1CPU で十分になれで十分になれば、システムの二重化にコストを回せる。ば、システムの二重化にコストを回せる。

Page 41: 第  6  回  NT-Committee2 北海道勉強会

SQL Server SQL Server チューニングポイチューニングポイントント• クエリプロセッサを理解するクエリプロセッサを理解する

•「アーキテクチャ徹底解説」 「アーキテクチャ徹底解説」 • Microsoft SQL Server 2000Microsoft SQL Server 2000

• 第第 1515 章クエリプロセッサ章クエリプロセッサhttp://www.microsoft.com/japan/techhttp://www.microsoft.com/japan/technet/prodtechnol/sql/books/insidesql/net/prodtechnol/sql/books/insidesql/

Page 42: 第  6  回  NT-Committee2 北海道勉強会

クエリーチューニングクエリーチューニング• クエリーアナライザを活用クエリーアナライザを活用• プランの表示プランの表示• スキャン回数表示スキャン回数表示

– set statistics io onset statistics io on• CPUCPU時間 表示時間 表示

– set statistics time onset statistics time on• プロファイル表示プロファイル表示

– set statistics profile onset statistics profile on• プラン表示プラン表示

– set showplan_text onset showplan_text on– set showplan_all onset showplan_all on

• メーリングリスト投稿のときに是非メーリングリスト投稿のときに是非

Page 43: 第  6  回  NT-Committee2 北海道勉強会

select * select * は使わないは使わない

• select * from tableselect * from table

• すべてカラムを取ってきてしまうすべてカラムを取ってきてしまう•不要なカラムへのアクセスは、チューニ不要なカラムへのアクセスは、チューニ

ングを阻害するングを阻害する• 必要なカラムのみ、取得するように。必要なカラムのみ、取得するように。

Page 44: 第  6  回  NT-Committee2 北海道勉強会

カバリングインデックスカバリングインデックス

• select [select [ 名前名前 ], [], [ 性別性別 ] from persons] from personswhere [where [ 年齢年齢 ] = 30] = 30

• インデックスをインデックスを [[ 年齢年齢 ] ] でとっているとでとっていると名前、性別のカラムを下のテーブルにも名前、性別のカラムを下のテーブルにもアクセスが必要アクセスが必要

• [[ 年齢年齢 ][][名前名前 ][][ 性別性別 ] ] でインデックスをでインデックスをとっていると、インデックスのみのアクとっていると、インデックスのみのアクセスで終了セスで終了

Page 45: 第  6  回  NT-Committee2 北海道勉強会

インデックスの種類インデックスの種類

• SQL Server SQL Server のインデックスはのインデックスは B-TreeB-Tree が基が基本本

• クラスタ化インデックスクラスタ化インデックス– ディスク上には、インデックス順に並び替えられディスク上には、インデックス順に並び替えられ

ている。ている。•非クラスタ化インデックス非クラスタ化インデックス

– インデックス対照のカラムに並び替えられている。インデックス対照のカラムに並び替えられている。– 元テーブルへの参照は、クラスタ化インデックス元テーブルへの参照は、クラスタ化インデックス

のカラムを利用のカラムを利用

Page 46: 第  6  回  NT-Committee2 北海道勉強会

インデックスが使われないインデックスが使われない

•せっかく設定したインデックスが、クエリせっかく設定したインデックスが、クエリープロセッサに利用されていない場合があープロセッサに利用されていない場合があるる

• しかし、よくページアクセス参照回数を見しかし、よくページアクセス参照回数を見ようよう

• かならずしも、インデックスをつかったかかならずしも、インデックスをつかったから早いわけではないら早いわけではない

• 特に、非クラスタ化インデックス特に、非クラスタ化インデックス

Page 47: 第  6  回  NT-Committee2 北海道勉強会

ヒット件数が多いとヒット件数が多いと

•条件に一致する件数が多いと非クラスタ条件に一致する件数が多いと非クラスタ化インデックスが使われないケース化インデックスが使われないケース

•境界となる件数はテーブルによって異な境界となる件数はテーブルによって異なる。る。

• 理由理由 ::– インデックスに含まれないカラムは、元のテインデックスに含まれないカラムは、元のテ

ーブルにアクセスして取得する必要がある。ーブルにアクセスして取得する必要がある。– 論理読み取り回数を確認する論理読み取り回数を確認する

Page 48: 第  6  回  NT-Committee2 北海道勉強会

検索引数 検索引数 SARGSARG

• Where Where で指定する条件には、クエリーオで指定する条件には、クエリーオプティマイザが使うものと使わないものがプティマイザが使うものと使わないものがある。ある。

• SARG : Search ArgumentSARG : Search Argument– Where [Where [ 年齢年齢 ] = 30] = 30

• 使われない例使われない例– Where [Where [住所住所 ] Like ‘%] Like ‘%県’県’

• インデックスがあっても、インデックスがあっても、 SEEKSEEK ではなく、ではなく、SCAN SCAN になる。になる。

Page 49: 第  6  回  NT-Committee2 北海道勉強会

SARG SARG になるように書き換えになるように書き換え

• Where Substring([Where Substring([ 名前名前 ],1,1) = ‘c’],1,1) = ‘c’

• これは これは SARG SARG にならないにならない• インデックスのインデックスの B-TreeB-Tree をたどって検索でをたどって検索で

きるわけではない。きるわけではない。• 書き換え書き換え• WhereWhere   [[名前名前 ] >= ‘c’ and [] >= ‘c’ and [ 名前名前 ] < ‘d’] < ‘d’

Page 50: 第  6  回  NT-Committee2 北海道勉強会

さらに、書き換えさらに、書き換え

• Where ABS(x) < 10Where ABS(x) < 10• これを書き換えるこれを書き換える• Where x > -10 and x < 10Where x > -10 and x < 10• わずかな修正で大きなパフォーマンスのわずかな修正で大きなパフォーマンスの差になる。差になる。

Page 51: 第  6  回  NT-Committee2 北海道勉強会

実数は 実数は SARG SARG にならないにならない

•地図情報、座標などで実数地図情報、座標などで実数• where px < 0.05where px < 0.05• インデックス用に整数にしたカラムを作インデックス用に整数にしたカラムを作

るのも方法るのも方法• メーリングリストにて、ある座標にもっメーリングリストにて、ある座標にもっ

とも近いレコードを調べるというスレッとも近いレコードを調べるというスレッドを提供。ドを提供。

Page 52: 第  6  回  NT-Committee2 北海道勉強会

負荷テスト負荷テスト

• チューニングは、トータル性能で行う。チューニングは、トータル性能で行う。• 部分的なチューニングは、実環境でマイナ部分的なチューニングは、実環境でマイナ

スに働くことがある。スに働くことがある。– 例例 : : クエリー処理は短時間で終わるようになっクエリー処理は短時間で終わるようになっ

た。た。– しかし、メモリを大量に消費するしかし、メモリを大量に消費する– あるいは、同時実行性能が犠牲に。あるいは、同時実行性能が犠牲に。

• ベンチマークテストツールの活用ベンチマークテストツールの活用– WAS (Web Application Stress Tool) WAS (Web Application Stress Tool) などなど

Page 53: 第  6  回  NT-Committee2 北海道勉強会

チューニングまとめチューニングまとめ

• チューニングに常に正解といわれるものはチューニングに常に正解といわれるものは少ない。少ない。

• テストを繰り返して、ネックとなっているテストを繰り返して、ネックとなっている部分、クエリープランの動作を絞り込んで部分、クエリープランの動作を絞り込んでいく。いく。

•メーリングリストでは、できるかぎりモデメーリングリストでは、できるかぎりモデルを作って対応ルを作って対応

•投稿する場合は、できるだけ実際に近い形投稿する場合は、できるだけ実際に近い形で質問する。で質問する。