Insert en masse concurrents
Bonjour,
je dois effectuer dans le cadre d'un etl maison des imports en parallèle. Nous utilisons une base Oracle 11gr2 déployée sur un serveur avec 4 v cpu.
Ma méthode est celle ci :
J'élabore actuellement en mémoire la liste des insertions à faire en masse et exporte cela dans un fichier.
ensuite je me sers du fichier comme d'une table externe et j'effectue un insert comme ceci :
Code:
1 2
|
insert into products (pid,pname, pcategoryid) select pid,pname, pcategoryid from table_ext123; |
pid représente la PK qui n'est normalement pas en base et propre au contenu de ce fichier.
Le fichier contient environ 500 000 lignes.
Tout est prévu pour que l'on puisse avoir en parallèle le même fonctionnement de telle manière qu'au final à instant T plusieurs process pourront exécuter séparément le même type de travail. Et donc avec à chaque fois des jeux de données uniques.
On m'a indiqué que j'aurais probablement un problème de verrouillage de la table qui m'empêchera d'avoir recours à des insert en parallèle.
J'ai essayé de m'y retrouver dans la documentation ici : http://www.sqlpac.com/referentiel/do...l#.WdeDUWi0PIV mais je suis un peu perdu.
Est-ce qu'il y aura réellement un lock même si j'insère tout le temps des valeurs particulières qui ne se chevauchent pas ?
Est-ce que les utilisateurs pourront continuer de requêter pendant que j'effectue mes imports ?
Merci pour vos réponses,
Lek