J'ai besoin d'importer environ 500 000 enregistrements contenant des données de recherche IP (référence en lecture seule) environ une fois par semaine (seulement trois colonnes int / bigint).
Je ne veux pas vraiment m'inquiéter de la fusion des données avec la table existante, je préfère effacer l'ancien et réimporter.
Idéalement, les requêtes exécutées sur les données continueraient de s'exécuter (nous n'en obtenons pas beaucoup et il est acceptable qu'elles s'exécutent un peu plus lentement pendant l'importation, mais doivent être en place 24 heures sur 24, 7 jours sur 7, donc exécuter ceci " hors heures "n'est pas une option).
Choses essayées jusqu'à présent
SSIS: J'ai créé un package SSIS qui tronque la table et importe - cela prend environ 30 secondes pour s'exécuter (trop long vraiment).
Table temporaire: l'importation dans une table temporaire, sa troncature et sa copie prennent également environ 30 secondes.
BCP: L'importation en masse est également plutôt trop lente (pour une raison quelconque, elle est plus lente que SSIS (même sans index à maintenir) - je suppose que c'est quelque chose à voir avec les transactions char-> int / bigint: /
Table miroir? Donc, pour le moment, je me demande comment lire le tableau dans une vue, importer les données dans un tableau miroir et modifier la vue pour pointer vers ce tableau ... cela semble être rapide, mais il semble minuscule peu hacky pour moi.
Cela semble être un problème courant, mais je ne trouve pas de pratiques recommandées - toutes les idées seraient les plus appréciées!
Merci
la source