SlideShare uma empresa Scribd logo
1 de 22
SQLチューニング
勉強会
2013/10/07
GOAL


10/7 AM3:00-実行された夜間バッチのSQLが長
時間化している。



どうやら性能試験の時に想定していた実行計
画がぶれている


全パーティションでNestedLoops結合でTable
Access Fullが走っている



統計情報が古かったことが原因だとか。。。



ヒント句等でインデックスが効くようにして
ほしい
GOAL(つづき)
ディレード処理が返ってこない
 オンライン処理で遅い処理がある
 夜間バッチが終わらない




とPMから言われた時どうしますか?


以下を使って切り分けしましょう





「Webアプリの問題点を「見える化」する7つ道具」
AWR(実行計画)

原因切り分けが終わったらチューニングしましょう



ミドルウェア・OSパラメータチューニング
SQLチューニング
Webアプリの問題点を
「見える化」する7つ道具

http://www.atmarkit.co.jp/ait/articles/0703/22/news138.html
切り分けに使うツール・ログ
top,glance,vmstat
 jps/jstat
 kill -3/侍
 NeckLess
 サーバログ(catalina.out)
 alert/traceログ
 syslog

よくある性能問題の原因
GC頻発
 スレッド間のオブジェクトwait
 DBのデッドロック
 JavaScriptの長時間化
 SQLの長時間化




性能問題の8割はSQL


実行計画の理解は必須
HelloWorld 実行計画



SQL> set autotrace on
SQL> select * from TBL2 where col1 = 10000;





COL1 COL2
---------- -------------------------------------------------------------------------------10000
10000AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAA





実行計画
---------------------------------------------------------Plan hash value: 1207070705









-------------------------------------------------------------------------------------------| Id | Operation
| Name
| Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT
|
| 1 | 65 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| TBL2
| 1 | 65 | 3 (0)| 00:00:01 |
|* 2 | INDEX UNIQUE SCAN
| PK_TBL2_COL1 | 1 |
| 2 (0)| 00:00:01 |
--------------------------------------------------------------------------------------------




Predicate Information (identified by operation id):
---------------------------------------------------



2 - access("COL1"=10000)

http://www.oracle.com/technetwork/jp/database/articles/shibacho/dba05-1598286-ja.html
よくあるSQLが遅い原因


実行計画が悪い


アクセス方法が非効率





Table Full Scan
Index Skip Scan

件数絞り込みがいまいち



Merge Join Cartesian(直積)
Nested Loops結合にて駆動表の件数が多い
インデックス (B tree)

http://www.hi-ho.ne.jp/tsumiki/doc_1.html
INDEX UNIQUE SCAN

http://www.hi-ho.ne.jp/tsumiki/doc_1.html
件数絞り込みがいまいち


Nested Loopsの例

http://www.magata.net/memo/index.php?%C9%BD%B7%EB%B9%E7%A4%CE%B4
%F0%C1%C3%C3%CE%BC%B1
実行計画が作られる仕組み

http://www.oracle.com/technetwork/jp/ondemand/db-new/b-14-consulsql-1448421-ja.pdf
統計情報さえ変わらなければ実行
計画はぶれないか?


No





Bind Peek
Cardinality Feedback
Adaptive Cursor Sharing
Dynamic Sampling
チューニング


ヒント句や構文変更によりおプティマイ
ザに適切な実行計画をださせること

http://www.atmarkit.co.jp/ait/articles/0408/25/news101_3.html
DBの問題点を「見える化」


AWR

http://www.oracle-base.com/articles/10g/automatic-workload-repository-10g.php
チューニングの手段
インデックスをDBに貼る
 SQLの構文を変更する







結合順序
絞り込み条件

ヒント句を付与する
パーティション

http://www.atmarkit.co.jp/ait/articles/0611/22/news141.html
GOALに達しましたか?


10/7 AM3:00-実行された夜間バッチのSQLが長
時間化している。



どうやら性能試験の時に想定していた実行計
画がぶれている


全パーティションでNestedLoops結合でTable
Access Fullが走っている



統計情報が古かったことが原因だとか。。。



ヒント句等でインデックスが効くようにして
ほしい。
性能試験は大変


データを積む






顧客テーブルにA顧客がいて、X契約とY契約を
持っていて、X契約の満期日は~月~日で、、、
なんていう業務知識って方式チームにはないです
よね。
1000万件の壁

