• 検索結果がありません。

今さら聞けない!?大規模テーブルのパフォーマンスチューニング ~パーティショニング~

N/A
N/A
Protected

Academic year: 2021

シェア "今さら聞けない!?大規模テーブルのパフォーマンスチューニング ~パーティショニング~"

Copied!
42
0
0

読み込み中.... (全文を見る)

全文

(1)

<Insert Picture Here>

Oracle

Direct Seminar

今さら聞けない

!? 大規模テーブルのパフォーマンスチューニング

∼パーティショニング∼

(2)

大規模テーブル運用の管理課題

パーティショニングとは?

パーティショニングのメリット

ケーススタディー

Agenda

Oracle Partitioning

(3)

Copyright© 2007, Oracle. All rights reserved. 3

大規模テーブル運用の問題点

1. パフォーマンスの低下

データ量が増えると検索が遅くなる

2. 管理作業が大変

バックアップやデータのローディングに時間がかかる

3. 障害/保守時の影響が大きい

障害やメンテナンスの際、表の全てのデータにアクセスができない

(4)

大規模テーブル運用の問題点

問題点

問題点1

1:パフォーマンスの低下

:パフォーマンスの低下

データ量増加に伴い検索が非常に遅くなる

売上表 四半期ごとの売上 データを集計したい Select Select 結果 結果

(5)

Copyright© 2007, Oracle. All rights reserved. 5

大規模テーブル運用の問題点

問題点

問題点1

1:パフォーマンスの低下

:パフォーマンスの低下

データ量増加に伴い検索が非常に遅くなる

まったく同じ

Select文を投げたとしても、

データ量によって結果が返ってくる時間が著しく異なる

結果 結果 四半期ごとの売上 データを集計したい Select Select 売上表

データ量が増

加!

(6)

大規模テーブル運用の問題点

FULL SCAN

FULL SCANで遅いならば索引を

で遅いならば索引を

使えばよいのでは?

使えばよいのでは?

索引は万能ではない!

Select Select 四半期ごとの売上 データを集計したい 売上表 索引

(7)

Copyright© 2007, Oracle. All rights reserved. 7

大規模テーブル運用の問題点

結果 結果 Select Select

FULL SCAN

FULL SCANで遅いならば索引を

で遅いならば索引を

使えばよいのでは?

使えばよいのでは?

索引は万能ではない!

四半期ごとの売上 データを集計したい 売上表 索引

(8)

大規模テーブル運用の問題点

大量の索引読み込み+

大量データアクセスは非効率

DISK I/O DISK I/Oが大量に発生が大量に発生 索引が選択されない 索引が選択されない 可能性が高い 可能性が高い 四半期ごとの売上 データを集計したい Select Select

一定の範囲を検索する場合、

索引を使用すると

逆に遅くなってしまう場合もある

売上表 索引

(9)

Copyright© 2007, Oracle. All rights reserved. 9

大規模テーブル運用の問題点

本日の業務処理を 夜間に更新

(INSERT, DELETE, UPDATE)

問題点

問題点2

2:管理作業が大変

:管理作業が大変

索引の再構築に時間がかかる!

索引のフラグメンテーションが発生 表 索引 索引の再構築

(10)

問題点

問題点2

2:管理作業が大変

:管理作業が大変

索引の再構築に時間がかかる!

大規模テーブル運用の問題点

本日の業務処理を 夜間に更新

(INSERT, DELETE, UPDATE)

索引のフラグメンテーションが発生 夜の間に夜間バッチ 処理が完了しない!! 索引の再構築 表 索引

データ量が多いと、

索引の再構築に長時間かかってしまう

(11)

Copyright© 2007, Oracle. All rights reserved. 11

問題点

問題点2

2:管理作業が大変

:管理作業が大変

バックアップやリカバリに時間がかかる!

大規模テーブル運用の問題点

バックアップリカバリ バックアップ バックアップ リストア リストア

(12)

問題点

問題点2

2:管理作業が大変

:管理作業が大変

バックアップやリカバリに時間がかかる!

