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 qui explose


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Par défaut transaction log qui explose
    Bonjour,

    J'ai une base de donnée d'environ 30Go. Le recovery mode est "simple".

    J'ai une requête qui crée 135Go de transaction log... est-ce normal ? Je veux dire... pourquoi loguer la transaction : on restaure un back-up, dans ce cas, non ?

  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,

    Il est normal que même en mode simple, l'opération soit enregistré dans le journal ... En cas d'annulation de l'opération cela permet de relire ce journal pour effectuer un rollback.

    ++

  3. #3
    Membre éclairé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Par défaut
    Oui, mais une opération de 135Go pour une base de 31Go, n'est-ce pas abusif ?

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Je trouve quand même bizarre que la taille de votre journal des transactions soit plus de 4 fois plus gros que votre base de données.
    Quelle est donc cette requête ?

  5. #5
    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
    Je dirais même plus ... quelle est donc cette requête ?

    ++

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 : 21 998
    Billets dans le blog
    6
    Par défaut
    Oui, alors... Cette requête ???

    Bonne vieille méthode :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/ * * * * *

  7. #7
    Membre éclairé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Par défaut
    A priori, c'est ici que ça explose (@withcheckpoint vaut 1) :

    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
    if @withcheckpoint = 1
    		begin
    			checkpoint
    		end
     
    		set @step = 'Lines to create are marked with TO_CREATE = 1'
    		if (@verbose = 1) exec dbo.ELL_Insert @ok = 1, @action = @action, @step = @step , @message = ' starting...'
     
    		insert
    			dbo.PCS_PROVIDERCITYSERVICE
    			(PVD_EXTERNAL_ID, SRV_EXTERNAL_ID, INSEE_CODE, TO_CREATE)
    			select
    				 PVD_EXTERNAL_ID, SRV_EXTERNAL_ID, INSEE_CODE, 1
    			from
    				dbo.PCS_PROVIDERCITYSERVICE_TEMP tmp
    			where
    				tmp.PCT_STATUS <> 3 and tmp.PSH_STATUS <> 3 
    		except
    			select
    			 PVD_EXTERNAL_ID, SRV_EXTERNAL_ID, INSEE_CODE, 1
    			from
    				dbo.PCS_PROVIDERCITYSERVICE pcs
     
     
    		if @withcheckpoint = 1
    		begin
    			checkpoint
    		end
    Du moins, ce bloc est dans un try catch (avec plein d'autres traitements sur les tables PCS), et, quand je n'ai que 90Go de disque sur le serveur, le catch récupère l'erreur avec le step : 'Lines to create are marked with TO_CREATE = 1'

    On a dans la table PCS_PROVIDERCITYSERVICE_TEMP environ 57 millions de lignes, et la table PCS_PROVIDERCITYSERVICE est vide, à ce moment là (c'est la 1ère insertion)


    Les scripts de création des tables :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    USE [D_EAF_ETL]
    GO
    /****** Object:  Table [dbo].[PCS_PROVIDERCITYSERVICE]    Script Date: 04/08/2010 18:02:31 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO
    CREATE TABLE [dbo].[PCS_PROVIDERCITYSERVICE](
    	[ID] [int] IDENTITY(1,1) NOT NULL,
    	[PVD_EXTERNAL_ID] [varchar](36) NOT NULL,
    	[SRV_EXTERNAL_ID] [varchar](36) NOT NULL,
    	[INSEE_CODE] [varchar](10) NOT NULL,
    	[PVD_ID] [int] NULL,
    	[SRV_ID] [int] NULL,
    	[GEO_ID] [int] NULL,
    	[TO_CREATE] [bit] NOT NULL CONSTRAINT [DF_PCS_PROVIDERCITYSERVICE_TO_CREATE]  DEFAULT ((0)),
    	[TO_UPDATE] [bit] NOT NULL CONSTRAINT [DF_PCS_PROVIDERCITYSERVICE_TO_UPDATE]  DEFAULT ((0)),
    	[TO_DELETE] [bit] NOT NULL CONSTRAINT [DF_PCS_PROVIDERCITYSERVICE_TO_DELETE]  DEFAULT ((0)),
    	[CREATION_DATE] [datetime] NOT NULL CONSTRAINT [DF_PCS_PROVIDERCITYSERVICE_CREATION_DATE]  DEFAULT (getdate()),
    	[UPDATE_DATE] [datetime] NOT NULL CONSTRAINT [DF_PCS_PROVIDERCITYSERVICE_UPDATE_DATE]  DEFAULT (getdate()),
     CONSTRAINT [PK_PCS_PROVIDERCITYSERVICE] PRIMARY KEY CLUSTERED 
    (
    	[ID] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
     
    GO
    SET ANSI_PADDING OFF
    GO
    ALTER TABLE [dbo].[PCS_PROVIDERCITYSERVICE]  WITH CHECK ADD  CONSTRAINT [FK_PCS_PROVIDERCITYSERVICE_GEO_GEOGRAPHY] FOREIGN KEY([GEO_ID])
    REFERENCES [dbo].[GEO_GEOGRAPHY] ([ID])
    GO
    ALTER TABLE [dbo].[PCS_PROVIDERCITYSERVICE] CHECK CONSTRAINT [FK_PCS_PROVIDERCITYSERVICE_GEO_GEOGRAPHY]
    GO
    ALTER TABLE [dbo].[PCS_PROVIDERCITYSERVICE]  WITH CHECK ADD  CONSTRAINT [FK_PCS_PROVIDERCITYSERVICE_PVD_PROVIDER] FOREIGN KEY([PVD_ID])
    REFERENCES [dbo].[PVD_PROVIDER] ([ID])
    GO
    ALTER TABLE [dbo].[PCS_PROVIDERCITYSERVICE] CHECK CONSTRAINT [FK_PCS_PROVIDERCITYSERVICE_PVD_PROVIDER]
    GO
    ALTER TABLE [dbo].[PCS_PROVIDERCITYSERVICE]  WITH CHECK ADD  CONSTRAINT [FK_PCS_PROVIDERCITYSERVICE_SRV_SERVICE] FOREIGN KEY([SRV_ID])
    REFERENCES [dbo].[SRV_SERVICE] ([ID])
    GO
    ALTER TABLE [dbo].[PCS_PROVIDERCITYSERVICE] CHECK CONSTRAINT [FK_PCS_PROVIDERCITYSERVICE_SRV_SERVICE]
     
    USE [D_EAF_ETL]
    GO
    /****** Object:  Table [dbo].[PCS_PROVIDERCITYSERVICE_TEMP]    Script Date: 04/08/2010 18:02:57 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO
    CREATE TABLE [dbo].[PCS_PROVIDERCITYSERVICE_TEMP](
    	[ID] [int] IDENTITY(1,1) NOT NULL,
    	[PVD_EXTERNAL_ID] [varchar](36) NOT NULL,
    	[SRV_EXTERNAL_ID] [varchar](36) NOT NULL,
    	[INSEE_CODE] [varchar](10) NOT NULL,
    	[PCT_STATUS] [smallint] NOT NULL,
    	[PSH_STATUS] [smallint] NOT NULL,
    	[CREATION_DATE] [datetime] NOT NULL CONSTRAINT [DF_PCS_PROVIDERCITYSERVICE_TEMP_CREATION_DATE]  DEFAULT (getdate()),
     CONSTRAINT [PK_PCS_PROVIDERCITYSERVICE_TEMP] PRIMARY KEY CLUSTERED 
    (
    	[ID] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
     
    GO
    SET ANSI_PADDING OFF

Discussions similaires

  1. OLEDISP2.cpp qui explose
    Par tazamorte dans le forum Visual C++
    Réponses: 2
    Dernier message: 31/08/2006, 14h52
  2. [DEBUTANT]Supprimer et/ou vider les transaction Log
    Par tripper.dim dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/05/2006, 21h46
  3. Réponses: 2
    Dernier message: 19/05/2006, 11h11
  4. Transaction log files
    Par abelman dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/11/2005, 17h00
  5. HELP!!Base de Données tempdb qui explose!!
    Par mohamed dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 15/07/2005, 13h32

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