Visualizzazione dei risultati da 1 a 6 su 6

Discussione: ottimizzare mysql

  1. #1

    ottimizzare mysql

    Ragazzi importo dei dati attraverso un file xml nel database, ma ormai la tabella è diventata così grande che è pesate, addirittura non posso fare dump della tabella che phpadmin mi da errore di tempo, come posso ottimizzarla? affinché si velocizzi? vi copio anche il file che interagisce con il db se è possibile modificarlo x ottimizzarlo

    Codice PHP:

    <?php

    echo "\n
    1: "
    .date("l dS \of F Y h:i:s A").": INIZIO ELABORAZIONE";            

    include(
    "c.php");
    $import $_GET['import'];
    $file_zip "/path/$import.zip";

    if(
    file_exists($file_zip)) 
    {
        
    shell_exec("unzip $file_zip -d /path/xml");
        
    $file_xml $import ".xml";

        
    $xml simplexml_load_file($file_xml);    
        
        echo 
    "lettura tabella per updater";
        foreach(
    $xml->updater as $updater
        {
            
    $id_amm $updater->id_amm;
            
    $id_erase $updater->id_erase;
        }    

        
    $erase $id_erase;
        
    //echo $erase;
        //echo $id_amm;
        
        
    $id_amm $id_amm;
        
        if(
    $erase == $id_amm#si cancellano tutti i dati di questo amministratore e si reimportano dal file xml
        
    {
            echo 
    " - IMPORTAZIONE TOTALE DEI DATI DAL FILE ".$file_zip;            

            
    $check_sql "DELETE FROM amministratore WHERE id_amm = '$id_amm'";
            
    //echo "\n
    query".$check_sql;
            
    $check_query = @mysql_query($check_sql) or die(mysql_error());
                    
            
    $al_sql = "DELETE FROM anagrafico WHERE id_amm '$id_amm'";
            //echo "
    \n
    query
    ".$al_sql;
            
    $al_query = @mysql_query($al_sql) or die(mysql_error());


        }
        else
        {
            echo " 
    IMPORTAZIONE PARZIALE DEI DATI DAL FILE ".$file_zip;            
        }

        
        echo "
    \n
    3
    ".date("l dS \of F Y h:i:s A")."Elaborazione della tabella amministratore";
        foreach(
    $xml->amministratore as $amministratore
        {
            
    $id = $amm->id;
            
    $id_amm = $amm->id_amm;
            
    $denominazione = $amministratore->denominazione;
            
    $indirizzo = $amministratore->indirizzo;
            
    $cap = $amministratore->cap;
            
    $iva = $amministratore->iva;
            
    $citta = $amministratore->citta;
            
    $telefono_1 = $amministratore->telefono_1;
            
    $telefono_2 = $amministratore->telefono_2;
            
    $fax = $amministratore->fax;
            
    $email = $amministratore->email;
            
    $web = $amministratore->web;
            
    $username = $amministratore->username;
            
    $password = md5($amministratore->password);
            
    $banned = $amministratore->banned;
            
            if(
    $erase <> $amministratore)
            {
                
    $delete_sql = "DELETE FROM amministratore WHERE id_amministratore '$id_amministratore'";
                //echo "
    \n
    query
    ".$delete_sql;
                
    $result = mysql_query($delete_sql);    
                if(!
    $result) die("Errore MySQL".mysql_error()."\n
    Query
    :\n
    ".$delete_sql);
            }
            
    $insert_sql = "INSERT INTO amm id_amministratoredenominazioneindirizzocapivacitta,  telefono_1telefono_2faxemailwebusernamepasswordbannedVALUES ('$id_amministratore''$denominazione''$indirizzo''$cap''$iva','$citta''$telefono_1''$telefono_2''$fax''$email''$web''$username''$password','$banned')";
            echo "
    \n
    query
    ".$insert_sql;
            
    $result = mysql_query($insert_sql);    
            if(!
    $result) die("Errore MySQL".mysql_error()."\n
    Query
    :\n
    ".$insert_sql);
        }

        echo "
    \n
    4
    ".date("l dS \of F Y h:i:s A")."Elaborazione della tabella anagrafico";
        foreach(
    $xml->anagrafico_del_condominio as $anagrafico_del_condominio
        {
            
    $id = $anagrafico->id;
            
    $id_amm = $anagrafico->id_amm;
            
    $id_condominio = $anagrafico->id_condominio;
            
    $codicefiscale_archivio = $anagrafico->codicefiscale_archivio;
            
    $condominio_denominazione = $anagrafico->condominio_denominazione;
            
            

            if(
    $erase <> $amministratore)
            {
                
    $delete_sql = "DELETE FROM anagrafico_del_condominio WHERE id_condominio '$id_condominio' AND id_amministratore '$id_amministratore'";
                //echo "
    \n
    query
    ".$delete_sql;
                
    $result = mysql_query($delete_sql);    
                if(!
    $result) die("Errore MySQL".mysql_error()."\n
    Query
    :\n
    ".$delete_sql);
            }
            
    $insert_sql = "INSERT INTO  anagrafico(id_condominioid_amm,  codicefiscale_archiviocondominio_denominazione)VALUES '$id_condominio','$id_amministratore''$codicefiscale_archivio','$condominio_denominazione')";
            # echo "
    \n
    query
    ".$insert_sql;
            
    $result = mysql_query($insert_sql);    
            if(!
    $result) die("Errore MySQL".mysql_error()."\n
    Query
    :\n
    ".$insert_sql);
        }    
            echo "
    \n
    14
    ".date("l dS \of F Y h:i:s A")."FINE ELABORAZIONE";            

        shell_exec("
    rm /path/$import.zip");
        shell_exec("
    rm $file_xml");

    else 
    {
        die("
    Il file [i]$file_zip[/inon esiste!");
    }

    ?>

  2. #2
    Utente di HTML.it L'avatar di Mike
    Registrato dal
    May 2002
    Messaggi
    423
    ciao,
    io non utilizzo mai phpmyadmin per i dump soprattutto se si trattano di mole di dati abbastanza importante.
    inizierei a schedulare il tuo script aggiungendo:
    un bel try catch per gestire gli errori;
    un begin transaction con commit o rollback per i tuoi insert/update;
    per il dump invece c'è uno script da shell, ovvero
    codice:
    mysqldump -u username -p nome_database > path.sql
    ti consiglio di studiartelo xchè include un sacco di opzioni...
    infine esiste una gui per linux chiamata webmin davvero interessante...

    bye
    Mike

  3. #3
    Azz
    ascolta mi fai capire meglio questo?
    un begin transaction con commit o rollback per i tuoi insert/update;
    cioè che dovrei fare?

  4. #4
    Utente di HTML.it L'avatar di Mike
    Registrato dal
    May 2002
    Messaggi
    423
    in rete ci sono molti esempi su

    mysqli_query('START TRANSACTION');

    mysqli_query('COMMIT'); o mysqli_query('ROLLBACK');

    buon divertimento!!
    Mike

  5. #5
    ok ci provo txs

  6. #6
    Ho visto un pò d guide in inglese non ho capito niente .-. mi potresti fare gentilmente un esempio?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.