大規模テーブル運用の問題点

バックアップ バックアップ リストア リストア バックアップリカバリ 障害復旧が システム要件の時間内 に完了しない!!

データ量が多いと、

バックアップやリカバリに

長時間かかってしまう

データ量が増

加!

(13)

Copyright© 2007, Oracle. All rights reserved. 13

問題点

問題点3

3:障害

:障害//保守時の影響が大きい

保守時の影響が大きい

大規模テーブル運用の問題点

破損範囲が 破損範囲が ごく一部でも ごく一部でも 表すべてが 表すべてが 閲覧不可になる 閲覧不可になる データ破損が発生 データ破損が発生!!!!

(14)

大規模テーブル運用の管理課題

パーティショニングとは?

パーティショニングのメリット

ケーススタディー

Agenda

Oracle Partitioning

(15)

Copyright© 2007, Oracle. All rights reserved. 15

パーティショニングとは?

大きな表や索引をデータベース内部で

大きな表や索引をデータベース内部で

複数の領域に分割

複数の領域に分割

して管理する

して管理する

ユーザやアプリケーションからは

一つの表に見える

通常の1つの表 パーティション化された表 1-3月 4-6月 7-9月 10-12月 内部的に 表を分割

(16)

このような

売上表

をパーティショニングすると

・・・ ¥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 ・・・

売上

顧 客 名

支店

製品

売上日

・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・ ・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・ ・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・

(17)

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 ・・・

売上

顧 客 名

支店

製品

売上日

・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・ ・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・ ・・ ・ ・・・ ・・・ ・・・ ・・ ・ ・・ ・

(18)

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つの表ですが… 内部的には表を分割して管理します

(19)

Copyright© 2007, Oracle. All rights reserved. 19

大規模テーブル運用の管理課題

パーティショニングとは?

パーティショニングのメリット

ケーススタディー

Agenda

Oracle Partitioning

(20)

パーティショニングのメリット

1. パフォーマンスの低下

データ量が増えると検索が遅くなる

2. 管理作業が大変

バックアップやデータのローディングに時間がかかる

3. 障害/保守時の影響が大きい

障害やメンテナンスの際、表の全てのデータにアクセスができない

パーティションプルーニングで解決

パーティションプルーニングで解決!!

!!

パーティションプルーニングで解決

パーティションプルーニングで解決!!

!!

(21)

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_history

WHERE sales_date in Q4 GROUP BY area, period … 今期(Q4)の売上の

(22)

パーティションが有効なテーブルサイズ

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以上なら

非常に有効!

(23)

Copyright© 2007, Oracle. All rights reserved. 23

パーティショニングのメリット

1. パフォーマンスの低下

データ量が増えると検索が遅くなる

2. 管理作業が大変

バックアップやデータのローディングに時間がかかる

3. 障害/保守時の影響が大きい

障害やメンテナンスの際、表の全てのデータにアクセスができない

パーティションプルーニングで解決

パーティションプルーニングで解決!!

!!

パーティションプルーニングで解決

パーティションプルーニングで解決!!

!!

解決

パーティション単位での管理で解決

パーティション単位での管理で解決!!

!!

パーティション単位での管理で解決

パーティション単位での管理で解決!!

!!

(24)

管理作業もパーティション単位

• 索引の再構築

統計情報の取得

もパーティション単位!

作業中も他のパーティションは影響を受けない!

7月 6月 5月 4月 7月15日分 の更新 7月15日分 の更新 他のパーティションは 影響を受けない!! 索引再構築 パーティション単位で 更新処理ができる!

(25)

Copyright© 2007, Oracle. All rights reserved. 25

管理作業もパーティション単位

データの大量挿入/削除はシステム全体のパフォーマンスに悪影響

大規模なテーブルで時間がかかっていた、データの更新/削除などを

パーティション単位で行う事で高速化

パーティションごとに削除が可能!! 条件指定のDELETEとは違い、 REDO/UNDOの生成が無く、 高速な削除が可能!! 古いパーティションの 古いパーティションの 高速な削除 高速な削除!!!! Q2 Q1 Q3 Q4

