Pregunta

mysql5.0 con un par de bases de datos " A " y '' B '', ambos con grandes mesas innodb. " descartar la base de datos A; " congela la base de datos " B " por un par de minutos Nada está usando " A " en ese punto, entonces, ¿por qué es una operación tan intensiva?

Puntos de bonificación: dado que usamos "A", cargamos datos en "B" y luego cambiamos a "B", ¿cómo podemos hacer esto más rápido? Descartar bases de datos no es el tipo de cosa que normalmente se tiene que hacer todo el tiempo, por lo que esto está un poco fuera de lugar.

¿Fue útil?

Solución

Así que no estoy seguro de que la respuesta de Matt Rogish vaya a ayudar al 100%.

El problema es que MySQL * tiene un mutex (bloqueo mutuamente excluyente) alrededor de las tablas de apertura y cierre, por lo que básicamente significa que si una tabla está en proceso de cierre / eliminación, no otro las tablas se pueden abrir.

Esto lo describe un colega mío aquí: http://www.mysqlperformanceblog.com/2009/06/16 / slow-drop-table /

Una excelente estrategia de reducción de impacto es utilizar un sistema de archivos como XFS.

La solución es fea. Esencialmente, debe mordisquear todos los datos en las tablas antes de soltarlos (vea el comentario # 11 en el enlace de arriba).

Otros consejos

Siguiendo a skaffman:

Cambie su my.cnf (y reinicie MySQL) para incluir:

innodb_file_per_table = 1

( http://mysqldba.blogspot.com/2006/12/innodbfilepertable.html )

Esto le dará a sus bases de datos un almacenamiento de archivos dedicado y lo sacará del grupo compartido. Luego le permitirá hacer cosas divertidas como colocar las tablas / índices en diferentes discos físicos para dividir aún más las E / S y mejorar el rendimiento.

Tenga en cuenta que esto no cambia las tablas existentes; tendrá que trabajar para obtenerlos en su propio archivo ( http://capttofu.livejournal.com /11791.html ).

Por defecto, todas las bases de datos innodb en una instalación de servidor mysql dada usan el mismo grupo físico de archivos de datos, por lo que posiblemente "descarte la base de datos A". podría afectar a la base de datos B. Dado que " descartar la base de datos " es probable que implique una gran reorganización de los archivos de datos innodb, es concebible que sea una operación de bloqueo, ya sea por la intensidad de la operación o por diseño.

Sin embargo, creo que puede hacer que cada base de datos use diferentes archivos físicos, aunque no lo he intentado yo mismo, por lo que tendrá que descubrir los detalles por sí mismo. De lo contrario, es posible que deba usar dos instalaciones mysql diferentes una al lado de la otra en la misma máquina, lo cual es perfectamente factible.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top