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

Administration SQL Server Discussion :

Db ReportServer : table Segment de 65 GB


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    DBA SQL Server
    Inscrit en
    Octobre 2012
    Messages
    862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA SQL Server
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 862
    Par défaut Db ReportServer : table Segment de 65 GB
    Bonjour à tous,

    Je trouve pas mal d'infos sur ReportServerTempDB à propos de la table Segment, mais pas pour la db ReportServer.

    Il y a 2 semaines, la table Segment avait 9339395 lignes et faisait 65 GB. ChunkSegmentMapping en avait 9339392 mais ne faisait que 1.4 GB.

    On a vu dans les paramètres du site de Report Server à ce moment-là, "Rétention de la capture instantanée d'historique par défaut" était sur l'option pour tout garder. Et à un moment donné, je ne sais pas comment, hop la DB s'est vidée et est tombé à 15 GB. On en a profité pour changer et mis de conserver que 10 snaphots. Savez-vous quelle table ces snapshot remplissent ?

    Mais aujourd'hui, hop, rebelotte, la DB fait 75 GB et la table Segment en fait 67 GB. Alors je ne vois plus quoi faire, autre que de nettoyer la table Segment?

    J'ai trouvé ce script :

    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
    use ReportServer
    go
    select count (*)
    from Segment
     
    DECLARE @RowCount INT
    SET @RowCount = ( SELECT    COUNT(1)
                      FROM ReportServer..Segment WITH ( NOLOCK )
                    )
     
    WHILE ( @RowCount > 1000000) 
        BEGIN
            DELETE TOP ( 1000 )
            FROM    Segment
            SET @RowCount = ( SELECT    COUNT(1)
                              FROM ReportServer..Segment WITH ( NOLOCK )
                            )
            PRINT @RowCount
        END
    J'ai du mal à trouver les conséquences en cas de suppression de ces lignes? Quel est l'impact svp?

    Y a t'il un autre moyen de faire pour diminuer la taille?

    Merci,

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 961
    Par défaut
    Hummm,
    * pourriez vous décrire l'algo de ce que fait le script ?
    * est-ce que la procédure utilisée pour changer le le nombre de snapshot ne nécessite pas un redémarrage ?
    * 10 c'est le nombre de snapshot en tout pour le service ou le nombre de snapshot par report ?

    Visiblement Microsoft ne communique pas beaucoup sur la conception de cette base. Ils n'ont pas jugés bon non plus de créer des FK
    Ce qui mène droit à
    https://social.msdn.microsoft.com/Fo...related-tables
    où on explique comment virer les lignes orphelines.

    Ultimement pour gagner de la place on peut jouer la carte compression de données :
    * https://docs.microsoft.com/en-us/sql...ql-server-2017

    Pour finir, il me semble que les tables "History" et "SnapshotData" pourraient vous être utile pour déterminer les conséquences des suppressions.

    tenez nous informés.

  3. #3
    Membre Expert
    Homme Profil pro
    DBA SQL Server
    Inscrit en
    Octobre 2012
    Messages
    862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA SQL Server
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 862
    Par défaut
    Bonjour,

    Pas sûr de comprendre, mais il supprime par 1000 lignes tout ce qui se trouvent au dessus de 1000000 de lignes dans la table Segment.
    Je l'ignore, mais on a redémarré le service ce matin, mais pas lors du changement si mes souvenirs sont bons. On verra si cela améliore.
    Je ne sais pas, j'aimerais le savoir...

    On avait trouvé ceci aussi mais parlant de la ReportServer TempDB :

    https://www.sqlservercentral.com/For...le?PageIndex=2

    J'avais trouvé le votre, mais il parle pour la TempDB de ReportServer, et quand j'essaie de le faire en demandant sur la ReportServer, il ne se passait rien.

    Bref, on continue de chercher...

    Merci,

  4. #4
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 961
    Par défaut
    Citation Envoyé par janlouk Voir le message
    Pas sûr de comprendre, mais il supprime par 1000 lignes tout ce qui se trouvent au dessus de 1000000 de lignes dans la table Segment.
    J'imagine que cette phrase répond à ma demande d'explicitation de l'algo.

    Êtes vous vraiment sûr de vouloir supprimer les snapshot des reports de manière aveugle ?

    Je comprends que vous vouliez faire de la place et que la suppression de 8 millions de lignes sur 9 millions semble alléchante.
    Mais ce sera fait sans tenir compte de l’intérêt propre d'avoir demandé d'enregistrer ces snapshots (et puis pourquoi garder 1 million de lignes plutôt que 1000, ou 100, ou 10 ou 0 ?)
    De plus vu qu'il n'y a pas de FK cette suppression va générer des orphelins...

    Donc, non, définitivement ce script ne me semble pas adapté à un contexte professionnel.

    En faisant l'analyse du code qui permet de virer les lignes orphelines + en regardant de plus près le contenu des tables "History" et "SnapshotData" vous devriez arriver avoir une vision plus claire du pourquoi il existe autant de lignes et pouvoir agir de manière éclairée.

    Tenez nous informés.

  5. #5
    Membre Expert
    Homme Profil pro
    DBA SQL Server
    Inscrit en
    Octobre 2012
    Messages
    862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA SQL Server
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 862
    Par défaut
    Citation Envoyé par Michel.Priori Voir le message
    Êtes vous vraiment sûr de vouloir supprimer les snapshot des reports de manière aveugle ?
    Justement, je ne veux rien supprimer à l'aveugle et c'est ça que j'essaie de comprendre.

    Je comprends que vous vouliez faire de la place et que la suppression de 8 millions de lignes sur 9 millions semble alléchante.
    Mais ce sera fait sans tenir compte de l’intérêt propre d'avoir demandé d'enregistrer ces snapshots (et puis pourquoi garder 1 million de lignes plutôt que 1000, ou 100, ou 10 ou 0 ?)
    De plus vu qu'il n'y a pas de FK cette suppression va générer des orphelins...
    C'est donc surement à cela que sert le script dans le lien que vous aviez mis aussi qui permet de supprimer les orphelins.

    Donc, non, définitivement ce script ne me semble pas adapté à un contexte professionnel.

    En faisant l'analyse du code qui permet de virer les lignes orphelines + en regardant de plus près le contenu des tables "History" et "SnapshotData" vous devriez arriver avoir une vision plus claire du pourquoi il existe autant de lignes et pouvoir agir de manière éclairée.

    Tenez nous informés.
    Je vais y regarder dès que j'ai le temps...

Discussions similaires

  1. [2016] Db ReportServer : table Segment de 65 GB
    Par janlouk dans le forum SSRS
    Réponses: 1
    Dernier message: 14/02/2019, 11h10
  2. [2014] ReportServer - Détail des tables
    Par luatwork dans le forum SSRS
    Réponses: 0
    Dernier message: 06/12/2016, 09h59
  3. Réparation table/entête endommagée
    Par tbesrour dans le forum Paradox
    Réponses: 15
    Dernier message: 27/11/2007, 10h42
  4. [ASE10]Segment d'appartenance d'une table
    Par benhoeil dans le forum Sybase
    Réponses: 15
    Dernier message: 07/11/2006, 16h06
  5. [Comparatifs] Limites nombres tables et quantité de données
    Par benj63 dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 13/06/2002, 21h31

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