(26)

Q1 New Q1

管理作業もパーティション単位

データの大量挿入/削除はシステム全体のパフォーマンスに悪影響

大規模なテーブルで時間がかかっていた、データの更新/削除などを

パーティション単位で行う事で高速化

パーティションごとに削除が可能!! 条件指定のDELETEとは違い、 REDO/UNDOの生成が無く、 高速な削除が可能!! 古いパーティションの 古いパーティションの 高速な削除 高速な削除!!!! Q2 テーブルのメンテナンス 作業が早い!! Q3 Q4 新しいパーティションに 新しいパーティションに 高速で入れ替え 高速で入れ替え!!!! New Q1

(27)

Copyright© 2007, Oracle. All rights reserved. 27

パーティショニングのメリット

1. パフォーマンスの低下

データ量が増えると検索が遅くなる

2. 管理作業が大変

バックアップやデータのローディングに時間がかかる

3. 障害/保守時の影響が大きい

障害やメンテナンスの際、表の全てのデータにアクセスができない

パーティションプルーニングで解決

パーティションプルーニングで解決!!

!!

パーティションプルーニングで解決

パーティションプルーニングで解決!!

!!

解決

パーティション単位での管理で解決

パーティション単位での管理で解決!!

!!

パーティション単位での管理で解決

パーティション単位での管理で解決!!

!!

解決

パーティション単位で障害の影響を限定

パーティション単位で障害の影響を限定!!

!!

パーティション単位で障害の影響を限定

パーティション単位で障害の影響を限定!!

!!

(28)

パーティション単位で障害の影響を限定

特定のパーティションに障害が発生しても、他のパーティションは

影響を受けない

パーティション単位でリカバリを行えるので、障害から短時間で復

旧できる

パーティション単位 でリカバリ実行 Q1 Q2 Q3 Q4 Q4 障害発生 Q1~Q3のデータは、 リカバリ中でも 通常通りアクセスできる

(29)

Copyright© 2007, Oracle. All rights reserved. 29

パーティショニングのメリット

1. パフォーマンスの低下

データ量が増えると検索が遅くなる

2. 管理作業が大変

バックアップやデータのローディングに時間がかかる

3. 障害/保守時の影響が大きい

障害やメンテナンスの際、表の全てのデータにアクセスができない

パーティションプルーニングで解決

パーティションプルーニングで解決!!

!!

パーティションプルーニングで解決

パーティションプルーニングで解決!!

!!

解決

パーティション単位での管理で解決

パーティション単位での管理で解決!!

!!

パーティション単位での管理で解決

パーティション単位での管理で解決!!

!!

解決

パーティション単位で障害の影響を限定

パーティション単位で障害の影響を限定!!

!!

パーティション単位で障害の影響を限定

パーティション単位で障害の影響を限定!!

!!

解決

(30)

【レンジパーティション

レンジパーティション】

•• 日付でデータを管理したい日付でデータを管理したい → 特定の連続するデータ(売上日、ログ取得日 etc)の範囲によって分割

【リストパーティション

リストパーティション】

•• 支店別、製品別など特定のカテゴリーごとにデータを管理したい支店別、製品別など特定のカテゴリーごとにデータを管理したい → 特定のデータ(製品名、店舗名 etc)のカテゴリーによって分割

【ハッシュパーティション

ハッシュパーティション】

•• ディスクアクセスを均等化させ、パフォーマンスを向上させたいディスクアクセスを均等化させ、パフォーマンスを向上させたい •• パーティション表を使ってバッチ処理を高速化させたいパーティション表を使ってバッチ処理を高速化させたい → 一意となるデータ(社員ID、商品ID etc)でデータを分散させて分割

パーティショニングの種類

※ 詳しくは、

(31)

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などの大量検索&更新に有効 リストパーティション ハッシュパーティション

(32)

パーティショニングの種類

【コンポジットパーティション】

