2010-02-01 18 views
14

Tengo una tabla de base de datos mysql que quiero dividir por fecha, en particular por mes & año. Sin embargo, cuando se agregan nuevos datos para un nuevo mes, no quiero tener que actualizar manualmente la base de datos.partición automática de la base de datos mysql

Cuando inicialmente creo mi base de datos, tengo datos en noviembre 09, diciembre 09, enero 10, etc. Ahora, cuando comience febrero, me gustaría crear una partición Feb 10 automáticamente. es posible?

+0

No estoy seguro de si esta es la mejor idea. Cada vez que modifique particiones, básicamente estará reescribiendo toda la tabla. Esto puede tomar bastante tiempo y recursos. – Mchl

+0

@Mchl si tiene una idea mejor, me gustaría escucharla. Tienes razón, es bastante intenso (más de lo que me gustaría), pero si solo se ejecuta una vez al mes, no es tan malo, especialmente cuando necesito hacer consultas regulares como 'seleccionar el tercer día del mes pasado'. – Benubird

+3

"Cada vez que modifique particiones, básicamente estará reescribiendo toda la tabla": nada cierto. Agregar particiones o eliminar particiones es como crear/colocar una tabla. Esencialmente instantáneo. Solo modificando una partición * existente que ya tiene datos en ella * es potencialmente lenta. Entonces, si crea una nueva partición para el próximo mes antes de insertar datos en ella, eso es muy rápido. – jssebastian

Respuesta

3

Hay algunas soluciones por ahí, si quieres una solución total, mira esto post out on kickingtyres. Es una combinación básica de un procedimiento almacenado que maneja el análisis y la creación de particiones (¡con algunos registros!).

Todo lo que necesita hacer es ajustarlo a su tipo de partición (el ejemplo usa una partición bigint) y programar el procedimiento para ejecutarlo con el Programador de eventos de MySQL.

+0

Me gusta el concepto del procedimiento almacenado para la creación de particiones. –

+8

el enlace kickingtyres está roto. –

+0

He actualizado el enlace con una copia de archive.org – Benjamin

1

sí, que le gustaría la funcionalidad de partición mejorada de 5,5:

http://dev.mysql.com/tech-resources/articles/mysql_55_partitioning.html

+0

+1 gran enlace ... gracias –

+0

¿Tendría que configurar un activador cada mes para agregar una nueva partición para ese mes? Ya que no quiero definir todos los meses/años antes de tiempo ... –

+1

@Jeff - No lo creo, nada anotado en ese artículo de todos modos. Esas son grandes mejoras, pero no resolverán su problema actual ... uno al que me enfrenté cuando SQL Server también agregó particiones al principio, sin duda, PITA. –

1

voy a hacer lo que el otro hace (enviar un enlace) Quick Introdunction to MySQL Partitioning

(ver página 50 para obtener lo que necesita - partición por fecha) Editar: vuelvo a leer tu post con más cuidado - si desea cambiar particiones por mes ¿por qué no creas un Mysql event que lo hace

+2

No responde la pregunta. – Benubird

+0

I es una sugestión. Pero creo que terminarás con un evento y un procedimiento almacenado para hacer lo que quieras. – cristian

Cuestiones relacionadas