DBパフォーマンスチューニングの基礎 HN おいろん.

Slides:



Advertisements
Similar presentations
SQL による数独の解法 青山学院大学理工学部 矢吹太朗・佐久田博司. 数独とは何か ナンプレとも呼ばれ る制約充足問題 各行・列・ブロック に 1 から 9 の数字を一 つずつ当てはめる 新聞等に載っている ものはとても簡単 人間には難しいもの → もある.
Advertisements

Internet Explorer 障害解析 最初の一歩 - IE のトラブルを理解する -. 概要 Internet Explorer を使用中に発生するトラブルの 種類と、調査のための切り分け方法を紹介します! (以降は IE と略称で表記します) よくあるお問い合わせ Web ページの表示が白画面のまま完了しない.
実践!DB逆設計 ~レシートからER図を起こす~
IIS 4.0で開発をするコツ Webアプリケーション構築.
コンピュータ概論B ー ソフトウェアを中心に ー #03 プログラムの実行形態 (前回の復習+残り)
情報理工学部 情報システム工学科 ラシキアゼミ 3年 H 井奈波 和也
コンピュータプラクティス I 再現性 水野嘉明
リレーショナル・データベース データベース論 第10回.
Webアプリケーション開発の 基本的なポイント
東京工科大学 コンピュータサイエンス 亀田弘之
情報理工学部 情報システム工学科 3年 H 井奈波 和也
SAP システムにおける SQL Server 運用ノウハウ
ファイルやフォルダを検索する ①「スタート」→「検索」→「ファイルとフォルダ」とクリックする。
SharePoint Server において 構成ウィザードが失敗する場合の トラブルシューティング
分散コンピューティング環境上の Webリンク収集システムの実装
Microsoft Office InfoPath 2003 概要
SQL J2EE I 第3回 /
DBバックアップあーんどリカバリ HN おいろん.
DBバックアップあーんどリカバリ HN おいろん.
市販のソフトウェアが これほど脆弱な理由 (それをどのように解決するか).
水曜パソコン講座 「Windows Security Essentials プログラムを実行する手順」          を解説します.
RDBMSについて 2年7組  小鹿 慎太郎.
3-2.データを取り出す 2004年 5月20日(木) 01T6074X 茂木啓悟.
ノンプログラマのための Selenium de DDT はじめの一歩
Magicのサブフォーム上に ガントチャート表示を実現
 データベースによる並列処理 情報論理工学研究室  三宅健太.
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
パフォーマンスチューニング on Rails
14.テーブル定義,一対多の関係,多対多の関係, 外部キー,索引(インデックス),データベース操作
サーバー立ち上げ記 2009/5/23
朝日大学大学院 経営学研究科 奥山 徹 データベース論 朝日大学大学院 経営学研究科 奥山 徹 2006/05/29 データベース論(7回目)
マイクロソフト Access での SQL 演習 第1回 SQL問い合わせ(クエリ)
データベースとJavaをつなげよう! ~JDBC~
データベース設計の基礎 HN おいろん.
ソフトウェア工学 第五回 知能情報学部 新田直也.
SQL パフォーマンス チューニング ~ カバーリングインデックス/クエリヒントの利用~
RT-Linuxを用いた 多入力パルス波高分析システムの開発
SQL パフォーマンス チューニング ~ プランガイドの利用~
ソフトウェア情報学総論 基盤ソフトウェア学講座
アルゴリズムとデータ構造 補足資料11-1 「mallocとfree」
Webサービスによる 加工工程決定支援システム
実行時情報に基づく OSカーネルのコンフィグ最小化
技術参照モデルとシステム要件定義 に関する学習システム
3-6.インデックスについて 3-7.関数と併用されることの 多いMySQLコマンド
3-3.テーブルを更新する 2004年 4月22日(木) 01T6074X 茂木啓悟.
加工工程決定支援システム 電子情報通信学会 2010年総合大会 2010年3月18日 松江工業高等専門学校  情報工学科 越田 高志.
加工工程決定支援に対する自動化 電子情報通信学会2008年総合大会 松江工業高等専門学校 情報工学科 越田 高志, 牧 聡史
マイクロソフト Access での SQL 演習 第4回 並べ替え(ソート)
OSSAJ 事務局 株式会社ウィズ.アール 古木 良子
ミドルウェア”TSUNAGI”を 用いたWEBアプリケーションの構築
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
正規表現パート2 NFAエンジンの場合は、 正規表現の磨き上げが必要?.
講義ノート共有データベース NoteTotter?
テーブル設計を後から変更 現場で使える小技のご紹介 株式会社ジーワンシステム 生島 勘富(イクシマ サダヨシ)
1億円 45%OFF HP Enterprise Data Warehouse Appliance 2012年6月まで
第15回放送授業.
マイクロソフト Access での SQL 演習 第2回 集計,集約
ソフトウェア保守のための コードクローン情報検索ツール
3.リレーショナルデータベース,主キー, SQL
ウェブアプリケーションサーバの Degradation Schemeの 制御に向けて
RDFの生産工程管理システムへの適用 情報処理学会 第74回全国大会 2012年3月6日 松江工業高等専門学校  情報工学科 越田 高志.
ファイルやフォルダを検索する ①「スタート」→「検索」とクリックする。 ②「表示項目」から適当なものを選択する。
統計ソフトウエアRの基礎.
再帰CTE を使って遊ぼう 大阪#9 2012/04/14.
情報の授業 アプリ等を活用した勉強方法の改善(計画) ・R-PDCAサイクル ・アプリを活用した勉強方法の改善 計画書
CO-Client Opeartion 1.1 利用履歴データベースの設計 (スキーマ バージョン 対応)
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
中上級編 vol. 3 前編: SQLDiag ツールの利用
SQL J2EE I (データベース論) 第3回 /
SQL データベース論 第11回.
Presentation transcript:

