Recommandations d'apprentissage gratuites : tutoriel vidéo MySQL
Répertoire d'articles
1 Avant-propos
Une grande partie de la pression sur le serveur provient des performances de la base de données. S'il n'y a pas de base de données et d'environnement de serveur stables, le serveur est sujet à certaines pannes, voire à des temps d'arrêt. , provoquant Les conséquences sont également incommensurables, l'optimisation des performances de la base de données est donc essentielle.
1.1 Architecture de la base de données
L'architecture générale de la base de données est un serveur maître, qui est équipé de plusieurs ou d'une douzaine de serveurs esclaves pour la synchronisation maître-esclave lorsque le serveur maître. Après un crash, le programmeur doit sélectionner manuellement un serveur esclave avec les dernières données pour prendre le relais du serveur maître, puis synchroniser le nouveau serveur maître. Cependant, parfois en raison du grand nombre de serveurs esclaves, ce processus prend beaucoup de temps et constitue également un défi pour la capacité de la carte réseau.
1.2 Informations de surveillance
QPS & TPS : Plus la valeur est élevée, mieux c'est.
Concurrence : le nombre de demandes traitées en même temps.
Utilisation du processeur : plus elle est faible, mieux c'est.
Disk IO : plus les performances de lecture et d'écriture sont élevées, mieux c'est.
Remarque : Il est généralement conseillé aux entreprises de ne pas effectuer de sauvegardes de base de données sur la base de données principale avant et après des promotions majeures, ni d'annuler de tels plans avant des événements à grande échelle, car cela affecterait sérieusement les performances du serveur.
2 Facteurs qui affectent la base de données
De nombreux facteurs affectent la base de données, tels que : la vitesse des requêtes SQL, le matériel du serveur, le trafic de la carte réseau, les E/S du disque, etc., nous le ferons plus tard, j'entrerai dans les détails. Voici une introduction à certaines des informations qui nous sont renvoyées dans les informations de surveillance et à la manière dont nous devrions les optimiser.
2.1 QPS et TPS ultra-élevés
En raison de l'inefficacité du SQL, il existe souvent des risques de QPS et TPS ultra-élevés. Pendant une période de promotion générale, le nombre de visites sur le site Web sera considérablement augmenté, ainsi que le QPS et le TPS de la base de données.
Qu'est-ce que QPS : requêtes traitées par seconde. Par exemple, si nous avons un processeur et pouvons traiter un SQL en 10 ms, nous pouvons traiter 100 SQL en 1 seconde, QPS<=100. Cependant, si nous ne traitons qu'un SQL en 100 ms, nous pouvons traiter 10 SQL en 1. deuxièmement, QPS< =10, ces deux situations sont très différentes, essayez donc d'optimiser les performances SQL.
2.2 Concurrence massive et utilisation ultra-élevée du processeur
Quels risques cela entraînera-t-il ?
Sous une grande concurrence, le nombre de connexions à la base de données peut être saturé. Dans ce cas, essayez de définir le paramètre de base de données max_connections
sur une valeur plus grande (la valeur par défaut est 100). ce sera Une erreur 500 se produit.
En cas d'utilisation extrêmement élevée du processeur, des temps d'arrêt peuvent survenir en raison de l'épuisement des ressources du processeur.
2.3 E/S disque
L'un des goulots d'étranglement de la base de données est l'E/S disque, ce qui entraînera les risques suivants :
2.4 Trafic de la carte réseau
De toute évidence, un trafic excessif de la carte réseau entraîne le risque que les E/S de la carte réseau soient pleines.
La carte réseau générale est une carte réseau Gigabit (1000Mb/8 ≈ 100Mo)
Si le nombre de connexions dépasse la capacité maximale de la carte réseau, le service ne pourra pas se connecter Alors comment éviter de l'être. impossible de se connecter à la base de données ? Situation :
select *
pour interroger 2.5 Grande table
Quel genre de table peut-on appeler une grande table ? En fait, tout est relatif et il y aura des restrictions différentes selon les moteurs de stockage. Le stockage des données comme NoSQL ne limite pas le nombre de lignes dans la table, en théorie, elles peuvent être stockées aussi longtemps que la capacité du disque le permet. Mais lorsque le nombre de lignes dans une table dépasse des dizaines de millions de lignes, cela aura un impact important sur les performances de la base de données. Nous pouvons ensuite résumer les caractéristiques des grandes tables :
Mais même s'il répond aux caractéristiques ci-dessus, cela peut ne pas avoir un grand impact sur les performances de notre base de données, donc cette déclaration est relative, comme le. table de journalisation d'une base de données générale, même si le nombre de lignes enregistrées est grand, le fichier La taille est grande, mais nous ne faisons généralement que l'ajouter et l'interroger, et n'implique pas un grand nombre d'opérations de modification et de suppression, donc ce sera n'a pas un grand impact sur les performances de la base de données.
Mais lorsqu'un jour en raison de changements commerciaux, il sera nécessaire d'ajouter des colonnes à cette table de journal de 10G, alors la quantité de travail sera sans aucun doute énorme.
2.5.1 L'impact des grandes tables sur les requêtes
Les grandes tables représentent souvent la génération de requêtes lentes Les requêtes lentes signifient qu'il est difficile de filtrer au sein d'un certain. période de temps. Sortez les données requises.
Par exemple, dans une table de journal contenant des dizaines de millions de données, il existe un champ appelé source de commande, qui enregistre la plateforme sur laquelle la commande a été générée. Si l'entreprise n'en a pas besoin au début, cela n'aura pas d'impact sur les performances de la base de données. Cependant, en raison des besoins ultérieurs de l'entreprise, il est nécessaire de vérifier le volume de commandes de quelle plateforme proviennent ces dizaines de millions de données. C'est une grande question.
Comme il n'y a que quelques canaux sources pour ces commandes, la distinction est très faible, donc interroger certaines données parmi des dizaines de millions de données consommera beaucoup d'E/S disque et réduira considérablement l'efficacité du disque. Chaque fois qu'un utilisateur consulte une commande, la source de la commande sera interrogée dans la base de données, ce qui générera un grand nombre de requêtes lentes.
2.5.2 L'impact des grandes tables sur les opérations DDL
L'impact des grandes tables sur les opérations DDL, quels risques cela nous apporte-t-il ?
2.5.3 Comment gérer les grandes tables dans la base de données
2.6 Transactions importantes
2.6.1 Qu'est-ce qu'une transaction
Les transactions sont des systèmes de bases de données différents de tous les autres systèmes de fichiers. Une des caractéristiques importantes.
2.6.2 ATOMICITÉ des transactions
Définition : Une transaction doit être considérée comme une unité de travail minimale indivisible. Toutes les opérations de la transaction entière sont soit soumises avec succès, soit toutes échouent. Pour une transaction, il est impossible d'effectuer seulement une partie des opérations.
Exemple :
A veut transférer 1 000 yuans vers B. Lorsque 1 000 yuans sont retirés du compte de A, le solde de A dans la base de données est soustrait de 1 000, mais lorsqu'il est ajouté au solde de B, le serveur tombe en panne. A Les 1 000 yuans doivent être restitués sur le compte de A pour maintenir l'atomicité de la transaction, qu'elle réussisse ou échoue ensemble.
2.6.3 Cohérence des transactions (CONSISTENCE)
Définition : La cohérence signifie qu'une transaction convertit la base de données d'un état de cohérence à un autre état de cohérence, l'intégrité des données dans la base de données n'est pas compromis avant le début et après la fin de la transaction.
Exemple :
Les 1000 blocs de A en banque sont transférés à B, le solde de A est de 0, le solde du compte de B passe de 0 à 1000, mais du début à la fin, A+B = 1000 (solde de A) + 0 (solde de B) = 0 (solde de A) + 1000 (solde de B), c'est-à-dire que le solde total de A et B reste inchangé, il est toujours de 1 000 yuans du début à la fin.
2.6.4 Isolation des transactions (ISOLATION)
Définition : L'isolation nécessite que la modification des données d'une transaction dans la base de données ne soit pas terminée lorsque d'autres transactions ne sont pas validées. Invisible.
Exemple :
La banque A retire 500 yuans du solde de 1 000 yuans. Avant que la transaction de retrait ne soit soumise, une transaction est exécutée pour interroger le solde du compte A. Le résultat de la requête est toujours le solde de 1 000. yuans, car avant que la transaction de retrait ne soit soumise, son processus de transaction est invisible pour les autres entreprises.
Quatre niveaux d'isolement définis dans le standard SQL
LECTURE UNCOMMITED
LECTURE COMMITÉE
Lecture répétable (LECTURE RÉPÉTABLE)
show variables like '%iso%'
set session tx_isolation='read-committed'
Sérialisable (SERIALIZABLE)
Isolement :
Les transactions volumineuses font référence à des transactions qui prennent beaucoup de temps à s'exécuter et qui fonctionnent sur une grande quantité de données. Par exemple, il existe un produit financier qui compte chaque jour les revenus de chaque utilisateur. S'il doit compter les revenus de tous les utilisateurs et les mettre à jour avec le solde de l'utilisateur, des centaines de millions de mises à jour prendront des heures. En cas d'échec au milieu, le temps requis pour la transaction sera encore plus incommensurable. Non inclus dans le processus de mise à jour, le solde de l'utilisateur sera verrouillé, provoquant le problème que tous les utilisateurs ne pourront pas utiliser le solde.
Quels risques les transactions importantes entraîneront-elles
:
Verrouillez trop de données, provoquant de nombreux blocages et délais d'attente de verrouillage
Le temps requis pour le rollback est relativement long
Le temps d'exécution est long et il est facile de provoquer un retard maître-esclave
Plus de recommandations d'apprentissage gratuites associées : tutoriel MySQL(vidéo)
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!