oracleデータベース構築テーブルパーティション
935 ワード
devicesは日単位でデータを分析するデータが大きいので、データベースの保存では、いくつかの最適化が必要です.
1.保存を節約するために、事実テーブルのすべてのフィールドにnumberタイプがアクセスされます.
2.kettleの変換過程では、変換の次元が多いため、変換過程が遅く、毎秒150本程度しか変換されない.したがって、データベースにデータをインポートしてからストレージ・プロシージャを通過する方法で、データベース内で内部変換します.
3.事実表の作成には、月別データ区分が採用されている.毎日のデータは12~13万件程度で、1ヶ月で370万件程度です.パーティションは可用性を強化し、メンテナンスが便利で、I/Oを均衡させ、クエリー性能を改善することができる.
データベース・アクセスには日付フィールドがないため、yyyyMMddの数値フィールドでアクセスします.自動パーティションでは月ごとに自動パーティションを行うのはよくありません.以下は私が採用したパーティションコードで月ごとにパーティションを行うことです.
--100を1つのセグメントとして、1ヶ月を変換すると、データ・レベルは100ビット・レベルに変わり、月次パーティションとしてパーティションが作成されます.
4.次元フィールドごとにインデックスを作成するが、パーティションを作成するため、通常のインデックスしか使用できず、ビットマップインデックスは使用できない.
1.保存を節約するために、事実テーブルのすべてのフィールドにnumberタイプがアクセスされます.
2.kettleの変換過程では、変換の次元が多いため、変換過程が遅く、毎秒150本程度しか変換されない.したがって、データベースにデータをインポートしてからストレージ・プロシージャを通過する方法で、データベース内で内部変換します.
3.事実表の作成には、月別データ区分が採用されている.毎日のデータは12~13万件程度で、1ヶ月で370万件程度です.パーティションは可用性を強化し、メンテナンスが便利で、I/Oを均衡させ、クエリー性能を改善することができる.
データベース・アクセスには日付フィールドがないため、yyyyMMddの数値フィールドでアクセスします.自動パーティションでは月ごとに自動パーティションを行うのはよくありません.以下は私が採用したパーティションコードで月ごとにパーティションを行うことです.
create table DEVICE_USEAGE_FACT (
date_id number,
pn_id date,
......
)
partition by range (date_id)
INTERVAL (100)
(
partition p090101 values less than (20120201)
);
--100を1つのセグメントとして、1ヶ月を変換すると、データ・レベルは100ビット・レベルに変わり、月次パーティションとしてパーティションが作成されます.
4.次元フィールドごとにインデックスを作成するが、パーティションを作成するため、通常のインデックスしか使用できず、ビットマップインデックスは使用できない.