IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Insert From Select espace disque tempdb [2017]


Sujet :

Développement SQL Server

  1. #1
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut Insert From Select espace disque tempdb
    Bonjour à tous,

    Je dois créer une copie d'une table à partir d'une requète. La table est assez volumineuse. Je suis parti sur une requête de type :

    insert into newTable SELECT from oldTable

    Mais au bout de 28h de script sqlServer me dit que je n'ai pas suffisament d'espace disque sur primary. J'aurai aimé ne pas perdre 28h de mon temps lol.

    Est ce qu'il y a un moyen de savoir avant de lancer le script si celle-ci est réalisable sachant que je n'ai pas accès au serveur BDD ? Quel est l'impact d'une telle requete sur tempdb et le journal de transaction ?

    Est ce qu'une requête de type SELECT INTO newTable from oldTable peut ameliorer les choses ?

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 009
    Billets dans le blog
    6
    Par défaut
    Dans tous les cas le résultat sera le même.... La copie d'une table dans une autre est une transaction d'insertion. il faut donc pouvoir disposer d'un peu plus de 2 fois les données d'origine :
    • Une première fois pour alimenter le journal de transaction
    • une seconde fois pour alimenter la table finale.



    Vous pouvez avoir une idée de la volumétrie de la table de départ en utilisant la procédure stockée système sp_spacused.

    Si vous voulez être plus rapide, il existe des réglages particulier a entreprendre... mais dans plus de détail (par exemple la description de la structure de la table et la description du stockage des bases, il est difficile de vous répondre

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Une solution alternative, c'est de passer par une série de transactions en recopiant qu'une partie des données à chaque fois.
    => Si vous êtes en mode recovery simple (et non full, attention !) ça permettra d'utiliser moins de place
    => Attention aussi si des transactions concurrentes peuvent modifier la table durant la copie... car du coup avec cette méthode on risque de copier des données inconsistantes... ou alors il faut locker explicitement toute la table durant toute la transaction !

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 009
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    ...
    => Attention aussi si des transactions concurrentes peuvent modifier la table durant la copie... car du coup avec cette méthode on risque de copier des données inconsistantes... ou alors il faut locker explicitement toute la table durant toute la transaction !
    Ce qui dans ce cas ne résous pas le problème car la transaction portera sur l'intégralité de la copie depuis le début....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2008] INSERT FROM SELECT (performance)
    Par Pfeffer dans le forum Développement
    Réponses: 9
    Dernier message: 25/07/2017, 15h23
  2. Requête insert from select
    Par Sfaxiano dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/12/2011, 17h43
  3. Espace disque à prévoir pour TempDB et LogFile
    Par Kloun dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/01/2010, 16h46
  4. insert into from select ?
    Par axel584 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 25/01/2005, 19h10
  5. Incrémenter champ : insert into . select max(.) + 1 from .
    Par ludo.guy dans le forum Langage SQL
    Réponses: 10
    Dernier message: 25/11/2004, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo