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

Outils MySQL Discussion :

MyISAM & les accès concurrentiels: le "miracle"


Sujet :

Outils MySQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 2
    Points : 1
    Points
    1
    Par défaut MyISAM & les accès concurrentiels: le "miracle"
    Bonjour à tous,

    Je développe depuis pas mal de temps déjà des sites webs PHP utilisant une base de donnée MySQL (PHP/MySQL étant le couple le plus classique utilisé sur le web). En fait, je ne me suis jamais vraiment intéressé aux BDD et SGBD. Depuis peu, je sais que le format par défaut des tables MySQL, le fameux MyISAM, ne gère ni les transactions ni les vérouillages de table. Bref, je crois qu'on peut dire que les tables MyISAM fait fit des accès concurrentiels. Mais cela m'étonne beaucoup. phpBB par exemple (utilisé pour les forums développez.net notamment ) utilise le format par défaut MyISAM. Je me demande dès lors, sur des forums aussi gros que développez.net, comment l'intégrité des données de la BDD peut être assurée?? Parce que sur un forum, les "conflits" du aux accès multi-users sont quand même très probables non? Alors comment MySQL peut tenir la route ainsi? Mais peut-être utilisez-vous un autre serveur?

    Je remarque d'ailleurs que je n'ai JAMAIS entendu parlé de vérouillage/transaction/accès concurrentiels sur les tous tutoriels MySQL que j'ai pu lire C'est tout de même un fondement des base des données non? Toutefois, je sais qu'avec les tables InnoDB, les accès concurrentiels sont gérés. Alors quoi? Comment un site web peut-il ignorer ces accès concurrentiels? Il est vrai que je les ai toujours ignorés jusqu'à présent - tout simplement par manque de connaissance dans ce domaine - mais je me rends compte maintenant à quel point c'est risqué. Et pourtant, MySQL et son mode de table par défaut MyISAM semblent tout à fait s'en contenter??

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Bonjour,

    Il ne faut pas confondre transactions et accès concurrents.

    Si le moteur MyISAM ne supporte pas les premières, il a en revanche sa propre méthode de gestion des accès concurrents (via des verrous au niveau table).

    Cf http://dev.mysql.com/tech-resources/articles/storage-engine/part_2.html

    For concurrency control, MyISAM uses table-level locking with concurrent inserts. Let's spend a little bit more time on this, as it is often misunderstood. There are, in fact, three types of locks in MyISAM:

    READ LOCAL lock. This is used by queries that only need to read. This type of lock merely blocks updates, to prevent the data from changing during the query. Other read queries can proceed, as can concurrent inserts: if an INSERT statement can add the new data at the end of the .MYD file, rather than by filling existing free space (from rows that were deleted), it does not have to wait on a READ LOCAL lock.

    READ, or shared locks. This locking type blocks updates, including all INSERTs. It is generally used if an external tool such as myisamcheck needs to access a table file directly.

    WRITE, or exclusive locks. This is used by DELETE, UPDATE and sometimes INSERT statements. All other access (readers as well as writers) to the table is blocked, to prevent updates from interfering with each other.

    By "blocking" we mean that a thread (connection) may have to wait until another thread has completed its operation and releases the lock. While is is possible to set locks manually, the MySQL server employs the necessary locking implicitly for any statement it executes.
    On peut donc dire que pour les cas basiques, le moteur MyISAM assure lui-même la gestion des accès concurrents. Néanmoins, il est possible de mettre en place des procédés plus pointus (se rapprochant des véritables transactions) grâce aux verrous LOCK TABLES.
    Pensez au bouton

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Les verrous ne sont justement pas disponibles pour les tables MyISAM non?

  4. #4
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Citation Envoyé par twkjp
    Les verrous ne sont justement pas disponibles pour les tables MyISAM non?
    Et Lock Tables cà sert à quoi svp ?

Discussions similaires

  1. [VB.NET] Accès concurrentiel aux fichiers
    Par david71 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 13/12/2004, 11h19
  2. [Access] Accès concurrentiels
    Par Benjamin GAGNEUX dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/07/2004, 17h56
  3. [TDataModule] Intérêt de séparer les accès aux données?
    Par Cornell dans le forum Bases de données
    Réponses: 5
    Dernier message: 05/09/2003, 16h42

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