質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

16156閲覧

OracleのDBLINKの負荷ついて教えてください。

syncrock

総合スコア209

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2016/08/24 07:15

dbAとdbBがあるとして、dbAへのDBLINKをdbBに作成したとします。

重たいSQL(SELECT文)をdbAで実行するのとdbBでDBLINKを使用して実行するのとでは、
dbAにかかる負荷は同じでしょうか?
それとも、DBLINKでSELECTするときはdbAからデータをごそっとdbBの内部に持ってから処理するため
dbAで実行するよりも断然負荷は少ない。とかそのようなことがあったりするんでしょうか?
バージョンによって考え方が異なるのであれば、11gとして回答いただければと思います。

仕組?仕様?について詳しい方、またはわかりやすいサイトなどあれば教えていただきたいです。
色々調べてはみていますが、どうも「これだ!」と思うモノもなければわかりやすいところもないので。。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

重たいSQL(SELECT文)をdbA・・・・・

上記トランザクションが どのようなDMLか、わかりませんが・・・・
DBLINKを使う場合は、ローカルにデータを一旦おとすことをお勧めします。
また、負荷を確認したい場合、ユーザトレースファイルより、統計情報等を確認するのも一つの手だと思います。

投稿2016/08/25 04:23

koutajero

総合スコア116

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syncrock

2016/08/25 05:28

回答ありがとうございます。 ローカルにデータを一旦落とすというのはどういう事でしょうか? 何かそのようなオプション指定のようなものがあるのでしょうか?
koutajero

2016/08/25 06:03

まず、dbA上で SQLを実行しても、dbB上から、DBLinkを使ってSQLを実行しても、dbAには負荷がかかります。(どれだけ負荷がかかるかは計測してみないとわかりませんが・・) ※SQLが重いとは・・・どういった内容を指しているんですかね・・・・            件数が多い?・戻ってこない?・ 今回記述したローカルとは、実行するインスタンス上を指しています。 要するに、dbBからDBLinkで、dbAを参照する場合、dbBは、ローカル、dbAはリモートという意味で捉えてもらえれば。(マテビューを作成することでローカルに実態をもつことになります) 他の方への回答に、マテビューは(ディスク?)容量の問題で難しいのであれば、Create table XXXX as Selectをしてみてはどうでしょうか?(マテビューと同じか~)
syncrock

2016/08/25 06:12

回答ありがとうございます。 SQLだけで解決せずに一旦データを持ってきて、それを使って~・・・ということですか。 んー、そうですね容量の問題があるので「これだ!」とはなりにくいかもしれません。。 SQLが重いの意味は、元データ量が多いために処理自体に時間がかかるなどを想定してました。 ただ、件数が多いなど色んなケースが考えられるので、一概に言えませんが、SQL次第では負荷がdbAにかかる、かからないがあるのでしょうか。
koutajero

2016/08/25 06:30

対象オブジェクトをパーティション化など(SEはできませんが) 取得するコストをできるだけ下げることを考慮してもいいかもしれません。 SQLで負荷を軽減することは可能だと思います。そのためのチューニング等ありますし。 セッションの計測として CodeTipsをはっておきます。 http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=1044
syncrock

2016/08/25 08:41

ありがとうございました。 色々考慮してSQLで行いたいと思います。
guest

0

dbAの負担の違いは分かりませんが、DBLINKによるネットワークトラフィックは避けられません。案件にもよりますが、MATERIALIZED VIEWを使うことで負荷を減らせることもあります。
マテリアライズド・ビュー(MView/スナップショット)の使い方~マニュアル、種類、作成・設定、リフレッシュ
マテリアライズド・ビューの設定方法

投稿2016/08/25 00:53

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syncrock

2016/08/25 05:33

回答ありがとうございます。 そうですね、ネットワークは必ず置きますね。。。 マテビューを使うと容量の問題があるので、出来ればdblinkを使用したいなぁと思っておりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問