2010-03-10 8 views
1

Nous avons une table dans mysql de 18GB qui a une colonne "html_view" qui stocke les données source HTML, que nous affichons sur la page, mais maintenant il prend trop de temps pour récupérer les données html de la colonne "html_view" le chargement de la page est lent.La lecture des données HTML de la base de données est lente? Besoin d'une meilleure approche?

Nous voulons une approche qui peut simplifier notre structure existante pour charger les données html plus rapidement depuis db ou de toute autre manière. Une idée que nous prévoyons est de stocker des données HTML dans des fichiers .txt et dans db nous allons simplement stocker le chemin du fichier txt et ira chercher les données de ce fichier particulier en lisant le fichier. Mais nous craignons qu'il ne fasse des opérations d'écriture de lecture étendues sur notre serveur et ralentisse alors le serveur.

Y a-t-il une meilleure approche pour rendre cette situation plus rapide?

+0

Quelle application/quel serveur web utilisez-vous? Je suppose que vous devriez regarder dans les capacités de mise en cache de ces composants, afin qu'il y ait une plus grande probabilité d'extraire des données de la mémoire. – weismat

+0

Nous utilisons "Apache/PHP/MYSQL" comme plateforme web? Y at-il quelque chose que nous pouvons faire, s'il vous plaît partager un exemple ou un article. Merci – Prashant

Répondre

2

Tout d'abord, pourquoi stocker du HTML dans une base de données? Pourquoi ne pas le rendre à la demande?

Pour les tables de texte volumineuses, vous pouvez stocker du texte compressé dans un tableau d'octets ou compressé et codé en base64 en texte brut.

Lorsque vous avez un tableau avec une colonne de texte volumineuse, combien d'autres colonnes contient la table? Si ce n'est pas trop, vous pouvez partitionner la table et créer un magasin de valeurs-clés à deux colonnes. Cela devrait être plus rapide et plus simple que de lire des fichiers à partir du disque.

+0

Notre ancienne structure est basée sur le stockage de code HTML dans la base de données, il n'est donc pas possible de le changer si tôt, donc nous prévoyons de faire quelques changements qui peuvent améliorer les performances pour le moment. A partir de "stocker du texte compressé dans un tableau d'octets", ou "compressé et encodé en base64 en texte brut" lequel sera le plus rapide et comment implémenter cela, pourriez-vous partager un exemple PHP? – Prashant

+1

Je ne connais pas PHP, mais cela peut aider: http://php.net/manual/fr/ref.zip.php. Le tableau d'octets sera plus simple, plus petit et plus rapide que base64. –

1

Regardez le Apache Caching guide. Il explique la mise en cache du disque et de la mémoire - de mon point de vue si le contenu est statique (comme l'indique la table de données), vous devez utiliser les capacités Apaches au lieu d'écrire vos propres mécanismes plus lents.
La mesure habituelle au lieu de l'estimation s'applique quand même ;-).

Questions connexes