|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Inscription : juillet 2003 Messages : 257 ![]() |
bonjour,
je travaille sur sybase et j'essaye de creer une requete de genre: insert into table1 select * from table2 where...; le probleme est que la requete select m'envoi des centaines de mille de ligne. Alors Sybase stocke apparament ses donnes en memoire en attendant qu'il recupere toutes les lignes avant qu'il commence l'insertion! Ce qui fait que la memoire est saturée àpres un certain moment. Est ce qu'il y a une solution de demander à Sybase d'inserer les resultats de la requete select dans table1 par paquet et qu'il attend pas toutes les donnees??!! j'espere que j'etais claire dans ma question. Merci d'avance |
|
|
00
|
|
|
#2 |
![]() ![]() |
Ceci n'a rien à voir avec la mémoire, mais avec les journaux.
Le insert into select est une opération standarde d'insert massifs : toute la transaction,pour qu'elle ait la possibilité d'être rollbackée en cas de problème, doit passer dans votre log. Si vous voulez éviter cela, quelques options s'offrent à vous 1) passer par un select into (cela demande à ce que la table resultante n'existe pas avant le chargement) 2) faites un fast bcp out/in (cela demande que pa table resultante n'ait ni index, ni valeur par defaut, ni trigger ) 3) réduisez le spectre de votre insert select et faites le passer en plusieurs fois (en ajoutant une condition)
__________________
Sr DBA Oracle / Sybase / MS-SQL / DB2 / Informix / Postgresql Administrateur SAP Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums ! |
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Inscription : juillet 2003 Messages : 257 ![]() |
J'ai essayé la select into et ca fonctionne à merveille
Merci beaucoup pour l'aide et pour vos explications |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com