基本のパーティションを組み合わせる事も可能

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「現場で使えるパーティションの極意!!∼機能詳細編∼」を御受講ください

(33)

Copyright© 2007, Oracle. All rights reserved. 33

大規模テーブル運用の管理課題

パーティショニングとは?

パーティショニングのメリット

ケーススタディー

Agenda

Oracle Partitioning

(34)

システムログを管理しているのだが、問題がたくさんあって

ケーススタディー

課題 課題 テーブルデータが全体で10GB ・ ログデータのローディングに 時間がかかりすぎる ・ 検索の性能が出ない 対策 対策 日付 + 支店名でのパーティショニング

レンジリストコンポジットパーティション

を採用

(35)

Copyright© 2007, Oracle. All rights reserved. 35

システムログを管理しているのだが、問題がたくさんあって

ケーススタディー

課題 課題 テーブルデータが全体で10GB ・ ログデータのローディングに 時間がかかりすぎる ・ 検索の性能が出ない 対策 対策 日付 + 支店名でのパーティショニング

レンジリストコンポジットパーティション

を採用 遅い!! 6月22日分 ローディング ローディング時間の改善

(36)

システムログを管理しているのだが、問題がたくさんあって

ケーススタディー

課題 課題 テーブルデータが全体で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支店 ローディング

(37)

Copyright© 2007, Oracle. All rights reserved. 37

システムログを管理しているのだが、問題がたくさんあって

ケーススタディー

課題 課題 テーブルデータが全体で10GB ・ ログデータのローディングに 時間がかかりすぎる ・ 検索の性能が出ない 対策 対策 日付 + 支店名でのパーティショニング

レンジリストコンポジットパーティション

を採用 検索時間の改善 6月22日のA支店の 履歴は? 遅い!!

(38)

システムログを管理しているのだが、問題がたくさんあって

ケーススタディー

課題 課題 テーブルデータが全体で10GB ・ ログデータのローディングに 時間がかかりすぎる ・ 検索の性能が出ない 対策 対策 日付 + 支店名でのパーティショニング

レンジリストコンポジットパーティション

を採用 6月22日のA支店の 履歴は? 2007/06/22 2007/06/23 2007/06/24 2007/06/25 … … … … … A支店 B支店 C支店 D支店 範囲指定の検索が かなり早くなった!! 検索時間の改善

(39)

Copyright© 2007, Oracle. All rights reserved. 39

多くの企業がパーティショニングの採用により、

処理速度の向上

管理コスト削減

可用性向上

を実現!

パーティショニング採用事例

事例の詳細については以下をご覧ください http://www.oracle.co.jp/showcase/ Oracle Partitioning

(40)

パーティション単位の管理で容易に!!

パーティション単位の管理で容易に!!

大規模テーブルは管理が大変 !!

大規模テーブルは管理が大変 !!

メンテナンス作業の短時間化

可用性の向上

検索スピードの高速化

多くの採用事例

まとめ

Oracle Partitioning

(41)

Copyright© 2007, Oracle. All rights reserved. 41

http://www.oracle.co.jp/direct

0120-155-096

詳しい説明、システム導入のご相談は

Oracle

Direct

まずはお問合せください

(42)

• 本文書は、日本オラクルOracle Direct 主催のOracle Direct Seminar のために作成された資料です

• 本文書の著作権は、日本オラクル株式会社に帰属しています

• 本文書を第三者に配布することはご遠慮下さい

参照

関連したドキュメント

ときには幾分活性の低下を逞延させ得る点から 酵素活性の落下と菌体成分の細胞外への流出と

現実感のもてる問題場面からスタートし,問題 場面を自らの考えや表現を用いて表し,教師の

ドリル教材 教材数:6 問題数:90 ひきざんのけいさん・けいさんれんしゅう ひきざんをつかうもんだいなどの問題を収録..

けることには問題はないであろう︒

そこで、そもそも損害賠償請求の根本の規定である金融商品取引法 21 条の 2 第 1

(2号機) 段階的な 取り出し

(2号機) 段階的な 取り出し