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

Pourquoi nos requêtes restent-elles bloquées sur l'état Writing to net dans MySql ?

Étant donné que les applications ne génèrent pas comme par magie des requêtes comme elles le souhaitent, je pense qu'il est plutôt probable qu'il y ait une erreur quelque part dans votre application qui en est la cause. Voici quelques suggestions que vous pouvez utiliser pour le retrouver. Je suppose que vous utilisez PHP, puisque vous utilisez MySQL, donc je vais l'utiliser pour mes exemples.

Essayez d'ajouter des commentaires devant toutes vos requêtes dans l'application, comme ceci :

$sqlSelect  = "/* file.php, class::method() */";
$sqlSelect .= "SELECT * FROM foo ";
$sqlSelect .= "WHERE criteria";

Le commentaire apparaîtra dans votre journal de requêtes. Si vous utilisez un wrapper API de base de données, vous pouvez éventuellement ajouter ces messages automatiquement :

function query($sql)
{
    $backtrace = debug_backtrace();
    // The function that executed the query
    $prev = $backtrace[1];
    $newSql = sprintf("/* %s */ ", $prev["function"]);
    $newSql .= $sql;

    mysql_query($newSql) or handle_error();
}

Si vous n'utilisez pas de wrapper, mais que vous exécutez directement les requêtes, vous pouvez utiliser l'extension runkit et la fonction runkit_function_rename pour renommer mysql_query (ou ce que vous utilisez) et intercepter les requêtes.