• User Attivo

    [MySQL] Come ottimizzare ricerca in milioni di dati?

    Salve a tutti,
    avrei bisogno di un vostro parere su come ottimizzare la ricerca all'interno di un DB che contiene milioni di dati, poichè non ho molta esperienza in termini di ottimizzazione e di strumenti che offre MySQL.
    Descrivo brevemente la situazione: utilizzo il plugin "autocomplete" di jQuery per ricercare all'interno del DB a seconda della parola immessa.
    Il problema è che occorrono diversi secondi (a volte anche 10-15 sec) per visualizzare i risultati nella tendina dell'autocomplete e l'utente, pensando che il sistema non funzioni, potrebbe cambiare subito pagina.
    Per questo mi affido a un vostro parere: cosa mi consigliate di fare?
    La query che utilizzo è una semplice SELECT che prende tutti i termini LIKE 'termine_passato%'.

    Grazie.


  • Moderatore

    Premesso che l'ottimizzazione di un db non è banale e quindi è opportuno mettersi nelle mani di chi sa cosa sta facendo, c'è un post precedente di un utente che chiedeva proprio questo e gli consigliai di cominciare con l'usare l'engine innodb al posto di myisam.

    Però ci sono davvero troppo variabili in gioco e giocare con la configurazione di un db può generare disastri ( gli utenti s'incazzano di brutto quando il sito sbotta o si blocca ).


  • User Attivo

    Ciao Paolino e grazie per la tua risposta.
    Attualmente non ho preferenze per il DB da scegliere (devo solo imparare come usare gli altri) in quanto avrò 2 DB separati: uno mySQL in cui ci sarà il sito ed un altro a parte che conterrà, appunto, questa grossa mole di informazioni.
    Ho trovato il post a cui ti riferivi ma non ho trovato nient'altro oltre a quello che mi hai già detto tu, ovvero di passare a engine innodb.
    Leggevo anche che utilizzare posgreSQL sarebbe una soluzione.
    Tu quale consigli?
    Se hai altro da suggerirmi fallo pure perchè vorrei risolvere quanto prima questa questione della lentezza.


  • Moderatore

    Il passaggio a postgresql è ovviamente la strada più "semplice", nel senso che non deve cambiare engine, ecc....

    Tutti quelli che sono passati a postgresql ( me compreso ) hanno notato miglioramenti nelle prestazioni ma soprattutto nella stabilità e nella robustezza del dbms in caso di guasti e malfunzionamenti hardware e software.

    L'uso di innodb ( che è un engine per mysql non un dbms differente ) è consigliato a tutti quelli che, per un motivo o per l'altro, vogliono/devono usare mysql.

    Ripeto, non sto dicendo che mysql fa schifo, solo che ha dei limiti arcinoti.

    Ovviamente una migrazione verso postgresql richiede alcune operazioni sui dati e sugli script che li manipolano. Puoi trovare info qui http://wiki.postgresql.org/wiki/Converting_from_other_Databases_to_PostgreSQL

    http://wiki.postgresql.org/wiki/How_to_make_a_proper_migration_from_MySQL_to_PostgreSQL

    http://www.sitepoint.com/site-mysql-postgresql-1/

    http://en.wikibooks.org/wiki/Converting_MySQL_to_PostgreSQL


  • User Attivo

    Ciao,
    per la conversione non è un problema poichè ho ancora il dump da importare nei diversi DB (ne ho uno per ogni tipologia).
    Due ultime cose:

    1. conosci un sito di hosting gratuito per postgres giusto per fare qualche prova? Perchè lo installai tempo fa sul mio pc (windows 7) ma mi chiedeve di creare super user e roba simile. Perciò magari trovandolo online lo trovo già cofigurato, oppure se sai qualche pacchetto (tipo xampp) che ti offre tutto già configurato.
    2. una volta migrato/importato tutto in postgres, dovrò fare una normale SELECT con sintassi postgres o dovrò usare qualche strumento particolare per la ricerca veloce?

  • Moderatore

    Non penso ci siano hosting gratuiti con postgre in giro. Riguardo la SELECT, ovviamente funziona perchè è un comando sql standard.

    Poi ci sono millemila ottimizzazioni possibili per le query con i dbms high-end ( come postgre ).


  • User Attivo

    Ciao paolino,
    avrei un'ultima domanda: sto per installare postgres sql (su ambiente windows) ma prima di fare ciò mi sto documentando sull'installazione visto che in passato ho avuto problemi.
    Mentre cerco il modo migliore e meno indolore per installarlo, vorrei sapere se per caso devo anche includere qualcuno dei moduli di questa schermata:
    image

    Grazie.
    P.s.: se poi hai da suggerirmi anche una guida in italiano per l'installazione e la configurazione di questo DB mi faresti un gran favore.


  • Moderatore

    No, quei moduli offrono features extra, quindi non sono necessari. Riguardo le guide, ci sono le ottime guide di html.it http://database.html.it/articoli/leggi/1689/postgresql-su-windows-procedura-di-installazione/


  • User Attivo

    Grazie!
    Speriamo solo che sia una guida valida visto che è datata 2006.