マシンを占有する




移行チーム・業務チーム・基盤チームとの取り合
いです
マシン都合で進捗が遅れたなんて言い訳できませ
ん
性能問題実例


当該SQLが遅いだけならまだしも、他の
SQLの実行に迷惑をかけるケースがありま
す






一時表領域を使い果たし、他のSQL遅延
ラッチ競合を起こし、Service Guardのヘルス
チェックSQL遅延により、Oracleのフェール
オーバー
ディレード処理が長時間化(2時間超)し、
CPU使用率が閾値超え
性能問題実例


OSやミドルのパラメータにも気を配る必
要があります


単性能はOKだったが、負荷性能試験でNG


ファイルディスクリプタを使い果たしエラー
性能問題実例


2012年x月y日 とあるシステムがカットオー
バーした


デッドロックが多発。ホストDB2のロックエスカ
レーションが原因だとか






APサーバはWebOTX

SQLが長時間化していないのにも関わらずレスポ
ンスが悪い処理がある

⇒synchronized処理におけるスレッドのオブ
ジェクト待ちとSQLのロック待ちのデッド
ロック

Mais conteúdo relacionado

Semelhante a はじめてのSQLチューニング(oracle)

増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!guestc06e54
 
Sql azure知ってますか?改訂版
Sql azure知ってますか?改訂版Sql azure知ってますか?改訂版
Sql azure知ってますか?改訂版Oda Shinsuke
 
Mysql diagnostics w/jetprofiler
Mysql diagnostics w/jetprofilerMysql diagnostics w/jetprofiler
Mysql diagnostics w/jetprofiler拓也 岸本
 
キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐Kei Nakazawa
 
Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版elanlilac
 
オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用elanlilac
 
Microsoft AI セミナー - Microsoft AI Platform
Microsoft AI セミナー - Microsoft AI PlatformMicrosoft AI セミナー - Microsoft AI Platform
Microsoft AI セミナー - Microsoft AI PlatformDaiyu Hatakeyama
 
EC-CUBE on SQL データベース勉強会
EC-CUBE on SQL データベース勉強会EC-CUBE on SQL データベース勉強会
EC-CUBE on SQL データベース勉強会Kentaro Ohkouchi
 
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...Suguru Ito
 
JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化Satoshi Akama
 