DBパフォーマンスチューニングの基礎 HN おいろん

1.はじめに

自己紹介 名前: 守田 典男 (HN:おいろん) 29歳 職業: 某会社 技術社員 1.はじめに 自己紹介 名前: 守田 典男 (HN:おいろん) 29歳 職業: 某会社 技術社員 業界歴: 開発(汎用):2年→DB:4年→        開発・DB:2年 DB歴:  Oracle 6年        SQLServer2000、2005 1年半        HiRDB 半年

1.はじめに 本セッションについて 対象:開発初心者(Lv1クマー)  ・「パフォーマンス」を考えるとはどういうこと?  ・パフォーマンスチューニングはDBAの仕事   であって、開発者には関係ないのでは?  ・もっと処理が早いSQLを書きたい! 上記のような、DBパフォーマンスに興味が ある方を対象としております。

SQLチューニング ~SQLのよりよい書き方~ 目次 はじめに DBパフォーマンスチューニングの考え方 SQLチューニング  ~SQLのよりよい書き方~ おまけ:Oracle Vs SQLServer おわりに

2.DBパフォーマンスチューニングの 考え方

2.DBパフォーマンスチューニングの考え方 2-1.パフォーマンスチューニングの概要 2-2.パフォーマンスチューニングのサイクル

目的 限られたシステム・リソースの中で、最大限の パフォーマンス効果を出すこと 2-1.パフォーマンスチューニングの概要 近年の目覚しいハードウェア技術の向上で、 パフォーマンスを意識することがなくなってきている。  せっかくハードウェアを増強しても、効率よく  処理されていなければ、まったくの無駄となる!

工程 2-1.パフォーマンスチューニングの概要 重要なのは前工程! 設計時から効率のよい 処理ができるよう 意識することが大切 要件定義 運用テスト 基本設計 システムテスト 内部設計 内部設計 結合テスト パフォーマンス チューニングは、 負荷テスト時に 行うと思われがち・・・ 詳細設計 詳細設計 単体テスト 製造 製造

チューニングの優先順位 2-1.パフォーマンスチューニングの概要 データベースの設計 効果小 効果大 コスト大 コスト小 アプリケーション メモリ I/O 競合 オペレーティングシステム

設計 開発 テーブル設計 データファイルの物理設計 開発標準、SQLコーディング規約の遵守 SQLチューニング 2-1.パフォーマンスチューニングの概要 設計 テーブル設計 正規化、非正規化など データファイルの物理設計 データファイル、ログファイルの分散 開発 開発標準、SQLコーディング規約の遵守 SQLチューニング

