- Home
- Categorie
- Coding e Sistemistica
- Hosting e Cloud
- [MySQL] Come ottimizzare ricerca in milioni di dati?
-
[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.
-
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 ).
-
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.
-
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
-
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:- 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.
- 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?
-
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 ).
-
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:
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.
-
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/
-
Grazie!
Speriamo solo che sia una guida valida visto che è datata 2006.