Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que nossas consultas ficam presas no estado Writing to net in MySql?


Como os aplicativos não geram consultas magicamente como eles gostam, acho que é bastante provável que haja um erro em algum lugar do seu aplicativo que esteja causando isso. Aqui estão algumas sugestões que você pode usar para rastreá-lo. Eu estou supondo que você está usando PHP, já que está usando MySQL, então vou usar isso para meus exemplos.

Tente adicionar comentários na frente de todas as suas consultas no aplicativo, assim:
$sqlSelect  = "/* file.php, class::method() */";
$sqlSelect .= "SELECT * FROM foo ";
$sqlSelect .= "WHERE criteria";

O comentário aparecerá no seu log de consulta. Se você estiver usando algum tipo de wrapper de API de banco de dados, poderá adicionar essas mensagens automaticamente:
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();
}

Caso você não esteja usando um wrapper, mas sim executando as consultas diretamente, você pode usar a extensão runkit e a função runkit_function_rename para renomear mysql_query (ou o que você estiver usando) e interceptar as consultas.