Question

J'ai la question suivante :Je conçois une application web avec plusieurs dizaines de petites tables de recherche :Ces tableaux contiennent généralement trois colonnes (ID, Nom, Description) et quelques lignes (généralement moins de 50, le maximum est d'environ 450).

Ces tables de recherche ne devraient changer que rarement (elles proviennent du standard, qui change une fois tous les plusieurs années) et ne seront utilisées que pour :

  • remplir les options en html sélectionner
  • être joint à d'autres enregistrements dans les rapports

Il n'y aura que SELECT déclarations sur ces tableaux 99 % des fois, mais il y en aura beaucoup.

Je me demande quel moteur de base de données serait le plus efficace à utiliser ?

Voici mes considérations :

MÉMOIRE

  • pro:très vite
  • escroquer:si le serveur tombe en panne, toutes les données sont perdues et doivent être recréées
  • escroquer:ne prend pas en charge les clés étrangères

MyISAM compressé

  • pro:rapide
  • escroquer:ne prend pas en charge les clés étrangères

InnoDB

  • pro:prise en charge des clés étrangères

Ce que je voudrais demander, c'est s'il y aura un avantage significatif à utiliser quelque chose de différent de InnoDB - en termes de performances

Merci, Zbynek

Était-ce utile?

La solution

J'ai répondu à une question similaire en août 2011: Quel SGBM est bon pour des lectures super-rapides et une structure de données simple?

Puisque vous vous demandez à propos de MySQL et quel moteur de stockage. Pour être honnête, il est difficile de dire car il y a de rares occasions lorsque MyISAM peut surperformer InnoDB lorsqu'il s'agit de sélectionner.

Voici quelques-uns de mes postes antérieurs sur cette controverse

Vous pourriez demander maintenant: pourquoi je feraisrai-je déjà favoriser Myisam sur InnoDB?

Regardez ce diagramme (créé par Vadim Tkachenko, Percona CTO)

architecture innodb

Myisam cache des index et votre table aurait 2 index (clé primaire sur ID et index de nom). D'autre part, InnoDB a trop de pièces mobiles pour accueillir, surtout si le pool de tampons InnoDb doit charger et rejeter périodiquement les pages de 16 km.

Pour être juste, vous devriez faire une expérience.

Cela vous donnera la meilleure évaluation du choix du moteur de stockage pour votre jeu de données.

Essayez !!!

Autres conseils

  • "MyISAM compressé" -- qu'est-ce que c'est ?Peut-être « Archiver » ?
  • La compression n'est pas nécessaire ;les tables sont trop petites et seront rapidement entièrement mises en cache.
  • FOREIGN KEYS -- Pourquoi?Vous avez débogué votre code, n'est-ce pas ?Il n’y aura aucune chose en suspens à vérifier.
  • MEMORY n'est pas déraisonnable, si vous écrivez du code « recharger » qui s'exécute chaque fois que vous ouvrez le serveur, et toutes les mises à jour de la table sont écrites à la fois dans le MEMORY table et la sauvegarde persistante.
  • MyISAM ROW_FORMAT=FIXED -- c'est un conte de vieille femme ;utiliser DYNAMIC et VARCHARs.
  • Le "cluster" d'InnoDB PRIMARY KEY rend les recherches un peu plus rapides que MyISAM pour votre objectif.
  • Est-ce que tu savoir que les tables de recherche provoquent un ralentissement notable ?J'en doute sérieusement.
  • Faire pas utilisez des tables de recherche pour les valeurs « continues », telles que FLOATs et DATEs.

Je vote pour InnoDB sans FK.

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top