-
Collections et mémoire
Bonjour,
dans un contexte oracle 10g,
dans un process d'import massif, je migre des données d'une 50taine de tables de transition vers un data warehouse. Les tables transitoires permettent de stocker les données venues de fichiers XML avant de faire un mapping sur les PK et les FK du data warehouse.
Pour chaque table, j'ai fait un procédure qui utilise des collections (en moyenne il doit y avoir 6 ou 7 collections par table, dont 2 qui correspondent à la structure des tables). En lançant mes procédures à la suite les unes des autres sur une base contenant environ 200000 enreg, j'ai eu un belle saturation du serveur qui n'a pas supporté le traitement du coup :/
J'ai l'impression que cela vient du fait que les collections ont saturé la mémoire du pauvre serveur (swap consommé à 100%), y a-t-il moyen de libérer l'espace mémoire dédié à une collection en fin de procédure?
Merci d'avance (PS: c'est urgent!)
-
-
Merci, je vais essayer ça...mais je suis surpris, je pensais que le fait de sortir de mes procédures libérait les collections qui y sont déclarées et alimentées
-
Pourquoi avez-vous besoin d'autant de collections ?
-
Afin de faire le mapping et de faire des traitements en masse (forall). Pour séumer la situation, j'ai une collection pour la table transitoire, une pour la PK et une pour chaque FK (sur certaines tables j'ai 14 FK, hélas) et parfois une collection corrsepondant à la table du data warehouse.
-
Sans doute mon cerveau est-il passablement embrumé, mais j'ai du mal à comprendre la nécessité d'avoir une collection différente pour chaque clé...
Pouvez-vous en expliquer le besoin ?
-
ça me permet d'avoir des fonctions génériques qui alimentes chacune une collection.
Est-ce plus coûteux d'avoir une collection pour chaque clé que d'avoir une collection qui regroupe clés (collection d'objets telle que je la vois donc)?