Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum bleiben unsere Abfragen in MySql im Zustand Writing to net hängen?

Da Anwendungen Abfragen nicht auf magische Weise generieren, wie sie möchten, halte ich es für ziemlich wahrscheinlich, dass irgendwo in Ihrer Anwendung ein Fehler vorliegt, der dies verursacht. Hier sind ein paar Vorschläge, die Sie verwenden können, um es aufzuspüren. Ich vermute, dass Sie PHP verwenden, da Sie MySQL verwenden, also werde ich das für meine Beispiele verwenden.

Versuchen Sie, Kommentare vor all Ihren Abfragen in der Anwendung hinzuzufügen, wie hier:

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

Der Kommentar wird in Ihrem Abfrageprotokoll angezeigt. Wenn Sie eine Art Datenbank-API-Wrapper verwenden, könnten Sie möglicherweise diese Nachrichten automatisch hinzufügen:

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();
}

Falls Sie keinen Wrapper verwenden, sondern die Abfragen direkt ausführen, können Sie die Runkit-Erweiterung und die Funktion runkit_function_rename um mysql_query (oder was auch immer Sie verwenden) umzubenennen und die Abfragen abzufangen.