Quelle base de données est la meilleure pour PHPCMS ?
Il est préférable d'utiliser la base de données MySQL pour PHPCMS, car PHPCMS est écrit en PHP et PHP prend mieux en charge MySQL, il est donc recommandé d'utiliser MySQL, qui est un système de gestion de base de données relationnelle open source. .
Optimisation MySQL
Sélectionnez InnoDB comme moteur de stockage
Les bases de données de produits à grande échelle ont des exigences plus élevées en matière de fiabilité et de concurrence, et InnoDB est la valeur par défaut Le moteur de stockage MySQL est un meilleur choix que MyISAM.
Optimiser la structure de la base de données
Organisez le schéma, les tables et les champs de la base de données pour réduire la surcharge d'E/S, enregistrez les éléments associés ensemble et planifiez à l'avance de manière à ce que la quantité de données augmente , Les performances peuvent être maintenues à un niveau élevé.
La table de données doit être conçue pour minimiser l'espace qu'elle occupe, et la clé primaire de la table doit être aussi courte que possible. ·Pour les tables InnoDB, la colonne où se trouve la clé primaire est réplicable dans chaque entrée d'index secondaire, donc s'il existe de nombreux index secondaires, une clé primaire courte peut économiser beaucoup d'espace.
Créez uniquement les index dont vous avez besoin pour améliorer les performances des requêtes. Les index facilitent la récupération, mais augmentent le temps d'exécution des opérations d'insertion et de mise à jour.
Fonctionnalité ChangeBuffering d'InnoDB
InnoDB fournit une configuration de tampon de modification pour réduire les E/S disque requises pour maintenir les index auxiliaires. Les bases de données à grande échelle peuvent subir un grand nombre d’opérations sur les tables et des E/S lourdes pour maintenir les index secondaires à jour. Lorsque la page concernée ne se trouve pas dans le pool de tampons, le changebuffer d'InnoDB mettra en cache les modifications apportées à l'entrée d'index secondaire, évitant ainsi les opérations d'E/S fastidieuses causées par l'impossibilité de lire la page immédiatement à partir du disque. Lorsque les pages sont chargées dans le pool de mémoire tampon, les modifications mises en mémoire tampon sont fusionnées et les pages mises à jour sont ensuite vidées sur le disque. Cela améliore les performances et est disponible pour MySQL 5.5 et supérieur.
Compression de page InnoDB
InnoDB prend en charge la compression des tables au niveau de la page. Lorsqu'une page de données est écrite, un algorithme de compression spécifique est utilisé pour la compresser. Les données compressées sont écrites sur le disque, avec son mécanisme de perforation libérant des blocs vides à la fin de la page. Si la compression échoue, les données sont écrites sans modification. Les tables et les index sont compressés car les index représentent généralement une grande partie de la taille totale de la base de données. La compression peut économiser considérablement de la mémoire, des E/S ou du temps de traitement, atteignant ainsi l'objectif d'amélioration des performances et de l'évolutivité. Cela réduit également la quantité de données transférées entre la mémoire et le disque. MySQL5.1 et les versions ultérieures prennent en charge cette fonctionnalité.
Notez que la compression de page ne prend pas en charge les tables dans les espaces de table partagés. Les espaces table partagés comprennent les espaces table système, les espaces table temporaires et les espaces table standard.
Utiliser l'importation de données par lots
L'utilisation d'une source de données triée sur la clé primaire pour importer des données par lots peut accélérer le processus d'insertion des données. Sinon, il faudra peut-être insérer des lignes entre d'autres lignes pour conserver l'ordre, ce qui peut entraîner des E/S de disque élevées, avoir un impact sur les performances et augmenter le fractionnement des pages. Il est également avantageux de désactiver le mode de validation automatique, car il effectuera un vidage du journal sur le disque pour chaque insertion. Le déplacement temporaire des contrôles de clé unique et de clé étrangère lors des insertions groupées peut également réduire considérablement les E/S disque. Pour les tables nouvellement créées, la meilleure pratique consiste à créer des contraintes de clé étrangère/clé unique après l’importation groupée.
Une fois que vos données atteignent une taille stable ou qu'une table en croissance ajoute des dizaines ou des centaines de mégaoctets, vous devriez envisager d'utiliser l'instruction OPTIMIZETABLE pour réorganiser la table et compresser l'espace gaspillé. Une analyse complète de la table réorganisée nécessitera moins d’E/S.
Optimiser les E/S du disque InnoDB
L'augmentation de la taille du pool de tampons InnoDB permet d'accéder aux requêtes à partir du pool de tampons plutôt que via les E/S du disque. Ajustez l'indicateur d'effacement du tampon pour atteindre le niveau optimal en ajustant la variable système innodb_flush_method.
Allocation de mémoire pour MySQL
Avant d'allouer suffisamment de mémoire pour MySQL, veuillez tenir compte des besoins en mémoire pour MySQL dans différents domaines. Les domaines clés à prendre en compte sont les suivants : Connexions simultanées - Avec un grand nombre de connexions simultanées, le tri et les tables temporaires nécessiteront beaucoup de mémoire. Au moment de la rédaction de cet article, 16 Go à 32 Go de RAM suffisent pour une base de données gérant plus de 3 000 connexions simultanées.
La fragmentation de la mémoire peut consommer environ 10 % ou plus de la mémoire. Les caches et tampons comme innodb_buffer_pool_size, key_buffer_size, query_cache_size, etc. consomment environ 80 % de la mémoire allouée.
Maintenance quotidienne
Vérifiez régulièrement les journaux de requêtes lentes et optimisez le mécanisme de requête pour utiliser efficacement le cache afin de réduire les E/S disque. Optimisez-les pour analyser le nombre minimum de lignes plutôt que d'effectuer une analyse complète de la table.
Les autres journaux qui peuvent aider les administrateurs de base de données à vérifier et analyser les performances incluent : les journaux d'erreurs, les journaux de requêtes généraux, les journaux binaires et les journaux DDL (journaux de métadonnées).
Videz régulièrement les caches et les tampons pour réduire la fragmentation. Utilisez l'instruction OPTIMIZETABLE pour réorganiser la table et compresser tout espace potentiellement gaspillé.
Tutoriels recommandés : "PHP" "Tutoriel PHPCMS"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!