Avatar billede negolund Nybegynder
07. juni 2012 - 02:08

Eventuelt overload af Mysql?

Hej,

Jeg laver facebooksider for firmaer hvor der fx afholdes konkurrencer. I den forbindelse indsamler jeg grundlæggende kontaktoplysninger som bliver lagret i en MySql database (navn og email).

Jeg benytter mig af en VPS server hvor jeg til hvert firma har oprettet en database med ens tabeller.

Når folk tilmelder sig konkurrencen bliver dataen lagret i en tabel der kaldes: "emails" som skal fungere som en samlet tabel med ALT kundedata. Derudover lagrer jeg også de præcis samme oplysninger, når folk tilmelder dig, i en tabel jeg kalder "draw" som skal fungere som en tabel hvor der udtrækkes en vinder. Grunden til jeg lagrer den samme data i 2 forskellige tabeller, er fordi at indholdet i tabellen "draw" skal kunne slettes når der skal laves nye konkurrencer (Der trækkes nemlig kun lod blandt deltagere af den seneste konkurrence, hvis nogle skulle undre sig over det).

Mit problem er fx ved en af mine databaser, at tabellen "draw" indeholder over 500 rækker, hvorimod tabellen "email" kun indeholder lidt over 100. Jeg lagrer dataen i 2 forskellige queries LIGE efter hinanden når folk tilmelder sig konkurrencen.

Som i kan se i nedenstående kode, bruger jeg funktionen mysqli_insert_id(); til at tage ID'et fra "emails" og smide det over i "draw" for at kunne holde styr på mit dublerede data. Er det en korrekt måde at gøre det på?

Jeg kan altså konstatere ikke alt data bliver sat ind, men noget gør. Er der nogen der har en forklaring på dette? Kan det være MySQL ikke kan håndtere hvis mange tilmelder sig sammentidigt, eller kan det have noget at gøre med at jeg har mange åbne mysql-forbindelser på samme tid?

Håber i forstår hvad jeg mener. Ellers uddyber jeg gerne mere.

Her er det kode jeg bruger når jeg lagere dataen efter den er blevet valideret osv. 

        if ($navn && $email && $accept) {
   
        $q = "INSERT INTO emails (name, email) VALUES ('$navn', '$email')";
        $r = @mysqli_query($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc));
        //catches the newly generated ID and stores it in the variable $cusid
        $cusid = mysqli_insert_id($dbc);
                                           
        $q2 = "INSERT INTO draw (email_id, name, email) VALUES ('$cusid', '$navn', '$email')";
        $r2 = @mysqli_query($dbc, $q2) or trigger_error("Query: $q2\n<br />MySQL Error: " . mysqli_error($dbc));

   
        //Direct the user to the success page!
        printf("<script>location.href='success.php'</script>");
       
    }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester