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 :

Transaction log - Alter column


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut Transaction log - Alter column
    Bonjour,

    Soit le script de création de table de test suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    create table varchar2nvarchar
    (
    id int identity (1,1) not null,
    value varchar(255),
    nvalue nvarchar(255)
    )
     
     
    insert into varchar2nvarchar (value)
    select 'abc'
    union
    select 'def'
    union
    select 'ghi'
    union
    select 'jkl'
    union
    select 'mno'
    union
    select 'pqr'
    union
    select 'stu'
    union
    select 'vwx'
    union
    select 'yz'
    GO
     
    insert into varchar2nvarchar (value)
    select top 1000000 a.value + b.value
    from varchar2nvarchar a cross join varchar2nvarchar b
    GO 3
    Ensuite l'execution de la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alter table varchar2nvarchar alter column value nvarchar(255)
    Mon fichier journal grossis jusque 1500MB.
    Je n'arrive pas à expliquer une telle croissance pour un si petit nombre de rows (qui représente 35MB de données).

    Comment peut on expliquer une telle croissance ?
    Est ce que le grossissement du fichier log est une fonction linéaire?
    Est ce qu'un tel changement (alter table ... alter column...) va generer plus de "logs" en fonction de la taille totale d'une row ou est ce uniquement dépendant de taille de la colonne ?

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    Ce comportement est tout à fait normal.

    La taille du fichier des transactions dépend du volume de transaction.

    D'après votre script vous insérez 1008190 lignes dans votre table.
    Votre fichier de transaction va grossir une première fois.

    Ensuite vous faites un ALTER TABLE ALTER COLUMN... Sqlserver va refaire un passage sur l'ensemble de votre table (donc les 1008190 lignes) et logger une nouvelle fois dans le fichier des transactions.

    ++

  3. #3
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    Merci pour ta réponse.
    Je comprend bien le raisonnement derrière, je suis par contre surpris de l'espace nécessaire pour réaliser l'opération.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/05/2006, 11h11
  2. [VB6] Alter table alter column syntaxe
    Par enibris dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/04/2006, 17h11
  3. Clauses ALTER COLUMN multiples sous Access 2000
    Par richardkiii dans le forum Access
    Réponses: 10
    Dernier message: 30/03/2006, 09h01
  4. Transaction log files
    Par abelman dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/11/2005, 17h00
  5. Alter column => passer de NOT NULL à NULL
    Par JohnGT dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/10/2003, 11h16

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