En mi sitio tengo un visitante de la tabla con 10 millones de filas.

Cada petición al sitio inserta fila a la tabla, en caso de que la tabla está bloqueada (por lo general en optimizar la consulta) los visitantes no pueden entrar en el sitio

La tabla motor MyISAM y quiero cambiar a InnoDB

Tengo algunas preguntas:

  • ¿Cómo puedo cambiar la tabla de motor sin detenerme a mi sitio de trabajo
  • Hay una manera de optimizar la tabla InnoDB sin bloqueo

OriginalEl autor Idob | 2014-02-03

2 Comentarios

  1. 18

    La forma más fácil es

    ALTER TABLE table_name ENGINE = InnoDB;

    Si utiliza el motor InnoDB usted no debe preocuparse por el bloqueo de tablas, ya que este motor bloquea los datos por filas.

    Si voy a cambiar el motor de MyISAM a InnoDB la tabla será bloqueado?
    Sí que me lo creo. Pero usted puede hacer que en el momento en que su sitio tiene menos visitantes.
    Sólo quiero estar seguro, la optimización de tabla InnoDB se bloqueo la tabla para escribir o no?
    Si desea asegurarse de que la tabla va a ser bloqueado. Antes de ejecutar ALTER ejecutar LOCK TABLE table_name WRITE; y después de ejecutar UNLOCK TABLES;.

    OriginalEl autor oleksii.svarychevskyi

  2. 5

    oleksii.svarychevskyi es derecho, InnoDB utiliza bloqueos a nivel de fila, pero si no

    ALTER TABLE table_name ENGINE = InnoDB;

    para cambiar table_name de MyIsam a InnoDB, habrá una metadatos de bloqueo (a nivel de tabla), ya que la tabla original motor MyIsam.

    Si se intenta realizar una ACTUALIZACIÓN a través de table_name, esta ACTUALIZACIÓN será en la cola de espera hasta que el ALTER TABLE extremos (si hacer un SHOW COMPLETO PROCESSLIST verá un «a la Espera de metadatos de la tabla de bloqueo» mensaje asociado a la ACTUALIZACIÓN).

    OriginalEl autor Felipe Alonso

Dejar respuesta

Please enter your comment!
Please enter your name here