Query sugli Indici di Ricerca non Ottimizzate. Siamo sicuri che Drupal vada bene per i siti di grandi dimensioni?

12 contenuti / 0 new
Ultimo contenuto
Query sugli Indici di Ricerca non Ottimizzate. Siamo sicuri che Drupal vada bene per i siti di grandi dimensioni?

Queste query mi hanno stancanto, creano un eccessivo Loading su MySQL...

SELECT t.word AS realword, i.word FROM search_total t LEFT JOIN search_index i ON t.word = i.word WHERE i.word IS NULL

Come devo fare ad ottimizzarle ed ottimizzare gli indici di questo CMS?
Può mai essere che Drupal non preveda query performanti ed ottimizzate?!... Ma daiiii!!!

Può mai essere che drupal vada bene solo x i sitarelli e non per i siti grossi?!
Se un sito ha + di 10.000 nodi deve x forza avere questi problemi?
A parte il fatto che i nodi dei miei siti web sono in perpetua rapida crescita in termini di nodi aggiunti.

Così NON si può lavorare!

Voi che gestite DrupalItalia come avete risolto il problema?

Facendo una rapida ricerca sul sito Drupal.org ...
ho scovato quasi subito queste importanti informazioni:

http://drupal.org/node/312395
http://wtanaka.com/drupal/million-nodes-6
http://drupal.org/node/312393

Ritengo che con queste informazioni mi si apra un nuovo mondo di indagine e studio per risolvere e gestire tale CRITICO PROBLEMA.

io per ora c'ho siti che non arrivano a mille nodi
qui c'hai guardato
http://drupal.org/node/85768
e sulle pagine seguenti,
spero per il bene di tutti che risolvi :)

La prima cosa FONDAMENTALE da fare...
è migrare a DRUPAL 7 appena possibile, se è necessario rinunciare a qualche modulo... poco importa.

La Migrazione è necessaria, proprio perchè l'utilizzo di Tabelle InnoDB risolve decisamente il problema, poi tutte le altre ottimizzazioni.

jscm wrote:
La prima cosa FONDAMENTALE da fare...
è migrare a DRUPAL 7 appena possibile, se è necessario rinunciare a qualche modulo... poco importa.

Ahia..ma perchè ogni giorno che penso di portare qualche cosa su d6,mi si frena subito...Ho già un progetto online su wordpress che secondo i miei calcoli dovrebbe a giro di poco contenere parecchi nodi,stamattina mi era venuta l'idea (odiando wordpress) di portare il tutto su d6 finche i nodi sono ancora pochi...A sto punto mi sa che comincio a fare un porting ex novo su D7 attuando soluzioni temporanee e sostituendole man mano che escono i moduli... ahi ahi ahi che dulur...

Soluzione applicabile per risolvere questo noto problema.

Lucene/Apache Solr da installare sul server
http://lucene.apache.org/solr/

Apache Solr Search Integration
http://drupal.org/project/apachesolr

Dopo aver installato i .deb di apache solr sul mio ubuntu e dopo aver notato che non funziona se non aggiungi anche altri componenti così cone indicato nella guida del modulo x drupal... ho provato Google Custom Search Engine.

Google CSE é una gran cosa, soprattutto x l'immane velocità con cui restituisce i risultati e tra l'altro fa tutto quello che serve ed anche meglio. L'unico vero ptonlema é che se non vuoi l'Adv devi pagare $100 l'anno e infine dal punto di vista del tema é troppo google style e tale resta.

A questo punto mi resta da testare Sphinx Search Engine. Se fosse possibile integrarne meglio il tema e fosse performante quanto Google CSE, potrei anche rinunciare definitivamente all'idea di installare Apache Solr.

perchè con d7 si risolverebbe il problema?

Il problema in senso stretto non ho ancora idea se si risolva oppure no.
Però si passa a tabelle InnoDB, di conseguenza cambia di molto la situazione.

Non ho idea se Drupal7 abbia le queries di costruzione dell'indice ottimizzate oppure no.... probabilmente no.

In ogni casoè molto meglio non usare il modulo search del core e passare all'esterno di drupal le ricerche sul sito.

In ogni caso non è solo Search a pesare sul MySQL Load, anche CAPTCHA, Sesions, Statistics (il node_counter pesa molto sul mysql load), la Cache, ecc ecc. E' bene avere sotto agli occhi i log di mysql.bin.log per capire cosa pesa e quanto pesa. Al fine di poterlo eliminare da drupal nel + breve tempo possibile soprattutto SE hai un sito con una enorme quantità di nodi e sei in uno shared server.

Ci sono diverse soluzioni, quelle meglio applicabili esternalizzano a terzi. Molte tabelle possono essere date in gestione a memcache. O addirittura se hai server e soldi, la cache non serve + perchè ci pensa il Proxy a fare copie cache del tuo sito web.

L'unico problema è che non c'è una vera alternativa al modulo delle statistiche... bisogna trovare una soluzione.

Bisogna sempre pensare alle performance di sistema se si vuole andare avanti.

Faccio presente a tutti i lettori di questa discussione che la completa disabilitazione e disinstallazione del modulo search del core di Drupal è un vantaggio enorme.

Primo fra tutti le dimensioni del DB si dimezzano e le queries non ottimizzate con cui viene costruito l'indice di ricerca non vengono + eseguite. Il MySQL Load si abbassa al di sotto di eventuali livelli di guardia.

Il mio suggerimento è NON usate il Modulo Search del Core di Drupal. D'altronde nemmeno il forum DrupalItalia.org lo usa.. e ci sarà decisamente un valido motivo.

Salve a tutti ragazzi,
mi sto da poco documentando sull'integrazione di google cse per un progetto di un portale che sto realizzando in drupal.
E' possibile utilizzarlo in locale, per testing? (mi è parso di capire di no)

@antosigi: non è possibile in quanto se il sito è in sviluppo i suoi contenuti non sono esposti sul web e quindi google non può indicizzarli. Puoi in ogni caso agganciarci google CSE di un altro sito (i risultati delle ricerche non saranno coerenti con il tuo sito), in modo da fare dei test.

Per quanto riguarda il discorso del modulo search di Drupal, iniziamo a dire che la ricerca full text è un problema di MySQL e di molti database; per questo motivo si utilizzano strumenti esterni che sono pensati appositamente per questo, in modo da sfruttare le loro caratteristiche al meglio. Il più utilizzato in questo momento è sicuramente Solr che però (come viene segnalato) richiede l'installazione sul server, la configurazione, ... .

Il discorso di di query NON ottimizzate di Drupal, imho non sussiste, le query sono ottimizzate per quanto sia possibile farlo, ovviamente aumentando il numero di contenuti, il numero di righe cresce e quindi la durata della ricerca. Il fatto cha la tabella sia MyISAM e non InnoDB rende più veloce la ricerca della voce singola, ma mantiene il lock sulla tabella e quindi "accoda" le ricerche successive, portandola a InnoDB (si può fare anche da PhpMyAdmin) la velocità della ricerca diminuisce, ma può essere parallelizzata meglio. Quale sistema scegliere? Dipende dal tipo di sito e ricerche che vengono fatte, in ogni caso il consiglio è di usare strumenti esterni come Solr o Google CSE, e tenere la ricerca interna solo per siti con basso numero di contenuti/ricerche effettuate.

Ciao
Marco
--
My blog
Working at @agavee