2013-02-26 15 views
6

Sto eseguendo alcune query di aggregazione su alcune tabelle molto grandi in un ambiente OLAP. Attualmente sono strozzato dal disco IO a 200 MB/s.Suggerimento SQL per caricare l'intera tabella nella RAM prima dell'esecuzione?

Sto facendo queste query su una macchina con 92 GB di RAM. C'è qualche suggerimento SQL che posso scrivere nella mia query che fondamentalmente dice a SQL di caricare l'intera tabella nella RAM prima dell'esecuzione?

Qualcosa di simile:

select * from Tabella con (ramdisk)

sto utilizzando MS TSQL.

+0

['DBCC PINTABLE'] (http://msdn.microsoft.com/en-us/library/ms178015 (v = sql.90) .aspx) utilizzato per eseguire questa operazione, ma ora è stato disabilitato. La prossima versione ha Hekaton per le tabelle di memoria. Dovresti comunque presumibilmente essere imbullonato, caricando i dati nella RAM in primo luogo, quindi non sei sicuro di quanto sarebbe di aiuto (potrebbe essere un ostacolo) caricare prima nella RAM e semplicemente caricare nella RAM mentre la query viene eseguita. –

risposta

2

No. Il motore di database esegue questa operazione automaticamente se ha spazio sufficiente nella cache della pagina.

È possibile impostare la quantità di memoria utilizzata utilizzando SQL Server Management Studio. Fare clic con il tasto destro del mouse sul server, scegliere l'opzione di memoria e inserire un numero elevato nella casella "Memoria server minima". Se hai 92 Gbyte di RAM, allora un numero come 85.000 è probabilmente buono. È necessario lasciare memoria aggiuntiva per il sistema operativo e altri servizi sulla macchina.

Supponendo che le tabelle si adattino alla memoria, ciò dovrebbe facilitare l'elaborazione. Se non si adattano alla memoria, potrebbe essere necessario adottare un altro approccio.

+0

SQL non è perfetto per prevedere cosa mettere nella cache di lettura, quindi sembra che se questo suggerimento esistesse potrebbe accelerare significativamente alcuni casi di query. –

+0

E per altre classi di query, il caricamento di una tabella da 50 GB nella RAM sarebbe in realtà il grosso del tempo di esecuzione. Sembra la situazione perfetta per aggiungere una capacità di suggerimento. –

+0

@JohnShedletsky. . . Immagino che ci siano enormi difficoltà in un ambiente multiutente, con elaborazione mista del carico, nel far sì che un suggerimento funzioni. Avere una cache intelligente è molto più versatile come soluzione. Tuttavia, questo non è il forum per una tale discussione. –

Problemi correlati