Kommentarer i MySQL-forespørgsler

November 13, 2009 · Posted in Udvikling · Comment 

En lille idé man kan vælge at bruge eller ej :)

Har man et site der køre nogle store og tunge forespørgsler, og hvis man er bange for at nogle af dem løber løbsk eller ophober sig, kan man fx i starten af sin SQL indsætte en lille kommentar.

Tricket er nemlig at den kommentar kommer med når man laver en:

SHOW PROCESSLIST

Efterfølgende sætter man et cron-job op der hvert minut kigger efter forespørgsler, og hvis scriptet opdager en forespørgsel der indeholder en bestemt kommentar kan man enten automatisk dræbe den, eller sende en mail om at en forespørgsel er løbet løbsk.

Kommentaren kunne fx indeholder en maks. kørselstid.

Et eksempel på en forespørgsel hvor man kun vil lave den køre i 120 sek.:

1
2
3
<?php
  mysql_query("/* MAX_120 */ SELECT big_stuff FROM big_table");
?>

PHP-scriptet kunne se sådan ud:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
  mysql_connect("localhost", "benny", "pa55word");
  mysql_select_db("benny_db");
 
  $result = mysql_query("SHOW PROCESSLIST");
 
  while($row = mysql_fetch_assoc($result)) {
 
    // Matcher /* MAX_120 */
    if (preg_match("/\/\*\s*max_([0-9]+)\s*\*\//i",
             $row['Info'], $regs)) {
 
      // Kontrollerer om forespørgslen har kørt længe end den må
      if ($row['Time'] > $regs[1]) {
        mysql_query("KILL ".(int) $row['Id']);
      }
 
    }
  }
?>


  • Om websmed.dk

    Jeg hedder Morten, og jeg har udviklet webapplikationer siden slutningen af 90'erne.

    Jeg vil her dele ud af min erfaring, og med jævne mellemrum poste nogle tips og tricks, samt løsningsforslag på generelle dagligdags problemstillinger.

    Jeg har en forkærlighed for PHP og MySQL, hvorfor I nok vil se flest indlæg der vedrører den gren af webudvikling.

    Jeg har en anden blog af mere personlig karakter på mbn.dk, hvor I kan finde kontaktmuligheder m.m.

    Mine indlæg vil tit være baseret på problemstillinger i mit daglige virke, eller i mit eget firma MRLYTICS, hvor jeg sælger kundeundersøgelser samt kundedatabaser.

    Denne side er hostet hos slicehost.

  • Skrevet på Twitter