2010-10-09 6 views
0

J'utilise un grand nombre de tables temporaires globales pour générer des rapports énormes par rapport à une base de données Oracle 10g. Chaque rapport se compose de 4 à 5 tables temporaires globales (GTT) par exemple. Mais dans la mesure où je comprends le concept de GTT, les données sont créées à la volée pour chaque session pour différents ensembles de paramètres. Par exemple, dans mon scénario, 20 utilisateurs génèrent le rapport pour, disons le mois dernier, des données sur les ventes et peuvent générer jusqu'à 1000 exécutions au total par jour. Mais si nous supposons que l'utilisateur interroge plus fréquemment les données de ventes les plus récentes, alors comment pouvons-nous utiliser une mémoire cache pour stocker une gamme de données de ventes qui sont interrogées plus fréquemment comme un navigateur Internet? De plus, d'autres suggestions pour affiner les GTT seraient très utiles.Efficacité de performance dans les tables temporaires globales par rapport aux tables normales - oracle 10g

Répondre

1

Il semble que vous utilisiez trop de GTT. Ils ne sont généralement pas nécessaires très souvent dans les requêtes Oracle - contrairement à SQL Server où (j'ai lu) il est plus commun et approprié d'utiliser des tables temporaires. Sans connaître vos besoins en détail, il est difficile de recommander une approche, mais materialized views est une façon de «mettre en cache» les résultats de la requête une seule fois et de les utiliser plusieurs fois.

+1

+1. Le plus souvent, je trouve qu'un GTT utilisé pour piloter un rapport ne contient que des identifiants (par exemple sélectionnés par l'utilisateur), que le rapport rejoint ensuite dans les tables de données source. –

+0

Ou pour conserver temporairement un ensemble de données coûteux à construire, mais référencé par plusieurs sous-rapports. –

Questions connexes