Avantages du verrouillage au niveau de la table


7

Quels sont les avantages du verrouillage au niveau de la table utilisé par le moteur de stockage MyISAM?Le verrouillage au niveau des lignes présente de nombreux avantages, tels que les mises à jour simultanées et les lectures qui ne verrouillent pas la table.

modifierIl est largement considéré que le verrouillage au niveau de la table évite les blocages.Mais comment prévenir les blocages au détriment de la concurrence est-il utile?

  0

[Cette discussion] (http://dba.stackexchange.com/questions/1/what-are-the-main-differences-between-innodb-and-myisam) peut vous donner des informations pertinentes. 14 sept.. 112011-09-14 20:57:50

  0

Cette discussion porte sur les caractéristiques de MyISAM vs InnoDB. Il n’ya rien sur les avantages du verrouillage au niveau de la table. 14 sept.. 112011-09-14 21:05:21

5

MyISAM n'a pas d'interblocage, mais l'interblocage est en quelque sorte une amélioration par rapport au verrouillage au niveau de la table.

Lorsque vous essayez d'insérer/mettre à jour/supprimer à partir d'une table verrouillée, vous devez attendre jusqu'à ce qu'elle soit disponible ou jusqu'à ce que vous obteniez un délai d'attente (par défaut, 28 800 secondes).En cas d’interblocage sur un moteur de verrouillage au niveau de la ligne, vous attendez un peu s’il n’est pas libre et si le serveur détecte une sorte de "boucle infinie" - où 2 connexions n’abandonnent pas une ligne -, les deux donner une impasse.

Si vous essayez de résoudre l'impasse, je vous suggère de regarder les points suivants:

  • Le blocage se produit-il sur un code incorrect dans une transaction?Est-il vraiment nécessaire de "tenir" une ligne pour que vous puissiez compléter votre calcul et le mettre à jour?
  • Y at-il un index pour la condition dans votre déclaration?sinon InnoDB pourrait en effet marquer la table entière comme étant en attente de mise à jour.
  • Se pourrait-il que le disque dur sur le serveur ne valide pas les modifications InnoDB assez rapidement?le fonctionnement du point de contrôle sur le serveur pose-t-il des problèmes/blocages avec InnoDB?
  • Est-ce à cause du verrouillage automatique de l'incrément?Si tel est le cas, vous devriez peut-être envisager une incrémentation automatique plus libérale - paramètre http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html (examinez également le verrouillage au niveau de la ligne pour résoudre certains des problèmes causés par ces modifications).

3

Un verrou de table (tel que celui utilisé par MyISAM) est exempt de problèmes deadlock .

  0

BTW +1 pour répondre d'abord à l'impasse !!! 14 sept.. 112011-09-14 21:17:32


6

Depuis que mysql planifie les requêtes pour l'exécution de cette manière:

  • Les demandes d'écriture (telles que UPDATE et DELETE) ont priorité sur les demandes de lecture (SELECT)
  • Le serveur effectue les écritures de manière FIFO (dans l'ordre de réception)

Quels sont les bénéfices ?

Les blocages ne peuvent jamais se produire avec MyISAM.Le serveur MySQL peut donc gérer tous les conflits, qu’ils soient explicites (LOCK TABLEs) ou implicites (Any DML).

Tant qu'une table MyISAM ne contient aucun enregistrement supprimé ou mis à jour, des insertions simultanées peuvent se produire librement en toute impunité.Cela inclurait, en effet, des INSERT sur une table ayant un verrou de lecture explicite.

Pour toute table avec des espaces, l'exécution d'OPTIMIZE TABLE permettrait de supprimer ces espaces et de permettre les insertions simultanées.

Pour plus d'informations, veuillez lire le "MySQL 5.0 Certification Study Guide" pages 408-412 Section 29.2 .

  0

De cette façon, l'impasse ne se produira jamais, mais d'où vient son avantage par rapport à ses inconvénients, comme l'absence de concurrence.Et en cas de charge élevée, le débit de la base de données est lent. 14 sept.. 112011-09-14 21:10:03

+2

@rickjames L'avantage de myisam n'est pas dans la façon dont il gère les mises à jour.C'est mieux dans une situation intensive non écrite. 14 sept.. 112011-09-14 21:13:01

  0

Malheureusement, de nombreuses personnes utilisent les systèmes de gestion de contenu WordPress, Drupal et MoveableTypes, dont le système par défaut est toujours MyISAM.Si quelqu'un a un site Web à trafic élevé, il doit s'éloigner de MyISAM.Sinon, MyISAM devrait suffire. 14 sept.. 112011-09-14 21:13:45

  0

@DTest correct, mais même dans un système intensif en lecture, quel est son intérêt par rapport au verrouillage au niveau de la ligne? 14 sept.. 112011-09-14 21:14:38

  0

Même dans un système à lecture instantanée, une seule instruction DELETE ou UPDATE annulera rapidement les avantages de MyISAM. 14 sept.. 112011-09-14 21:16:59

  0

La suppression des blocages @rickjames est «l'avantage» du verrouillage de table par rapport au verrouillage de ligne.MyISAM présente d'autres avantages que innodb, mais il ne s'agit pas d'une discussion à ce sujet (innodb présente de nombreux avantages par rapport à myisam!) 14 sept.. 112011-09-14 21:25:24

  0

J'ai bien peur que ce soit très typique de MySQL.La raison pour laquelle MyISAM dispose d'un verrouillage au niveau de la table est simplement parce qu'ils n'étaient pas en mesure de mettre en œuvre le verrouillage au niveau de la ligne (cette tâche a été laissée à un tiers qui nous a fourni InnoDB).Mais ils essaient de le faire tourner comme s'ils voulaient le faire depuis le début.Je me souviens qu'ils avaient l'habitude de dire que vous n'aviez pas besoin de clés étrangères, de transactions, de procs stockés, etc., alors qu'en réalité ils ne pouvaient tout simplement pas les faire.Prenez leur documentation avec un ** GRAND ** pincée de sel. 15 sept.. 112011-09-15 18:28:52


3

Deux avantages

une.Le verrouillage des tables est un exemple de brute-force algorithm permettant de résoudre le problème des blocages.La force brute fonctionne toujours, pour des valeurs appropriées de "travaux".

Ken Thompson, le co-inventeur d'Unix, aurait prononcé l'épigramme «En cas de doute, utilisez la force brute».Il pensait probablement que ce n'était qu'un sérieux, mais la préférence du noyau Unix original pour des algorithmes simples, robustes et portables par rapport à des algorithmes «intelligents» fragiles semble avoir été un facteur important du succès de ce système d'exploitation.À l'instar de nombreux autres compromis en matière de conception de logiciels, le choix entre force brutale et intelligence complexe et minutieuse est souvent difficile et requiert à la fois un savoir-faire ingénieux en matière d'ingénierie et un jugement esthétique délicat.

b.Vous prendrez sans aucun doute différentes décisions à mesure que vous gagnerez en jugement technique et en esthétique.Cela n'affecte pas la validité de "a" ci-dessus.