2009-10-08 9 views
2

Nous avons une base de données avec les données liées à l'heure. Comme vous pouvez l'imaginer, il croît (et ralentit) avec le temps. Il y a 50% de lectures et 25% d'insertions et 25% d'actions de mise à jour sur les données actuelles (mois), 100% lus sur les anciennes données. La bonne chose est, les données plus anciennes deviennent également moins importantes. Tableau de Mysql croissant en fonction du temps de taille réduite

  • La mauvaise chose est que nous devons parfois interroger toute une période de retour à l'année dernière. Maintenant, je veux avoir une architecture mysql, qui sert les plus jeunes données plus vite que l'ancienne.

    Existe-t-il un moyen de le faire dans mysql?


    post scriptum: Bien sûr, comme nous travaillons avec rubis sur des rails et enregistrement actif dans la couche d'application, on pourrait réécrire facilement la classe de base d'enregistrement actif pour accéder à plusieurs tables et déplacer les données plus anciennes à une autre table. MAIS parce que nous avons également lu des requêtes d'autres systèmes, comme le reporting, qui devrait pouvoir accéder à l'ancienne et la nouvelle donnée, et parfois les deux en même temps, je voudrais le résoudre sur mysql.

  • Répondre

    3

    MySQL partitioning était à peu près fait juste pour vous. Cela vous oblige à être sur 5.1.

    +0

    semble que nous devons passer à la version 5.1 – Beffa

    1

    Je diviser la table en (au moins) 2 tables et stocker les données actuelles dans une et les données d'archivage l'autre. Utilisez ensuite une vue MySql pour créer une table "virtuelle" qui pourrait être utilisée lorsque toutes les données sont requises, sinon, accédez directement aux données requises à l'aide de la table actuall.