問題タブ [materialized-views]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - Oracle のビューとマテリアライズド ビューの違いは何ですか?
Oracle のビューとマテリアライズド ビューの違いは何ですか?
sql - MySQL でインデックス付きビューを使用することは可能ですか?
MySQL フォーラムで 2005 年の投稿を見つけましたが、それより新しい投稿はありません。それを踏まえると無理です。しかし、3〜4年で多くのことが変わる可能性があります。
私が探しているのは、ビューにインデックスを付ける方法ですが、表示されるテーブルにはインデックスを付けないままにする方法です。インデックス作成は書き込みプロセスに悪影響を及ぼし、このテーブルは非常に頻繁に書き込まれます (インデックス作成によってすべてが遅くなるまで)。ただし、このインデックスの欠如により、クエリが非常に遅くなります。
informix - Informix には、「マテリアライズド ビュー」と同等のもの、または DB テーブルの同期機能がありますか
質問: Informix には、Oracle の「マテリアライズド ビュー」に相当する構造がありますか? または、DB リンクを介して 2 つのテーブル (DB ではなく) を同期するためのより良い方法はありますか? 同期を自分で作成することもできました (依頼されました) が、それは車輪の再発明のように思えます。
背景:最近、AppServer と DB サーバーの組み合わせでは負荷を処理できなくなったため、モノリシックな Informix 9.30 DB (Valent の MPM) を分割する必要がありました (DB の一部を 1 つのサーバーで、他の部分を別のサーバーで)。
これを行うには、巨大なファクト テーブルと適切に定義されたディメンション テーブルのスター スキーマに配置されたユーザー定義のテーブル スペース (KPI リポジトリ) を分割する必要がありました。
残念ながら、電話会社のマネージャーは、ディメンション テーブル (正規化、データの冗長性、コーディングの必要なし) を 1 台のマシンに集中させ、他のマシンの DB リンクを介してビューとして利用できるようにすることにしました。ビューがサブクエリで使用されている場合(実証可能)、DBサーバーが時々クラッシュするため、これは遅く不安定です。製品サーバーでは非常にクールではありません
mysql - MySQL ビューは常にフル テーブル スキャンを実行しますか?
MySQL 5.1 のビューを使用するクエリを最適化しようとしています。ビューから 1 列を選択しても、常に完全なテーブル スキャンが実行されるようです。それは期待される動作ですか?
ビューは、以下の最初のクエリで指定したテーブルの SELECT "All Columns From These Tables - NOT *" です。
これは、ビューを構成するクエリからインデックス付きの列 PromotionID を選択したときの説明出力です。ご覧のとおり、ビューの出力とは大きく異なります。
ビューから同じものを選択したときの出力
oracle - Oracle マテリアライズド ビューのチューニング
アプリケーションでマテリアライズド ビューのチューニングを実行しようとしています。私は実行に着手しました:
プロシージャを作成し、Oracle SQL Developer の SQL_Worksheet に次のコードを記述しました。
明らかに、具体化されたビューは既に作成されています (refresh fast on commmit
ただし、許容できないほど遅くなります)。Advisor は次のエラーを報告します。
しかし、それ以上の報告はなく、2 番目のエラー メッセージの痕跡もありません。ここで何が問題なのか知っている人はいますか?MV が既に存在し、データベースで動作しているため、ゆっくりではありますが、さらに驚いています。
関連するメモとして、SQL Developer で複数行の文字列を入力する方法を知っている人はいますか。次のようなものを試すと:
SQL Developer は最初の行でチョークします。文字列の連結が頭をよぎりましたが、100 ~ 150 行の MV がいくつかあり、それらのそれぞれに対して手動で行うのは嫌です。
oracle - DBMS_MVIEW.REFRESH に暗黙的なコミットがあるのはなぜですか?
最近、Oracle でマテリアライズド ビューを更新する dbms_mview.refresh(...) を呼び出すと、暗黙的なコミットがあることに気付きました。
「そうするから」以外のアイデアはありますか?なぜこのアクションには暗黙的なコミットがあるのですか?
unit-testing - Javaでマテリアライズドビューをテストする方法
Hibernate フレームワークを使用して具体化されたビューの自動テストを作成する方法はありますか?
私はそれを機能させる方法がわかりません。私の最初のアプローチは、DBMS_MVIEW.REFRESH ストアド プロシージャを使用することでした。しかし、それは私が必要とするものではありません.ビューをリフレッシュした後、すべてのテストデータがコミットされます. ビューをテストする別の方法はありますか?
database - 同じDBサーバーでのOracleマテリアライズドビューとレプリケーション
スケジュールされた時刻にレポートを実行する必要があります。アプリケーションは 24 時間年中無休で実行されるため、「オフピーク」時間はありません。
したがって、レポートを実行しても、システムに過度の負荷がかかることはありません。
アプリケーションは WebSphere v6.1 で実行され、データベースは Oracle 10g R2 です。
私は自由に次のアプローチを持っています
- レポート用の非正規化テーブルのセット。
- マテリアライズド ビューを作成し、レポートに使用する。ビューは 1 日 1 回更新できます。
- 別のスキーマを作成し、Oracle の Data Guard を使用してテーブルをリアルタイムで複製できます。
(1) は、私たちが持っている特定の内部制約のために実現不可能です。
パフォーマンスの観点から、(2) と (3) のどちらが優れているかを知る必要があります。
マテリアライズド ビューは最初はうまく機能するが、データ量が増えるとパフォーマンスが非常に低下するという話を多くの人から聞いています。
誰でも、同じ DB サーバー内のテーブルのレプリケーションの経験があります (ただし、インスタンスまたはスキーマの差分)。
sql - Oracle でのリモート マテリアライズド ビューのパフォーマンス
Oracle の具体化されたビューについて質問があります ...
2 つのデータベースがあります。
- コア データベース
- レポート データベース
レポート データベースには次のものがあります。
- Core データベースへのデータベース リンク
- コア データベース内のテーブルのシノニムの数
- これらのシノニムの上に定義された多数の具体化されたビュー。
ビューは 1 時間ごとに更新されるように設定されています。
ソース システムのデータ ボリュームの増加に伴い、ビューを具体化するための CPU の増加が見られます。
よく調べてみると、ビューの更新プロセスがレポート データベース内に結果セットを構築し、個々の小さな SQL ステートメントをコア データベースに送信しているように見えます。
これらのマテリアライズド ビューの一部は非常に複雑で、テーブル間の結合が多数あります。これにより、Core データベースに対して何百万もの小さな SQL ステートメントが発生します。
私の質問は次のとおりです。対応する「複雑な」ビューをコア データベースに作成し、レポート データベースにマテリアライズド ビューを単純な「SELECT * FROM CORE.MY_MAT_VIEW」として作成する方がよいでしょうか。
ポインタをありがとう、
乾杯、エヴァン