Mysql
 sql >> Base de données >  >> RDS >> Mysql

Top 10 des faits et astuces intéressants sur MySQL

MySQL est le système de gestion de base de données relationnelle open source qui connaît la croissance la plus rapide avec 100 millions de téléchargements à ce jour. Il s'agit d'un choix populaire de base de données à utiliser dans les applications Web et est actuellement utilisé par de nombreux grands sites Web, notamment Facebook, Twitter, Wikipedia, Flickr, YouTube, etc. Découvrons maintenant les 10 principaux faits et conseils intéressants sur MySQL.

Faits et conseils intéressants sur MySQL

1. MySQL prend en charge jusqu'à 64 index par table. Chaque index peut comprendre de 1 à 16 colonnes. La taille d'index maximale est de 1 000 octets (767 pour InnoDB).

2. La taille maximale d'une ligne dans une table MySQL est de 65 535 octets. Et la valeur maximale de Signed Integer est 2 147 483 647 et la valeur de Unsigned Integer est 4 294 967 295. Dans une table mixte avec CHAR et VARCHAR, MySQL changera les CHAR en VARCHAR.

3. Si un index PRIMARY KEY ou UNIQUE se compose d'une seule colonne de type entier, vous pouvez également faire référence à la colonne en tant que "_rowid" dans les instructions SELECT.

4. Pour modifier la valeur de AUTO_INCREMENT, utilisez "ALTER TABLE AUTO_INCREMENT =valeur ;" ou "SET INSERT_ID =valeur ;"

5. Pour restreindre l'accès public à MySQL, utilisez l'option "skip-networking" dans le fichier de configuration. Lorsqu'il est activé, MySQL n'écoute que les connexions socket locales et ignore tous les ports TCP. Et le paramètre "bind-address" qui est défini sur "127.0.0.1" limite l'accès à MySQL uniquement par l'hôte local.

6. Si MySQL a de nombreuses connexions établies (c'est-à-dire un site Web sans connexions persistantes), vous pouvez améliorer les performances en définissant thread_cache_size sur une valeur non nulle. 16 est une bonne valeur pour commencer. Augmentez la valeur jusqu'à ce que vos threads_created ne se développent pas très rapidement.

7. NO_AUTO_VALUE_ON_ZERO supprime l'incrémentation automatique pour 0. Seul NULL génère le numéro de séquence suivant. Ce mode peut être utile si 0 a été stocké dans la colonne AUTO_INCREMENT d'une table. (Le stockage de 0 n'est pas une pratique recommandée, soit dit en passant.)

8. Les options de configuration « innodb_analyze_is_persistent », « innodb_stats_persistent_sample_pages » et « innodb_stats_transient_sample_pages » améliorent la précision des statistiques d'index InnoDB et la cohérence entre les redémarrages de MySQL. InnoDB précalcule des statistiques qui aident l'optimiseur à décider quels index utiliser dans une requête, en échantillonnant une partie de l'index. Vous pouvez ajuster la quantité d'échantillonnage effectuée par InnoDB pour chaque index. Les statistiques résultantes peuvent désormais persister lors des redémarrages du serveur, plutôt que d'être recalculées (et éventuellement modifiées) en raison des redémarrages et de certains événements d'exécution. Les statistiques plus précises peuvent améliorer les performances des requêtes, et l'aspect persistance peut maintenir les performances des requêtes stables. Lorsque la fonctionnalité de statistiques persistantes est activée, les statistiques ne sont recalculées que lorsque vous exécutez explicitement ANALYZE TABLE pour la table.

9. InnoDB libère la mémoire associée à une table ouverte pour alléger la charge mémoire sur les systèmes avec un grand nombre de tables. Un algorithme LRU sélectionne les tables qui sont restées le plus longtemps sans être consultées. Pour réserver plus de mémoire pour les tables ouvertes, augmentez la valeur de l'option de configuration –table_definition_cache=#.

10. Définissez le paramètre table_cache pour qu'il corresponde au nombre de tables ouvertes et de connexions simultanées. Surveillez la valeur open_tables et si elle augmente rapidement, vous devez augmenter la taille de "table_cache". Et pour le paramètre "open_file_limit", définissez cette limite sur 20+max_connections+table_cache*2. Si vous avez des requêtes complexes, "sort_buffer_size" et "tmp_table_size" sont susceptibles d'être très importants. Les valeurs dépendront de la complexité de la requête et des ressources disponibles, mais 4 Mo et 32 ​​Mo, respectivement, sont des points de départ recommandés.

Remarque :il s'agit de valeurs « par connexion ». Tenez donc compte de votre charge et des ressources disponibles lors de la définition de ces paramètres. Par exemple, sort_buffer_size n'est alloué que si MySQL doit faire un tri, faites attention à ne pas manquer de mémoire.