mysqlreport显示Com_中change_db占用比例高的问题的解决方法_MySQL
bitsCN.com 首先说明一点,每天的访问量并不大每天才2W的访问量,按道理说,访问量再增加一倍这样的服务器也应该足以承受。可是我们的服务器为什么总是这样频频重启呢?经过mysqlreport显示mysql运行的状态如下:
<pre class="brush:php;toolbar:false"><pre class="brush:php;toolbar:false"><pre class="brush:php;toolbar:false"><pre class="brush:php;toolbar:false"><pre class="brush:php;toolbar:false"><pre class="brush:php;toolbar:false"><pre class="brush:php;toolbar:false"><pre class="brush:php;toolbar:false"><pre class="brush:php;toolbar:false"><pre class="brush:php;toolbar:false"><pre class="brush:php;toolbar:false"><pre class="brush:php;toolbar:false"><pre class="brush:php;toolbar:false"><font color="#006bad">MySQL 5.1.28-rc-log uptime 0 0:4:48 Thu Apr 30 14:04:58 2009<br><br>__ Key _________________________________________________________________<br>Buffer used 7.74M of 384.00M %Used: 2.02<br> Current 52.89M %Usage: 13.77<br>Write hit 0.00%<br>Read hit 91.97%<br><br>__ Questions ___________________________________________________________<br>Total 14.46k 50.2/s<br> DMS 9.24k 32.1/s %Total: 63.90<br> QC Hits 3.66k 12.7/s 25.33<br> Com_ 1.04k 3.6/s 7.19<br> COM_QUIT 517 1.8/s 3.58<br> -Unknown 1 0.0/s 0.01<br>Slow 1 s 4 0.0/s 0.03 %DMS: 0.04 Log: OFF<br>DMS 9.24k 32.1/s 63.90<br> SELECT 9.21k 32.0/s 63.75 99.75<br> UPDATE 23 0.1/s 0.16 0.25<br> REPLACE 0 0/s 0.00 0.00<br> DELETE 0 0/s 0.00 0.00<br> INSERT 0 0/s 0.00 0.00<br>Com_ 1.04k 50/s 44.4<br> set_option 523 1.8/s 3.62<br> change_db 510 50/s 44.4<br> show_proces 5 0.0/s 0.03<br><br>__ SELECT and Sort _____________________________________________________<br>Scan 49 0.2/s %SELECT: 0.53<br>Range 16 0.1/s 0.17<br>Full join 2 0.0/s 0.02<br>Range check 0 0/s 0.00<br>Full rng join 0 0/s 0.00<br>Sort scan 55 0.2/s<br>Sort range 475 1.6/s<br>Sort mrg pass 0 0/s<br><br>__ Query Cache _________________________________________________________<br>Memory usage 12.02M of 150.00M %Used: 8.01<br>Block Fragmnt 0.01%<br>Hits 3.66k 12.7/s<br>Inserts 9.14k 31.8/s<br>Insrt:Prune 9.14k:1 31.8/s<br>Hit:Insert 0.40:1<br><br>__ Table Locks _________________________________________________________<br>Waited 0 0/s %Total: 0.00<br>Immediate 10.49k 36.4/s<br><br>__ Tables ______________________________________________________________<br>Open 58 of 512 %Cache: 11.33<br>Opened 64 0.2/s<br><br>__ Connections _________________________________________________________<br>Max used 4 of 2000 %Max: 0.20<br>Total 519 1.8/s<br><br>__ Created Temp ________________________________________________________<br>Disk table 1 0.0/s<br>Table 184 0.6/s Size: 256.0M<br>File 5 0.0/s<br><br>__ Threads _____________________________________________________________<br>Running 2 of 2<br>Cached 2 of 150 %Hit: 99.23<br>Created 4 0.0/s<br>Slow 0 0/s<br><br>__ Aborted _____________________________________________________________<br>Clients 0 0/s<br>Connects 0 0/s<br><br>__ Bytes _______________________________________________________________<br>Sent 20.36M 70.7k/s<br>Received 1.37M 4.7k/s<br><br>__ InnoDB Buffer Pool __________________________________________________<br>Usage 304.00k of 8.00M %Used: 3.71<br>Read hit 84.42%<br>Pages<br> Free 493 %Total: 96.29<br> Data 19 3.71 %Drty: 0.00<br> Misc 0 0.00<br> Latched 0.00<br>Reads 77 0.3/s<br> From file 12 0.0/s 15.58<br> Ahead Rnd 1 0.0/s<br> Ahead Sql 0 0/s<br>Writes 0 0/s<br>Flushes 0 0/s<br>Wait Free 0 0/s<br><br>__ InnoDB Lock _________________________________________________________<br>Waits 0 0/s<br>Current 0<br>Time acquiring<br> Total 0 ms<br> Average 0 ms<br> Max 0 ms<br><br>__ InnoDB Data, Pages, Rows ____________________________________________<br>Data<br> Reads 25 0.1/s<br> Writes 3 0.0/s<br> fsync 3 0.0/s<br> Pending<br> Reads 0<br> Writes 0<br> fsync 0<br><br>Pages<br> Created 0 0/s<br> Read 19 0.1/s<br> Written 0 0/s<br><br>Rows<br> Deleted 0 0/s<br> Inserted 0 0/s<br> Read 0 0/s<br> Updated 0 0/s<br>大家可以看到在Com_中占的比例是相当大的,而一般情况下,这个值应该是3.0%左右。如果这个值过高的话,就说明,你的mysql处理请求中<br>做了一些无谓的工作,占用了大量的系统资源。其中我们看到尤为change_db的占用率比较高。这个值高了,说明我们执行的user database;命令相当多。<br>检查程序,原来我们在执行查询语句的时候应用了mysql_query_db("database","sql");这个语句在每次执行的时候都会自动调用use database;<br>所以我们应该将mysql_db_query 更改成mysql_query();再观察mysql的运行状态,ok。一切正常了。</font>

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Compétences en matière de traitement de la structure des Big Data : Chunking : décomposez l'ensemble de données et traitez-le en morceaux pour réduire la consommation de mémoire. Générateur : générez des éléments de données un par un sans charger l'intégralité de l'ensemble de données, adapté à des ensembles de données illimités. Streaming : lisez des fichiers ou interrogez les résultats ligne par ligne, adapté aux fichiers volumineux ou aux données distantes. Stockage externe : pour les ensembles de données très volumineux, stockez les données dans une base de données ou NoSQL.

