Particion horizontal

Category: Performance and Tunning 10 years ago
Hola buen día.

Estoy trabajando en un sistema de control escolar y tengo una tabla histporica de alrededor de 5 ó 6 millones de registro, en ella se guardan las calificaciones de las materias por alumno. He estado leyendo sobre la partición horizontal en mysql 5.1, y veo que hay cuatro tipos para realizar la partición range, list, hash y por clave. Sin embargo no se cuál se puede adaptar para lo que necesito.


La tabla que mencioné en la parte de arriba, tiene un campo de tipo tinyint que guarda el ID del ciclo escolar al que pertenecen los registros, asi que tengo registros del

2003-2004 con ID 1
2004-2005 con ID 2
2005-2006 con ID 3
.
.
.
2009-2010 con ID N


Lo que estoy buscando es particionar la tabla según ese ID, y asi puedan quedar particiones con calificaciones de ciclos escolares independientes. Sin embargo cada inicio de ciclo, se llena esa tabla con más registros, por ejemplo, aprox para Agosto se llenará esa tabla con información del ciclo 2010-2011. Según los tipos de particionado veo que debe estar definido previamente la condición o la expresión y además determinar el número de particiones, excepto hash y por clave.

Cómo le puedo hacer para que al momento de hacer la partición la tabla ya quede preparada para ir creando particiones automáticamente cada que un nuevop ciclo comience y se llene con los datos del ciclo escolar que está terminando?


Espero haberme explicado.

Saludos y gracias
Like it on Facebook, +1 on Google, Tweet it or share this topic on other bookmarking websites.
  • Re: Particion horizontal

    by » 10 years ago


    Hola he continuado leyendo y se me ocurrió que al finalizar un ciclo puedo usar el siguiente comando para crear una nueva partición.

    ALTER TABLE ADD PARTITION y definir el ID del ciclo que se está cerrando. Puedo agregar esta instrucción

  • Re: Particion horizontal

    by » 10 years ago


    La que te conviene es la particion range. Deberías tener la tabla mas o menos así.

    ALTER TABLE table
    PARTITION BY RANGE (id) (
    PARTITION P0 VALUES LESS THAN (2),
    PARTITION P1 VALUES LESS THAN (3),
    PARTITION P2 VALUES LESS THAN (4),
    PARTITION P4 VALUES LESS THAN MAXVALUE
    );


    Si ya no quieres estar haciendo el alter para meter cada partición, define varias para años futuros, pero si es importante poner la última partición para valores mayores, ya que si se te llega a olvidar anexar una partición te va a marcar error cuando quiera insertar valores mayores.

    Saludos

  • Re: Particion horizontal

    by » 10 years ago


    Gracias mHerlindo.

    Voy a tener en cuenta eso que me dices

You do not have permissions to reply to this topic.
Powered by CjForum