<Insert Picture Here>
Oracle
Direct Seminar
今さら聞けない
!? 大規模テーブルのパフォーマンスチューニング
∼パーティショニング∼
•
大規模テーブル運用の管理課題
•
パーティショニングとは?
•
パーティショニングのメリット
•
ケーススタディー
Agenda
Oracle PartitioningCopyright© 2007, Oracle. All rights reserved. 3
大規模テーブル運用の問題点
1. パフォーマンスの低下
データ量が増えると検索が遅くなる
2. 管理作業が大変
バックアップやデータのローディングに時間がかかる
3. 障害/保守時の影響が大きい
障害やメンテナンスの際、表の全てのデータにアクセスができない
大規模テーブル運用の問題点
問題点
問題点1
1:パフォーマンスの低下
:パフォーマンスの低下
•
データ量増加に伴い検索が非常に遅くなる
売上表 四半期ごとの売上 データを集計したい Select Select 結果 結果Copyright© 2007, Oracle. All rights reserved. 5
大規模テーブル運用の問題点
問題点
問題点1
1:パフォーマンスの低下
:パフォーマンスの低下
•
データ量増加に伴い検索が非常に遅くなる
まったく同じ
Select文を投げたとしても、
データ量によって結果が返ってくる時間が著しく異なる
結果 結果 四半期ごとの売上 データを集計したい Select Select 売上表データ量が増
加!
大規模テーブル運用の問題点
FULL SCAN
FULL SCANで遅いならば索引を
で遅いならば索引を
使えばよいのでは?
使えばよいのでは?
•
索引は万能ではない!
Select Select 四半期ごとの売上 データを集計したい 売上表 索引Copyright© 2007, Oracle. All rights reserved. 7
大規模テーブル運用の問題点
結果 結果 Select SelectFULL SCAN
FULL SCANで遅いならば索引を
で遅いならば索引を
使えばよいのでは?
使えばよいのでは?
•
索引は万能ではない!
四半期ごとの売上 データを集計したい 売上表 索引大規模テーブル運用の問題点
•
大量の索引読み込み+
大量データアクセスは非効率
DISK I/O DISK I/Oが大量に発生が大量に発生 索引が選択されない 索引が選択されない 可能性が高い 可能性が高い 四半期ごとの売上 データを集計したい Select Select一定の範囲を検索する場合、
索引を使用すると
逆に遅くなってしまう場合もある
売上表 索引Copyright© 2007, Oracle. All rights reserved. 9
大規模テーブル運用の問題点
本日の業務処理を 夜間に更新
(INSERT, DELETE, UPDATE)
問題点
問題点2
2:管理作業が大変
:管理作業が大変
•
索引の再構築に時間がかかる!
索引のフラグメンテーションが発生 表 索引 索引の再構築問題点
問題点2
2:管理作業が大変
:管理作業が大変
•
索引の再構築に時間がかかる!
大規模テーブル運用の問題点
本日の業務処理を 夜間に更新(INSERT, DELETE, UPDATE)
索引のフラグメンテーションが発生 夜の間に夜間バッチ 処理が完了しない!! 索引の再構築 表 索引
データ量が多いと、
索引の再構築に長時間かかってしまう
Copyright© 2007, Oracle. All rights reserved. 11
問題点
問題点2
2:管理作業が大変
:管理作業が大変
•
バックアップやリカバリに時間がかかる!
大規模テーブル運用の問題点
バックアップリカバリ バックアップ バックアップ リストア リストア問題点
問題点2
2:管理作業が大変
:管理作業が大変
•
バックアップやリカバリに時間がかかる!
大規模テーブル運用の問題点
バックアップ バックアップ リストア リストア バックアップリカバリ 障害復旧が システム要件の時間内 に完了しない!!データ量が多いと、
バックアップやリカバリに
長時間かかってしまう
データ量が増
加!
Copyright© 2007, Oracle. All rights reserved. 13
問題点
問題点3
3:障害
:障害//保守時の影響が大きい
保守時の影響が大きい
大規模テーブル運用の問題点
破損範囲が 破損範囲が ごく一部でも ごく一部でも 表すべてが 表すべてが 閲覧不可になる 閲覧不可になる データ破損が発生 データ破損が発生!!!!•
大規模テーブル運用の管理課題
•
パーティショニングとは?
•
パーティショニングのメリット
•
ケーススタディー
Agenda
Oracle PartitioningCopyright© 2007, Oracle. All rights reserved. 15
パーティショニングとは?
大きな表や索引をデータベース内部で
大きな表や索引をデータベース内部で
複数の領域に分割
複数の領域に分割
して管理する
して管理する
ユーザやアプリケーションからは
一つの表に見える
通常の1つの表 パーティション化された表 1-3月 4-6月 7-9月 10-12月 内部的に 表を分割このような
売上表
をパーティショニングすると
…
・・・ ¥35,830,000 山本 健 新潟 携帯電話 2008/01/01 ・・・ ¥265,420,000 影山 治子 埼玉 電気ポット 2007/12/31 ・・・ ¥155,490,000 松沢 惇 丸の内 腕時計 2007/06/26 ・・・ ¥43,620,000 井上 あつし 多摩 携帯電話 2007/04/05 ・・・ ¥96,320,000 藤田 佳子 神奈川 炊飯器 2007/04/04 ・・・ ¥43,380,000 椛田 正臣 丸の内 液晶テレビ 2007/04/03 ・・・ ¥83,620,000 井上 憲三郎 丸の内 液晶テレビ 2007/04/03 ・・・売上
顧 客 名
支店
製品
売上日
・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・ ・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・ ・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・Copyright© 2007, Oracle. All rights reserved. 17
売上日
をキーとしてパーティショニングします
・・・ ¥35,830,000 山本 健 新潟 携帯電話 2008/01/01 ・・・ ¥265,420,000 影山 治子 埼玉 電気ポット 2007/12/31 ・・・ ¥155,490,000 松沢 惇 丸の内 腕時計 2007/06/26 ・・・ ¥43,620,000 井上 あつし 多摩 携帯電話 2007/04/05 ・・・ ¥96,320,000 藤田 佳子 神奈川 炊飯器 2007/04/04 ・・・ ¥43,380,000 椛田 正臣 丸の内 液晶テレビ 2007/04/03 ・・・ ¥83,620,000 井上 憲三郎 丸の内 液晶テレビ 2007/04/03 ・・・売上
顧 客 名
支店
製品
売上日
・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・ ・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・ ・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・DB内部で
分割して管理
します
・・ ・ ¥35,830,000 山本 健 新潟 携帯電話 2008/01/01 ・・ ・ ¥265,420,000 影山治子 埼玉 電気ポット 2007/12/31 ・・ ・ ¥155,490,000 松沢惇 丸の内 腕時計 2007/06/26 ・・ ・ ¥43,620,000 井上 あつし 多摩 携帯電話 2007/04/05 ・・ ・ ¥96,320,000 藤田佳子 神奈川 炊飯器 2007/04/04 ・・ ・ ¥43,380,000 椛田正臣 丸の内 液晶テレビ 2007/04/03 ・・ ・ ¥83,620,000 井上 憲三郎 丸の内 液晶テレビ 2007/04/03 ・・ ・ 売上 顧客名 支店 製品 売上日 ・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・ ・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・ ・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・2007
2007年
年Q1
Q1
・ ・ ・ ¥96,320,000 藤田佳子 神奈川 炊飯器 2007/04/04 ・ ・ ・ ¥43,380,000 椛田正臣 丸の内 液晶テレビ 2007/04/03 ・ ・ ・ ¥83,620,000 井上 憲三郎 丸の内 液晶テレビ 2007/04/03 ・ ・ ・ 売上 顧 客 支店 製品 売上日2007
2007年
年Q2
Q2
・ ・ ・ ¥96,320,000 千葉 由 埼玉 炊飯器 2007/09/10 ・ ・ ・ ¥43,380,000 田中 大輔 丸の内 液晶テレビ 2007/09/03 ・ ・ ・ ¥83,620,000 井上 あつし 丸の内 携帯電話 2007/08/03 ・ ・ ・ 売上 顧 客 支店 製品 売上日2007
2007年
年Q4
Q4
・ ・ ・ ¥96,320,000 林 順 埼玉 炊飯器 2007/03/20 ・ ・ ・ ¥43,380,000 山本 健 丸の内 液晶テレビ 2007/02/13 ・ ・ ・ ¥83,620,000 影山 治子 丸の内 携帯電話 2007/01/07 ・ ・ ・ 売上 顧 客 支店 製品 売上日 ・・ ・ アプリケーションから見たら 1つの表ですが… 内部的には表を分割して管理しますCopyright© 2007, Oracle. All rights reserved. 19
•
大規模テーブル運用の管理課題
•
パーティショニングとは?
•
パーティショニングのメリット
•
ケーススタディー
Agenda
Oracle Partitioningパーティショニングのメリット
1. パフォーマンスの低下
データ量が増えると検索が遅くなる2. 管理作業が大変
バックアップやデータのローディングに時間がかかる3. 障害/保守時の影響が大きい
障害やメンテナンスの際、表の全てのデータにアクセスができないパーティションプルーニングで解決
パーティションプルーニングで解決!!
!!
パーティションプルーニングで解決
パーティションプルーニングで解決!!
!!
Copyright© 2007, Oracle. All rights reserved. 21
パーティション・プルーニング
•
対象のデータが
格納されているパーティションだけ
に
アクセスし、不要なパーティションを読み飛ばす
Q1 (sales_date) Q2 (sales_date) Q3 (sales_date) Q4 (sales_date) オプティマイザ SELECT area, period, avg(sales_rev) … FROM sales_historyWHERE sales_date in Q4 GROUP BY area, period … 今期(Q4)の売上の
パーティションが有効なテーブルサイズ
1回あたりの検索処理時間
6.3 13.9 3.5 27.1 62.7 1 0 10 20 30 40 50 60 70 1GB 2GB 4GB Partition Non-Partition ※1GBのパーティション・テーブルの検索処理時間を1とした場合の 相対処理時間 ( 実際の処理時間に任意の数を掛けています ) ※日本HP社との共同検証結果より2GB以上なら
非常に有効!
Copyright© 2007, Oracle. All rights reserved. 23
パーティショニングのメリット
1. パフォーマンスの低下
データ量が増えると検索が遅くなる2. 管理作業が大変
バックアップやデータのローディングに時間がかかる3. 障害/保守時の影響が大きい
障害やメンテナンスの際、表の全てのデータにアクセスができないパーティションプルーニングで解決
パーティションプルーニングで解決!!
!!
パーティションプルーニングで解決
パーティションプルーニングで解決!!
!!
解決パーティション単位での管理で解決
パーティション単位での管理で解決!!
!!
パーティション単位での管理で解決
パーティション単位での管理で解決!!
!!
管理作業もパーティション単位
• 索引の再構築
や
統計情報の取得
もパーティション単位!
•
作業中も他のパーティションは影響を受けない!
7月 6月 5月 4月 7月15日分 の更新 7月15日分 の更新 他のパーティションは 影響を受けない!! 索引再構築 パーティション単位で 更新処理ができる!Copyright© 2007, Oracle. All rights reserved. 25
管理作業もパーティション単位
•
データの大量挿入/削除はシステム全体のパフォーマンスに悪影響
•
大規模なテーブルで時間がかかっていた、データの更新/削除などを
パーティション単位で行う事で高速化
パーティションごとに削除が可能!! 条件指定のDELETEとは違い、 REDO/UNDOの生成が無く、 高速な削除が可能!! 古いパーティションの 古いパーティションの 高速な削除 高速な削除!!!! Q2 Q1 Q3 Q4Q1 New Q1
管理作業もパーティション単位
•
データの大量挿入/削除はシステム全体のパフォーマンスに悪影響
•
大規模なテーブルで時間がかかっていた、データの更新/削除などを
パーティション単位で行う事で高速化
パーティションごとに削除が可能!! 条件指定のDELETEとは違い、 REDO/UNDOの生成が無く、 高速な削除が可能!! 古いパーティションの 古いパーティションの 高速な削除 高速な削除!!!! Q2 テーブルのメンテナンス 作業が早い!! Q3 Q4 新しいパーティションに 新しいパーティションに 高速で入れ替え 高速で入れ替え!!!! New Q1Copyright© 2007, Oracle. All rights reserved. 27
パーティショニングのメリット
1. パフォーマンスの低下
データ量が増えると検索が遅くなる2. 管理作業が大変
バックアップやデータのローディングに時間がかかる3. 障害/保守時の影響が大きい
障害やメンテナンスの際、表の全てのデータにアクセスができないパーティションプルーニングで解決
パーティションプルーニングで解決!!
!!
パーティションプルーニングで解決
パーティションプルーニングで解決!!
!!
解決パーティション単位での管理で解決
パーティション単位での管理で解決!!
!!
パーティション単位での管理で解決
パーティション単位での管理で解決!!
!!
解決パーティション単位で障害の影響を限定
パーティション単位で障害の影響を限定!!
!!
パーティション単位で障害の影響を限定
パーティション単位で障害の影響を限定!!
!!
パーティション単位で障害の影響を限定
•
特定のパーティションに障害が発生しても、他のパーティションは
影響を受けない
•
パーティション単位でリカバリを行えるので、障害から短時間で復
旧できる
パーティション単位 でリカバリ実行 Q1 Q2 Q3 Q4 Q4 障害発生 Q1~Q3のデータは、 リカバリ中でも 通常通りアクセスできるCopyright© 2007, Oracle. All rights reserved. 29
パーティショニングのメリット
1. パフォーマンスの低下
データ量が増えると検索が遅くなる2. 管理作業が大変
バックアップやデータのローディングに時間がかかる3. 障害/保守時の影響が大きい
障害やメンテナンスの際、表の全てのデータにアクセスができないパーティションプルーニングで解決
パーティションプルーニングで解決!!
!!
パーティションプルーニングで解決
パーティションプルーニングで解決!!
!!
解決パーティション単位での管理で解決
パーティション単位での管理で解決!!
!!
パーティション単位での管理で解決
パーティション単位での管理で解決!!
!!
解決パーティション単位で障害の影響を限定
パーティション単位で障害の影響を限定!!
!!
パーティション単位で障害の影響を限定
パーティション単位で障害の影響を限定!!
!!
解決【
【レンジパーティション
レンジパーティション】
】
•• 日付でデータを管理したい日付でデータを管理したい → 特定の連続するデータ(売上日、ログ取得日 etc)の範囲によって分割【
【リストパーティション
リストパーティション】
】
•• 支店別、製品別など特定のカテゴリーごとにデータを管理したい支店別、製品別など特定のカテゴリーごとにデータを管理したい → 特定のデータ(製品名、店舗名 etc)のカテゴリーによって分割【
【ハッシュパーティション
ハッシュパーティション】
】
•• ディスクアクセスを均等化させ、パフォーマンスを向上させたいディスクアクセスを均等化させ、パフォーマンスを向上させたい •• パーティション表を使ってバッチ処理を高速化させたいパーティション表を使ってバッチ処理を高速化させたい → 一意となるデータ(社員ID、商品ID etc)でデータを分散させて分割パーティショニングの種類
※ 詳しくは、Copyright© 2007, Oracle. All rights reserved. 31
※ 詳しくは、
Oracle Direct Seminar「現場で使えるパーティションの極意!!∼機能詳細編∼」を御受講ください
パーティショニングの種類
2007年 1∼3月 (orderdate) 2007年 4∼6月 (orderdate) 2007年 7∼9月 (orderdate) 2007年 10∼12月 (orderdate) 売上表 Sales_p1 Sales_p2 Sales_p3 Sales_p4 東京 神奈川 大阪 京都 福岡 長崎 宮城 青森 近畿パーティション 関東パーティション 九州パーティション 東北パーティション 売上表 ハッシュ値1 ハッシュ値2 ハッシュ値3 ハッシュ値4 レンジパーティション ※日付などの連続するデータで分割 ※地域などデータのカテゴリーで分割 ※一意となるデータ(社員ID、商品IDなど)で データを分散させて分割 OLTPなどの大量検索&更新に有効 リストパーティション ハッシュパーティションパーティショニングの種類
【コンポジットパーティション】
•
基本のパーティションを組み合わせる事も可能
A支店 B支店 C支店 D支店 2008年 1∼3月 (date) 2007年 10∼12月 (date) 2007年 7∼9月 (date) 2007年 4∼6月 (date) レンジ・パーティション リスト・サブパーティション 2008年 1∼3月 (date) 2007年 10∼12月 (date) 2007年 7∼9月 (date) 2007年 4∼6月 (date) ハッシュ 値1 ハッシュ 値2 ハッシュ 値3 ハッシュ 値4 レンジ・パーティション ハッシュ・サブパーティション ※ 詳しくは、Oracle Direct Seminar「現場で使えるパーティションの極意!!∼機能詳細編∼」を御受講ください
Copyright© 2007, Oracle. All rights reserved. 33
•
大規模テーブル運用の管理課題
•
パーティショニングとは?
•
パーティショニングのメリット
•
ケーススタディー
Agenda
Oracle Partitioning•
システムログを管理しているのだが、問題がたくさんあって
…
ケーススタディー
課題 課題 テーブルデータが全体で10GB ・ ログデータのローディングに 時間がかかりすぎる ・ 検索の性能が出ない 対策 対策 日付 + 支店名でのパーティショニングレンジリストコンポジットパーティション
を採用Copyright© 2007, Oracle. All rights reserved. 35
•
システムログを管理しているのだが、問題がたくさんあって
…
ケーススタディー
課題 課題 テーブルデータが全体で10GB ・ ログデータのローディングに 時間がかかりすぎる ・ 検索の性能が出ない 対策 対策 日付 + 支店名でのパーティショニングレンジリストコンポジットパーティション
を採用 遅い!! 6月22日分 ローディング ローディング時間の改善•
システムログを管理しているのだが、問題がたくさんあって
…
ケーススタディー
課題 課題 テーブルデータが全体で10GB ・ ログデータのローディングに 時間がかかりすぎる ・ 検索の性能が出ない 対策 対策 日付 + 支店名でのパーティショニングレンジリストコンポジットパーティション
を採用 2007/06/22 2007/06/23 2007/06/24 2007/06/25 … … … … … A支店 B支店 C支店 D支店 ローディング時間の改善 パーティション単位で ローディングしたことで かなり早くなった!! 6月22日分 ローディング 6月22日B支店 ローディング 6月22日C支店 ローディング 6月22日A支店 ローディングCopyright© 2007, Oracle. All rights reserved. 37
•
システムログを管理しているのだが、問題がたくさんあって
…
ケーススタディー
課題 課題 テーブルデータが全体で10GB ・ ログデータのローディングに 時間がかかりすぎる ・ 検索の性能が出ない 対策 対策 日付 + 支店名でのパーティショニングレンジリストコンポジットパーティション
を採用 検索時間の改善 6月22日のA支店の 履歴は? 遅い!!•
システムログを管理しているのだが、問題がたくさんあって
…
ケーススタディー
課題 課題 テーブルデータが全体で10GB ・ ログデータのローディングに 時間がかかりすぎる ・ 検索の性能が出ない 対策 対策 日付 + 支店名でのパーティショニングレンジリストコンポジットパーティション
を採用 6月22日のA支店の 履歴は? 2007/06/22 2007/06/23 2007/06/24 2007/06/25 … … … … … A支店 B支店 C支店 D支店 範囲指定の検索が かなり早くなった!! 検索時間の改善Copyright© 2007, Oracle. All rights reserved. 39
多くの企業がパーティショニングの採用により、
処理速度の向上
、
管理コスト削減
、
可用性向上
を実現!
パーティショニング採用事例
事例の詳細については以下をご覧ください http://www.oracle.co.jp/showcase/ Oracle Partitioningパーティション単位の管理で容易に!!
パーティション単位の管理で容易に!!
大規模テーブルは管理が大変 !!
大規模テーブルは管理が大変 !!
メンテナンス作業の短時間化
可用性の向上
検索スピードの高速化
多くの採用事例
まとめ
Oracle PartitioningCopyright© 2007, Oracle. All rights reserved. 41
http://www.oracle.co.jp/direct
0120-155-096
詳しい説明、システム導入のご相談は
Oracle
Direct
まずはお問合せください
• 本文書は、日本オラクルOracle Direct 主催のOracle Direct Seminar のために作成された資料です
• 本文書の著作権は、日本オラクル株式会社に帰属しています
• 本文書を第三者に配布することはご遠慮下さい