2010-10-17 9 views
0

Est-il possible de mettre en cache les données récemment insérées dans la base de données MySQL en interne?
J'ai regardé le cache de requête etc (http://dev.mysql.com/doc/refman/5.1/en/query-cache.html) mais ce n'est pas ce que je cherche. Je sais que la requête 'SELECT' sera mise en cache.Comment mettre en cache les dernières données insérées dans MySQL?

Détails:
J'insère beaucoup de données à MySQL DB chaque seconde.
J'ai deux types d'utilisateurs pour ces données.

  1. Les utilisateurs qui interrogent des données aléatoires
  2. des utilisateurs qui requête récemment les données insérées

Pour 2 types d'utilisateurs, ma table a clé primaire comme horodater unix qui me dit à quel point les données sont nouvelles. Est-il possible de mettre en cache les données au moment de l'insertion?

Une option consiste à écrire mon propre module de mise en cache qui cache les données, puis 'INSERT'.
Les utilisateurs peuvent interroger ce module avant d'accéder à la base de données MySQL.
Je me demandais juste si quelque chose de similaire est disponible. PS: Je suis ouvert à d'autres bases de données offrant des fonctionnalités similaires.

Répondre

0

Habituellement vous obtenez les meilleures performances de MySQL si vous autorisez un gros cache d'index (paramètre de configuration key_buffer_size), au moins pour les tables MyISAM.

Si la latence est vraiment un problème (comme il semble dans votre cas) jetez un oeil à Sphinx qui a récemment introduit des index en temps réel.

+0

Sphinx a vraiment l'air bien. Ce qui m'intéresse c'est d'avoir les dernières données dans le cache car je sais qu'il y aura des requêtes pour ça. Le cache d'index sera utile pour récupérer les données plus rapidement. – Jack

Questions connexes