Mysql query analyzer/optimizer

domenica 19 agosto 2012 - 01.38
Tag Elenco Tags  SQL Server 2008 R2  |  SQL Server Express  |  MySQL 5.5  |  MySQL 5.1

avarrati Profilo | Newbie

Salve a tutti,
premesso che ho realizzato un sw che viene utilizzato da quasi 2 anni e si appoggia ad un db mysql; allo stato attuale contiene oltre 60 milioni di tuple e quando vado ad eseguire alcune query impiega oltre 45 minuti. (le query son sempre le stesse, non cambiano mai)
so che per SQL Server esiste query analyzer o query optimizer.. esiste qualcosa di 'parallelo' per mysql ??
mi sapreste dare qualche consiglio su come ridurre i tempi ..? (avevo pensavo di migrare da mysql a sql server.. ma ci son dei costi da sostenere? se uso sql express..? )
premesso che le tabelle che entrano in gioco son da 13 a 18, ma tutte son con relazione (1,n) e finiscono tutte con un group by e con un order..
alcuni mi hanno consigliato di indicizzare, altri mi han detto che è inutile in quanto le query passano le relazioni tramite gli id che son già di per se chiavi primarie autoincrementanti pertanto son già indicizzate..
qualcuno ha una soluzione/consiglio da propormi? grazie

alx_81 Profilo | Guru

>Salve a tutti,
Ciao

>impiega oltre 45 minuti. (le query son sempre le stesse, non cambiano mai)
dipende però cosa fai nelle query che impiegano così tanto.

>so che per SQL Server esiste query analyzer o query optimizer..
considera che il query analyzer è l'editor di query antecedente a SQL Server 2005 ed il query optimizer è un processo interno al motore del database che consente di selezionare il miglior piano di esecuzione possibile per una query sfruttando anche le statistiche. Non conosco di preciso come ragioni mysql ma credo che all'interno del motore qualcosa di simile lo abbia.
Se però tu intendi un tool che prende un campione tipico di query sul tuo relazionale e ti consiglia che cambiamenti fare per ottimizzare il motore, stai intendendo qualcosa tipo il database tuning advisor, e sinceramente non so se esiste qualcosa di simile per mysql.

Se a te basta capire quali piani vengono usati, sembra che il comando EXPLAIN possa esserti di aiuto:
http://dev.mysql.com/doc/refman/5.5/en/explain.html

>mi sapreste dare qualche consiglio su come ridurre i tempi ..?
dipende da che fai, ragioni row by row o set based?

>(avevo pensavo di migrare da mysql a sql server.. ma ci son dei costi da sostenere? se uso sql express..? )
nessun costo con express, e di certo posso aiutarti meglio
Fai attenzione però alle limitazioni della versione free (10GB di database, un solo processore, ad esempio)

>premesso che le tabelle che entrano in gioco son da 13 a 18,
>ma tutte son con relazione (1,n) e finiscono tutte con un group
>by e con un order..
>alcuni mi hanno consigliato di indicizzare, altri mi han detto
>che è inutile in quanto le query passano le relazioni tramite
>gli id che son già di per se chiavi primarie autoincrementanti
>pertanto son già indicizzate..
mah, questo è da vedere non c'è nulla di indicizzato alla perfezione prima..

>qualcuno ha una soluzione/consiglio da propormi?
cerca di postare la query che impiega 45 min..

> grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

avarrati Profilo | Newbie

ciao scusami se ti rispondo solo ora, ma avuto dei problemi imprevisti..
mi rimetterò all'opera tra qualche settimana.. grazie e scusami ancora
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5