Les performances des requêtes MySQL peuvent être optimisées en créant des index qui réduisent le temps de recherche d'une complexité linéaire à une complexité logarithmique. Utilisez PreparedStatements pour empêcher l’injection SQL et améliorer les performances des requêtes. Limitez les résultats des requêtes et réduisez la quantité de données traitées par le serveur. Optimisez les requêtes de jointure, notamment en utilisant des types de jointure appropriés, en créant des index et en envisageant l'utilisation de sous-requêtes. Analyser les requêtes pour identifier les goulots d'étranglement ; utiliser la mise en cache pour réduire la charge de la base de données ; optimiser le code PHP afin de minimiser les frais généraux.

La sauvegarde et la restauration d'une base de données MySQL en PHP peuvent être réalisées en suivant ces étapes : Sauvegarder la base de données : Utilisez la commande mysqldump pour vider la base de données dans un fichier SQL. Restaurer la base de données : utilisez la commande mysql pour restaurer la base de données à partir de fichiers SQL.

Comment insérer des données dans une table MySQL ? Connectez-vous à la base de données : utilisez mysqli pour établir une connexion à la base de données. Préparez la requête SQL : Écrivez une instruction INSERT pour spécifier les colonnes et les valeurs à insérer. Exécuter la requête : utilisez la méthode query() pour exécuter la requête d'insertion en cas de succès, un message de confirmation sera généré.

L'un des changements majeurs introduits dans MySQL 8.4 (la dernière version LTS en 2024) est que le plugin « MySQL Native Password » n'est plus activé par défaut. De plus, MySQL 9.0 supprime complètement ce plugin. Ce changement affecte PHP et d'autres applications

Pour utiliser les procédures stockées MySQL en PHP : Utilisez PDO ou l'extension MySQLi pour vous connecter à une base de données MySQL. Préparez l'instruction pour appeler la procédure stockée. Exécutez la procédure stockée. Traitez le jeu de résultats (si la procédure stockée renvoie des résultats). Fermez la connexion à la base de données.

La création d'une table MySQL à l'aide de PHP nécessite les étapes suivantes : Connectez-vous à la base de données. Créez la base de données si elle n'existe pas. Sélectionnez une base de données. Créer un tableau. Exécutez la requête. Fermez la connexion.

La base de données Oracle et MySQL sont toutes deux des bases de données basées sur le modèle relationnel, mais Oracle est supérieur en termes de compatibilité, d'évolutivité, de types de données et de sécurité ; tandis que MySQL se concentre sur la vitesse et la flexibilité et est plus adapté aux ensembles de données de petite et moyenne taille. ① Oracle propose une large gamme de types de données, ② fournit des fonctionnalités de sécurité avancées, ③ convient aux applications de niveau entreprise ; ① MySQL prend en charge les types de données NoSQL, ② a moins de mesures de sécurité et ③ convient aux applications de petite et moyenne taille.
