Frage

In einer meiner Anwendungen habe ich eine 1-GB-Datenbanktabelle, die für Referenzdaten verwendet wird.Aus dieser Tabelle kommen große Mengen an Lesevorgängen, aber es gibt nie Schreibvorgänge.Ich habe mich gefragt, ob es eine Möglichkeit gibt, Daten in den RAM zu laden, sodass nicht von der Festplatte darauf zugegriffen werden muss.

Ich verwende SQL Server 2005

War es hilfreich?

Lösung

Wenn Sie über genügend RAM verfügen, kann SQL hervorragend bestimmen, was in den RAM geladen und was auf der Festplatte gesucht werden soll.

Diese Frage wird häufig gestellt und erinnert mich an Leute, die versuchen, manuell festzulegen, auf welchem ​​„Kern“ ihr Prozess ausgeführt werden soll – lassen Sie das Betriebssystem (oder in diesem Fall die Datenbank) das tun, wofür es entwickelt wurde.

Wenn Sie überprüfen möchten, ob SQL Ihre Suchdaten tatsächlich aus dem Cache liest, können Sie einen Auslastungstest starten und Sysinternals verwenden FileMon, Process Explorer Und Prozessmonitor um zu überprüfen, ob aus der 1-GB-Tabelle nicht gelesen wird.Aus diesem Grund legen wir unsere „Suchdaten“ manchmal in einer separaten Dateigruppe ab, damit der Zugriff auf sie auf der Festplatte sehr einfach überwacht werden kann.

Hoffe das hilft.

Andere Tipps

Sie werden einen Blick auf memcached werfen wollen.Das ist es, was viele große (und gut skalierte) Websites verwendet haben, um solche Probleme zu lösen.Wenn Sie über ein paar Ersatzserver verfügen, können Sie diese problemlos so einrichten, dass die meisten Ihrer Daten im Speicher bleiben.

http://en.wikipedia.org/wiki/Memcached

http://www.danga.com/memcached/

http://www.socialtext.net/memcached/

Nur um das Problem für SQL2005 und höher zu klären:

Diese Funktionalität wurde für die Leistung in SQL Server Version 6.5 eingeführt.DBCC Pintable hat hoch unerwünschte Nebenwirkungen.Dazu gehören das Potenzial, den Pufferpool zu beschädigen.DBCC Pintable ist nicht erforderlich und wurde entfernt, um zusätzliche Probleme zu vermeiden.Die Syntax für diesen Befehl funktioniert immer noch, wirkt sich jedoch nicht auf den Server aus.

DBCC PINTABLE pinnen eine Tabelle explizit im Kern an, wenn Sie sicherstellen möchten, dass sie zwischengespeichert bleibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top