[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーションde:code 2017
 
SSMSでSQL Serverの実行計画を見てSQLチューニング
SSMSでSQL Serverの実行計画を見てSQLチューニングSSMSでSQL Serverの実行計画を見てSQLチューニング
SSMSでSQL Serverの実行計画を見てSQLチューニング釣りキチ翔平
 
Seas で語られたこととは?
Seas で語られたこととは?Seas で語られたこととは?
Seas で語られたこととは?Masayuki Ozawa
 
[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba
[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba
[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi InabaInsight Technology, Inc.
 
Azure SQLデータベース最新動向&TIPS
Azure SQLデータベース最新動向&TIPSAzure SQLデータベース最新動向&TIPS
Azure SQLデータベース最新動向&TIPSnishioka1
 
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013Takashi Someda
 
M06_DX を担うエンジニア向け Data & AI Analytics プラットフォームの最適解 ~ Azure Synapse 最新機能ご紹介 ~ ...
M06_DX を担うエンジニア向け Data & AI Analytics プラットフォームの最適解 ~ Azure Synapse 最新機能ご紹介 ~ ...M06_DX を担うエンジニア向け Data & AI Analytics プラットフォームの最適解 ~ Azure Synapse 最新機能ご紹介 ~ ...
M06_DX を担うエンジニア向け Data & AI Analytics プラットフォームの最適解 ~ Azure Synapse 最新機能ご紹介 ~ ...日本マイクロソフト株式会社
 

Semelhante a はじめてのSQLチューニング(oracle) (20)

増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!
 
Sql azure知ってますか?改訂版
Sql azure知ってますか?改訂版Sql azure知ってますか?改訂版
Sql azure知ってますか?改訂版
 
Apex Test Plusの紹介
Apex Test Plusの紹介Apex Test Plusの紹介
Apex Test Plusの紹介
 
Mysql diagnostics w/jetprofiler
Mysql diagnostics w/jetprofilerMysql diagnostics w/jetprofiler
Mysql diagnostics w/jetprofiler
 
キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐
 
Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版
 
オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用
 
Microsoft AI セミナー - Microsoft AI Platform
Microsoft AI セミナー - Microsoft AI PlatformMicrosoft AI セミナー - Microsoft AI Platform
Microsoft AI セミナー - Microsoft AI Platform
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
EC-CUBE on SQL データベース勉強会
EC-CUBE on SQL データベース勉強会EC-CUBE on SQL データベース勉強会
EC-CUBE on SQL データベース勉強会
 
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
 
JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化
 
[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
SSMSでSQL Serverの実行計画を見てSQLチューニング
SSMSでSQL Serverの実行計画を見てSQLチューニングSSMSでSQL Serverの実行計画を見てSQLチューニング
SSMSでSQL Serverの実行計画を見てSQLチューニング
 
Seas で語られたこととは?
Seas で語られたこととは?Seas で語られたこととは?
Seas で語られたこととは?
 
[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba
[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba
[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba
 
Azure SQLデータベース最新動向&TIPS
Azure SQLデータベース最新動向&TIPSAzure SQLデータベース最新動向&TIPS
Azure SQLデータベース最新動向&TIPS
 
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
 
M06_DX を担うエンジニア向け Data & AI Analytics プラットフォームの最適解 ~ Azure Synapse 最新機能ご紹介 ~ ...
M06_DX を担うエンジニア向け Data & AI Analytics プラットフォームの最適解 ~ Azure Synapse 最新機能ご紹介 ~ ...M06_DX を担うエンジニア向け Data & AI Analytics プラットフォームの最適解 ~ Azure Synapse 最新機能ご紹介 ~ ...
M06_DX を担うエンジニア向け Data & AI Analytics プラットフォームの最適解 ~ Azure Synapse 最新機能ご紹介 ~ ...
 

Mais de kounan13

20201023 Builders Box 2nd Enterprise Architect
20201023 Builders Box 2nd Enterprise Architect20201023 Builders Box 2nd Enterprise Architect
20201023 Builders Box 2nd Enterprise Architectkounan13
 
20200515 api meetup online #1
20200515 api meetup online #120200515 api meetup online #1
20200515 api meetup online #1kounan13
 
20180915 mynavi rpa_seminar
20180915 mynavi rpa_seminar20180915 mynavi rpa_seminar
20180915 mynavi rpa_seminarkounan13
 
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springSwagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springkounan13
 
20180525 system department manager microservices
20180525 system department manager microservices20180525 system department manager microservices
20180525 system department manager microserviceskounan13
 
20170911 API Meetup Tokyo #21
20170911 API Meetup Tokyo #2120170911 API Meetup Tokyo #21
20170911 API Meetup Tokyo #21kounan13
 
Microservices
MicroservicesMicroservices
Microserviceskounan13
 
Tokyo tyrant
Tokyo tyrantTokyo tyrant
Tokyo tyrantkounan13
 
Salesforce.com
Salesforce.comSalesforce.com
Salesforce.comkounan13
 
E4勉強会 事後修正版
E4勉強会 事後修正版E4勉強会 事後修正版
E4勉強会 事後修正版kounan13
 

Mais de kounan13 (10)

20201023 Builders Box 2nd Enterprise Architect
20201023 Builders Box 2nd Enterprise Architect20201023 Builders Box 2nd Enterprise Architect
20201023 Builders Box 2nd Enterprise Architect
 
20200515 api meetup online #1
20200515 api meetup online #120200515 api meetup online #1
20200515 api meetup online #1
 
20180915 mynavi rpa_seminar
20180915 mynavi rpa_seminar20180915 mynavi rpa_seminar
20180915 mynavi rpa_seminar
 
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springSwagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
 
20180525 system department manager microservices
20180525 system department manager microservices20180525 system department manager microservices
20180525 system department manager microservices
 
20170911 API Meetup Tokyo #21
20170911 API Meetup Tokyo #2120170911 API Meetup Tokyo #21
20170911 API Meetup Tokyo #21
 
Microservices
MicroservicesMicroservices
Microservices
 
Tokyo tyrant
Tokyo tyrantTokyo tyrant
Tokyo tyrant
 
Salesforce.com
Salesforce.comSalesforce.com
Salesforce.com
 
E4勉強会 事後修正版
E4勉強会 事後修正版E4勉強会 事後修正版
E4勉強会 事後修正版
 

はじめてのSQLチューニング(oracle)