2009-09-02 6 views
0

J'ai paquet avec environ 30 proc/fonctions. Cela est invoqué à partir des emplacements servel. À un endroit, il n'utilise que 2 fonctions sur 30. Lorsque les paquets sont appelés, tous les proc/functions sont chargés dans la mémoire. Cependant, dans ce cas, c'est un frais généraux. y-a-t-il un moyen d'éviter ça?Chargement d'un paquet en-tête

Remarque: - Je ne peux plus créer ces deux fonctions proc.

Répondre

1

Je pense que vous avez répondu à votre propre question ici. Un paquet est chargé en mémoire en tant qu'unité unique. Si vous ne pouvez pas séparer les fonctions/procédures de ce paquet dans un autre pour économiser sur les frais généraux, alors vous avez éliminé toutes les options.

Quelle est la préoccupation? Mémoire en tête? Citant de Don Burleson, qui n'est pas ma source préférée, mais était pratique, les paquets sont chargés dans la mémoire partagée de la piscine une fois, sauf si paginé. Ce qui peut être vu comme frais généraux n'est pas par session, il est par instance.

+0

D'accord. Bien qu'il y ait des frais généraux, c'est minime. Lors de la conception d'un nouveau système, le coût du chargement d'un paquet dans le pool partagé devrait être le moindre de vos soucis dans votre architecture. – darreljnz

0

Le seul véritable surcoût qui nous préoccupe est l'utilisation de l'allocation PGA de la session par des variables déclarées globalement dans le package. Une fois que vous appelez une procédure de votre paquet, le paquet entier sera chargé dans l'espace mémoire de la base de données.

0

Vous ne devriez pas créer un paquet pour tenir des procédures générales juste pour organiser votre code. Les procédures et les fonctions sont combinées en tant que paquet si elles sont corrélées. Si ce n'est pas le cas, vous devriez créer un nouveau paquet pour chacun d'entre eux.

Questions connexes