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

MS SQL Server Discussion :

SNAPSHOT Avec READ_COMMITTED_SNAPSHOT à OFF [2014]


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 24
    Points : 16
    Points
    16
    Par défaut SNAPSHOT Avec READ_COMMITTED_SNAPSHOT à OFF
    Bonjour

    Actuellement, nous utilisons SQL Server mais malheureusement avec un code source d'une application qui n'est pas très propre car le programme utilise des transactions très longues, avec triggers très longs, sans optimisation
    Nous réécrirons plus tard le code mais pour l'heure nous cherchons une solution de secours car nous rencontrons beaucoup de blocages SQL

    Il a notamment été proposé et activé chez un client une solution par SNAPSHOT mais avec un READ_COMMITTED_SNAPSHOT à OFF
    Sur un outil de recherche (uniquement du SELECT), une transactionscope (c#) est activé en mode SNAPSHOT

    Je me pose la question de l'intérêt dans le cadre de READ_COMMITTED_SNAPSHOT OFF de positionner une requête de type SELECT en mode SNAPSHOT

    Est ce que ce mode ne présente pas seulement un intérêt sur des commandes INSERT, UPDATE et DELETE (UID) ?
    Comme c'est le cas quand READ_COMMITTED_SNAPSHOT est à ON et que les transactions UID ont lieu dans TempDb ce qui évite les blocages futurs de SELECT dans la base de données

    Merci pour vos commentaires

    Cordialement
    F.Jobard

  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
    21 736
    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 736
    Points : 52 448
    Points
    52 448
    Billets dans le blog
    5
    Par défaut
    Par défaut SQL Server fait du verrouillage pessimiste, c'est à dire que TOUTES LES LECTURES posent des verrous interdisant les mises à jour.
    En utilisant le mode d'isolation SNAPSHOT pour une requête de lecture, SQL Server va poser des verrous optimistes qui ne vont pas interdire les mises à jour. Dans ce dernier cas, les lignes ne sont pas lues directement en "live" mais copiées afin que vous puissiez travailler en toute indépendance alors que d'autres sessions vont les modifier.

    Le mode d’isolation SNAPSHOT ne sert donc uniquement qu'aux lectures, le verrouillage des écritures restant strictement identique.

    ATTENTION cependant aux effets de bord. En effet, l'utilisation du mode SNAPSHOT dans le cas de transactions longue et complexe, si il n'a pas été prévue à l'origine, peut retourner des résultats incohérents notamment pour les relectures (dans ce cas activez le mode d’isolation REPEATABLE READ). De la même manière, si les transactions gèrent mal les exceptions (pas de TRY/CATCH avec THROW... par exemple) les résultats peuvent être aussi incohérent.

    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
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Merci pour ces précisions

    Si j'ai bien compris, si le mode SNAPSHOT est activé sur le SELECT

    Dans le cas 1 : L'utilisateur interroge la table et juste après et toujours pendant la lecture, un utilisateur modifie la donnée => Pas de souci puisqu'il y a copie des informations de SELECT

    Dans le cas 2 : L'utilisateur modifie la donnée et juste après et pendant la modification, un autre utilisateur lit les données.
    Est ce que SQL est alors bloqué car un verrou X est posé sur les tables ou est ce que SQL server est tout de même capable d'obtenir les données source et d'en faire une copie ?

    Cordialement
    F.Jobard

  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
    21 736
    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 736
    Points : 52 448
    Points
    52 448
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Franck.jobard Voir le message
    Merci pour ces précisions

    Si j'ai bien compris, si le mode SNAPSHOT est activé sur le SELECT

    Dans le cas 1 : L'utilisateur interroge la table et juste après et toujours pendant la lecture, un utilisateur modifie la donnée => Pas de souci puisqu'il y a copie des informations de SELECT
    Oui

    Dans le cas 2 : L'utilisateur modifie la donnée et juste après et pendant la modification, un autre utilisateur lit les données.
    Il ne lira pas les données en cours de modification, mais il obtiendra une copie des données juste avant le début de modif.
    Est ce que SQL est alors bloqué car un verrou X est posé sur les tables ou est ce que SQL server est tout de même capable d'obtenir les données source et d'en faire une copie ?
    cf ci avant...

    Cordialement
    F.Jobard
    Pour vous en convaincre, jouez les requêtes de l'article explicatif que j'ai écrit à ce sujet :
    https://sqlpro.developpez.com/isolation-transaction/

    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/ * * * * *

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Merci pour toutes ces précisions, c'est plus clair maintenant

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

Discussions similaires

  1. Rafraîchissement Snapshot avec Options
    Par tonio45312 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 04/06/2009, 18h27
  2. [Mail] Compatibilité avec register_globals=off
    Par joboy84 dans le forum Langage
    Réponses: 3
    Dernier message: 05/04/2008, 04h31
  3. Capter les erreurs d'insertion avec avertissements à OFF
    Par guidav dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/04/2008, 17h43
  4. SnapShot avec Dspack234
    Par cincap dans le forum Composants VCL
    Réponses: 1
    Dernier message: 05/09/2007, 17h19
  5. Erreur opendir avec SafeMode = off
    Par Nicolas N. dans le forum Langage
    Réponses: 4
    Dernier message: 12/07/2007, 00h36

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