2.DBパフォーマンスチューニングの考え方 2-1.パフォーマンスチューニングの概要 2-2.パフォーマンスチューニングのサイクル

パフォーマンスチューニングの手順 2-2.パフォーマンスチューニングのサイクル 1.目標設定 2.現状分析 3.チューニング方針の決定、実行 4.チューニング結果の確認

目標設定 現状分析 パフォーマンスチューニング完了となる 最終目標を決定する 問題となっている箇所の状況を測定・分析する 2-2.パフォーマンスチューニングのサイクル 目標設定 パフォーマンスチューニング完了となる 最終目標を決定する 処理完了の目標時間の設定 アプリケーションの反応時間の目標時間の設定 現状分析 問題となっている箇所の状況を測定・分析する SQLの詳細情報の取得 OSリソースの情報取得

チューニング方針の決定・実行 チューニング結果の確認 現状分析の結果より、ボトルネックをみつけ、 解消するための措置を講じる 2-2.パフォーマンスチューニングのサイクル チューニング方針の決定・実行 現状分析の結果より、ボトルネックをみつけ、 解消するための措置を講じる SQLの修正 インデックスの作成 チューニング結果の確認 実施したチューニングの効果を確認する。 設定した目標に達していなければ、再度 現状分析を行い、最適なチューニングを模索する

3.SQLチューニング ~SQLのよりよい書き方~

3-2.やってはいけないSQLの書き方 「こう書くと処理が遅くなるよ!」 3-3.ちょっとした一工夫   「こう書くとちょびっと速くなる!」

SQLの処理フロー 3-1.SQL実行のメカニズム SQLの発行 遅い 同一の解析結果が メモリに存在するか? SQLの解析 必要なデータが メモリに存在するか? データの読み込み 遅い SQLの実行 YES データの取り出し (SELECTのみ) NO

SQLServerの場合(検索) 3-1.SQL実行のメカニズム プロシージャキャッシュ (1)検索 データファイル(mdf) (3) (2)SELECT・・・ データファイル(mdf) (1)検索 (3) (6)結果 バッファキャッシュ (4)並び替えや結合処理 一時オブジェクトなど tempdb クエリワークスペース (5) SQLServer

SQLServerの場合(更新) 3-1.SQL実行のメカニズム プロシージャキャッシュ (5) (1)更新 データファイル(mdf) (2)UPDATE・・・ データファイル(mdf) (5) (1)更新 (3) バッファキャッシュ ログファイル(ldf) (4) (2)UPDATE・・・ (2)UPDATE・・・ ログキャッシュ SQLServer

SQLチューニングのポイント SQL解析時間を少なくする! ディスクからのデータ読み込みを少なくする! 3-1.SQL実行のメカニズム バインド変数の使用、実行計画の共有化 ディスクからのデータ読み込みを少なくする! 全表操作をできるだけなくす 索引(インデックス)の利用

3-2.やってはいけないSQLの書き方 「こう書くと処理が遅くなるよ!」 3-3.ちょっとした一工夫   「こう書くとちょびっと速くなる!」

ワイルドカード(“*”) 全列を指定するときワイルドカードを使うと 読み替えが発生する。 →オーバーヘッドの原因となる。 3-2.やってはいけないSQLの書き方 ワイルドカード(“*”) 全列を指定するときワイルドカードを使うと 読み替えが発生する。  →オーバーヘッドの原因となる。 SELECT * FROM 表1 WHERE 条件; ↓ SELECT 列1、列2、・・・ FROM 表1 WHERE 条件;

不要な列の指定 不要な列を指定すると読み取るデータ量が 増える →オーバーヘッドの原因となる。 3-2.やってはいけないSQLの書き方 不要な列の指定 不要な列を指定すると読み取るデータ量が 増える  →オーバーヘッドの原因となる。 SELECT * FROM 表1 WHERE 条件; ↓ SELECT 列1、列2 FROM 表1 WHERE 条件;

