Lors du fonctionnement des bases de données MySQL dans PHP, l'utilisation de instructions préparées est un moyen courant et sûr d'empêcher efficacement l'injection SQL, en particulier lors du traitement de l'entrée des utilisateurs. Cependant, pour les requêtes de données à grande échelle, comment améliorer encore l'efficacité des opérations de base de données et réduire la consommation de ressources est devenue au centre des développeurs. Cet article se concentrera sur le rôle de la fonction mysqli_stmt :: att_get , et combinez-le avec des exemples de code réels pour illustrer comment l'utiliser pour optimiser les performances de la grande requête de données.
mysqli_stmt :: att_get est une méthode de la classe mysqli_stmt en php, qui est utilisée pour obtenir la valeur d'attribut de l'instruction de prétraitement actuelle. Grâce à lui, des propriétés telles que le mode tampon et le délai d'expiration des instructions de prétraitement peuvent être lues, aidant ainsi les développeurs à comprendre et à contrôler l'état d'exécution des instructions et à optimiser les opérations de base de données.
Mysqli_stmt_attr_cursor_type : définissez le type de curseur pour déterminer la méthode d'extraction des données.
Mysqli_stmt_attr_prefetch_rows : contrôle le nombre de lignes préfectées et affecte les performances de la requête.
Mysqli_stmt_attr_update_max_length : décidez de mettre à jour la longueur maximale.
La compréhension et l'utilisation de ces propriétés contribueront à améliorer l'efficacité de la requête de données à grande échelle.
Lorsque vous interrogez de grandes données, le tir et le traitement de grandes quantités de données sont souvent impliqués. Si la politique de mise en mémoire tampon par défaut de l'instruction de prétraitement n'est pas appropriée, cela peut entraîner une utilisation excessive de mémoire ou des retards de requête. Grâce à Attr_get , vous pouvez d'abord lire l'attribut actuel, puis l'ajuster en fonction de vos besoins ( mysqli_stmt :: att_set ) pour atteindre une requête efficace.
Paramètres raisonnables de types de curseur <br> Utilisez le curseur MySQLI_CURSOR_TYPE_READ_ONLY et coopérez avec les requêtes non tamponnées pour réduire la pression de la mémoire.
Réglage de la ligne préfectée <br> En lisant et en définissant MySQLI_STMT_ATTR_PREFETCH_ROWS , la quantité de données préfabriqué pour chaque requête est contrôlée et les performances et la vitesse de réponse sont équilibrées.
Détecter le statut de déclaration <br> En lisant les attributs, nous pouvons déterminer s'il doit être réinitialisé et éviter les déchets de performances causés par des modifications aveugles.
L'exemple suivant montre comment utiliser mysqli_stmt :: att_get pour obtenir le type de curseur de l'instruction de prétraitement actuelle et les ajuster en fonction des exigences de requête pour améliorer les performances de la requête de grandes données.
<?php
// Connectez-vous à la base de données,Remplacer le nom de domaine par m66.net
$mysqli = new mysqli("db.m66.net", "username", "password", "database");
// Vérifiez si la connexion réussit
if ($mysqli->connect_error) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
// Préparez la déclaration de requête
$stmt = $mysqli->prepare("SELECT * FROM large_table WHERE status = ?");
// Définir les paramètres
$status = 'active';
$stmt->bind_param("s", $status);
// Obtenez l'attribut de type curseur actuel
$cursorType = $stmt->attr_get(MYSQLI_STMT_ATTR_CURSOR_TYPE);
// Sortie du type de curseur actuel
echo "Type de curseur actuel: " . $cursorType . PHP_EOL;
// Si le type de curseur n'est pas en lecture seule,Définir le curseur en lecture seule pour optimiser les performances
if ($cursorType !== MYSQLI_CURSOR_TYPE_READ_ONLY) {
$stmt->attr_set(MYSQLI_STMT_ATTR_CURSOR_TYPE, MYSQLI_CURSOR_TYPE_READ_ONLY);
}
// Instruction d'exécution
$stmt->execute();
// Obtenir des résultats
$result = $stmt->get_result();
// Itérer sur l'ensemble de résultats
while ($row = $result->fetch_assoc()) {
// Traiter chaque rangée de données
print_r($row);
}
// Clôtures et connexions étroites
$stmt->close();
$mysqli->close();
?>
Dans le code, utilisez $ stmt-> att_get () pour obtenir le type de curseur de l'instruction actuelle pour confirmer s'il s'agit d'un curseur en lecture seule.
Le curseur en lecture seule permet au serveur de lire les données ligne par ligne, réduit l'utilisation de la mémoire et convient pour interroger de grands ensembles de données.
Après avoir modifié le type de curseur, l'exécution des requêtes peut réduire efficacement la pression de la mémoire du client et améliorer l'efficacité de la requête.
Dans les scénarios de requête de données à grande échelle, l'utilisation rationnelle de la fonction mysqli_stmt :: att_get pour lire et ajuster les propriétés des instructions de prétraitement est un moyen important d'améliorer l'efficacité du fonctionnement de la base de données. En contrôlant le type de curseur et le nombre de lignes prélectées, il peut non seulement réduire l'utilisation de la mémoire, mais également améliorer la vitesse de réponse, afin que les applications PHP fonctionnent mieux lors du traitement des mégadonnées.
La maîtrise de ces détails est cruciale pour construire des applications de base de données haute performance haute performance. Il est recommandé que les développeurs combinent mysqli_stmt :: att_get et mysqli_stmt :: att_set en fonction des scénarios commerciaux réels pour régler et créer une logique d'interaction de base de données plus efficace.