Beneficios del bloqueo a nivel de mesa


7

¿Cuáles son los beneficios del bloqueo de nivel de tabla que utiliza el motor de almacenamiento MyISAM?El bloqueo a nivel de fila tiene muchos beneficios como actualizaciones y lecturas simultáneas que no bloquean la tabla.

EditarSe considera ampliamente que el bloqueo a nivel de tabla evita puntos muertos.Pero, ¿cómo vale la pena prevenir los puntos muertos a costa de la concurrencia?

  0

[Esta discusión] (http://dba.stackexchange.com/questions/1/what-are-the-main-differences-between-innodb-and-myisam) puede tener alguna información relevante para usted. 14 sep. 112011-09-14 20:57:50

  0

Esta discusión es sobre las características de MyISAM vs InnoDB, no hay nada sobre los beneficios del bloqueo a nivel de tabla. 14 sep. 112011-09-14 21:05:21

5

MyISAM no tiene interbloqueo, pero de alguna manera es un mejoramiento que el bloqueo a nivel de tabla.

Cuando intente INSERTAR/ACTUALIZAR/BORRAR de una tabla bloqueada, deberá esperar hasta que esté disponible o hasta que obtenga un tiempo de espera (de forma predeterminada, 28800 segundos).Con el interbloqueo en un motor de bloqueo a nivel de fila, espera un poco si no está libre y si el servidor detecta una especie de "bucle infinito", donde 2 conexiones no abandonarán una fila, entonces rechazará ambas conexiones rápidamente y dar un punto muerto

Si está intentando resolver el interbloqueo, le sugiero que observe las siguientes cosas:

  • ¿Ocurre el punto muerto en un código incorrecto en una transacción?¿Es realmente necesario "mantener" una fila para que usted complete su cálculo y lo actualice?
  • ¿Hay un índice para la condición en su declaración?de lo contrario, InnoDB podría marcar toda la tabla como esperando a ser actualizada.
  • ¿Podría ser que el disco duro en el servidor no confirme los cambios de InnoDB lo suficientemente rápido?¿La operación del punto de control en el servidor causa problemas/se detiene con InnoDB?
  • ¿Es debido al bloqueo de incremento automático?Si es así, tal vez debería considerar un incremento automático más liberal: configuración http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html (también observe el bloqueo a nivel de fila para resolver algunos de los problemas causados ​​por dichos cambios)

3

Un bloqueo de tabla (como el que usa MyISAM) está libre de deadlock problemas.

  0

BTW +1 para responder primero en interbloqueo !!! 14 sep. 112011-09-14 21:17:32


6

Como mysql planifica las consultas para su ejecución de esta manera:

  • Las solicitudes de escritura (como ACTUALIZACIONES y BORRADAS) tienen prioridad sobre las solicitudes de lectura (SELECT)
  • El servidor realiza escrituras de manera FIFO (en el orden recibido)

Cuales son los beneficios ?

Los puntos muertos nunca pueden ocurrir con MyISAM.Por lo tanto, el servidor MySQL puede administrar toda la contención, explícita (TABLAS DE BLOQUEO) o implícita (Cualquier DML).

Siempre que una tabla MyISAM no tenga registros eliminados o actualizados, las inserciones simultáneas pueden ocurrir libremente con impunidad.Eso, de hecho, incluiría INSERTs en una tabla que tiene un bloqueo de lectura explícito.

Para cualquier tabla con espacios, la ejecución de OPTIMIZE TABLE eliminaría esos espacios y permitiría inserciones simultáneas una vez más.

Para obtener más información, lea "MySQL 5.0 Certification Study Guide" pages 408-412 Section 29.2 .

  0

De esta manera, nunca se producirá un interbloqueo, sino de dónde viene su beneficio en comparación con sus desventajas, como la no concurrencia.Y en alta carga rendimiento lento de la base de datos. 14 sep. 112011-09-14 21:10:03

+2

@rickjames el beneficio de myisam no está en cómo administra las actualizaciones.Es mejor en una situación no intensiva de escritura. 14 sep. 112011-09-14 21:13:01

  0

Desafortunadamente, mucha gente usa los CMS de WordPress, Drupal y MoveableTypes, cuyo valor predeterminado es siempre MyISAM.Si alguien tiene un sitio web de alto tráfico, tienen que alejarse de MyISAM.De lo contrario, MyISAM debería ser suficiente. 14 sep. 112011-09-14 21:13:45

  0

@Destima bien, pero incluso en un sistema de lectura intensiva, ¿cómo es beneficioso en comparación con el bloqueo de filas? 14 sep. 112011-09-14 21:14:38

  0

Incluso en un sistema de lectura interactiva, solo una declaración DELETE o UPDATE anulará rápidamente cualquier beneficio que tenga MyISAM. 14 sep. 112011-09-14 21:16:59

  0

La eliminación de los interbloqueos en @rickjames es "la" ventaja del bloqueo de tabla sobre el bloqueo de fila.MyISAM tiene otros beneficios sobre innodb, pero esto no es una discusión al respecto (innodb tiene muchos beneficios sobre myisam) 14 sep. 112011-09-14 21:25:24

  0

Me temo que esto es muy típico de MySQL de la organización.La razón por la que MyISAM tiene bloqueo a nivel de tabla es simplemente que no pudieron implementar el bloqueo a nivel de fila (que se dejó a un tercero que nos dio InnoDB).Pero intentan hacerlo girar como si quisieran hacerlo todo el tiempo.Recuerdo que solían decir que no necesitaban claves externas, transacciones, procedimientos almacenados, etc., cuando en realidad no podían hacerlos.Tome su documentación con un ** GRANDE ** pizca de sal. 15 sep. 112011-09-15 18:28:52


3

Dos beneficios.

a.Bloquear tablas es un ejemplo de un brute-force algorithm para resolver el problema de los interbloqueos.La fuerza bruta siempre funciona, para valores adecuados de "obras".

Se dice que Ken Thompson, co-inventor de Unix, pronunció el epigrama "En caso de duda, use la fuerza bruta".Probablemente pretendía que esto fuera muy serio, pero la preferencia del kernel original de Unix por algoritmos simples, robustos y portátiles sobre los 'inteligentes' frágiles parece haber sido un factor importante en el éxito de ese SO.Al igual que muchas otras concesiones en el diseño de software, la elección entre la fuerza bruta y la inteligencia compleja y afinada a menudo es difícil, ya que requiere juicios de ingeniería y una estética delicada.

segundo.Indudablemente, tomará decisiones diferentes a medida que adquiera conocimientos de ingeniería y estética.Esto no afecta la validez de "a" arriba.