たとえインデックスがあっても使われないので注意!! 3-2.やってはいけないSQLの書き方 インデックスが使用されない書き方 以下のような記載はインデックスが使用されない Null値の検索 特定の値に置き換えるなどの処置が必要 暗黙の型変換 LIKE句の中間一致、後方一致 否定形の使用(<>、!=、NOT EQUALS) 複合索引時に、列の順番を間違える 索引列に関数を使用。(WHERE 列1 * 1.1 = 100) たとえインデックスがあっても使われないので注意!!

3-2.やってはいけないSQLの書き方 「こう書くと処理が遅くなるよ!」 3-3.ちょっとした一工夫   「こう書くとちょびっと速くなる!」

全表操作(フルスキャン)が有効なケース 目安:抽出データが全データの 10%から15%未満の場合 (ソートが必要ない場合) 3-3.ちょっとした一工夫 全表操作(フルスキャン)が有効なケース 目安:抽出データが全データの 10%から15%未満の場合 (ソートが必要ない場合) 理由:1回のスキャンで取得できるデータ量が フルスキャンの方が多いため。

ソートの回避 次の句を使用するとソートが発生する 3-3.ちょっとした一工夫 GROUP BY句 ORDER BY句 集約関数(SUM、COUNT、AVG、MAX、MIN) DISTINCT 集合演算子(UNION、INTERSECT、EXCEPT) 重複排除(ALL オプション)でソートを回避できる OLAP関数(RANK、ROW_NUMBERなど) 回避できる場合は極力回避すること。

4.おまけ:Oracle Vs SQLServer

4.おまけ:Oracle Vs SQLServer 4-1.それぞれの長所・短所 4-2.結論 (注):ここの内容は個人的な考えが     多く・・・いや、ほとんど含まれております。

Oracleの長所 マルチプラットフォーム 高機能・高性能 学習しやすい 4-1.それぞれの長所・短所 DBシェアが高い要因の1つ とりあえずOracleできればなんとかやっていける。 高機能・高性能 こまかいところまで設定でき、データベースの 動きなど、中身が把握しやすい。 学習しやすい 書籍やWebなど自習環境が整いやすい

Oracleの短所 高い!! 4-1.それぞれの長所・短所 Enterprise Edition CPUライセンスで500万円。 高機能を謳い文句にしながら、「別途オプション」って どういうこと!? (Real Application Testing 125万円) Oracle Master Platinum は研修2つに試験料で 50万円以上がかかる。 個人じゃ無理。 サポート契約しないと修正パッチもらえない。 バグ多いよ。

SQLServerの長所 圧倒的な使いやすさ 機能が豊富 学習しやすい 4-1.それぞれの長所・短所 Oracle大好き人間だった私の考え方を変えた。 機能が豊富 Enterprise Editionですべての機能が使える。 パッチの適用もスムーズ。保守もしやすい。 学習しやすい Microsoftホームページに自習書やWebCastなど

SQLServerの短所 変わったSQLがなぜか実行できる エラーがよくわかんない 4-1.それぞれの長所・短所 UPDATEにFROM句が使えるなんて 思ってもみませんでした・・・。常識? テーブルに存在しない列をORDER BYに 指定できる・・・。(SQLServer2000のみ) エラーがよくわかんない これはただ慣れていないだけかも・・・。 サポートオンラインに書いている内容が 難しすぎて理解できない・・・。

4.おまけ:Oracle Vs SQLServer 4-1.それぞれの長所・短所 4-2.結論 (注):ここの内容は個人的な考えが     多く・・・いや、ほとんど含まれております。

しかし 昨今Windowsの高性能・安定化もあって 個人的にはSQLServerに期待大。 4-2.結論 高機能、高性能はOracle、 使いやすさはSQLServer (よく、Oracleはマニュアル車、  SQLServerはオートマ車と例えられる・・・) しかし 昨今Windowsの高性能・安定化もあって 個人的にはSQLServerに期待大。

5.おわりに

いかがでしたか? 少しでも、DBを意識したり、興味を感じることが できたでしょうか? 5.おわりに いかがでしたか? 少しでも、DBを意識したり、興味を感じることが できたでしょうか? パフォーマンスの問題の8割はSQLなど 開発者に起因するものといわれています。 日頃から意識して、顧客に喜ばれる システムを開発しましょう!! ご清聴ありがとうございました!!