database-Caching

Ich habe Windows server 2008 r2 mit Microsoft SQL server installiert.

In meiner Bewerbung entwerfe ich derzeit ein Tool für meine Benutzer, das ist die Abfrage der database zu sehen, wenn Benutzer irgendwelche notifications hat. Da meine Benutzer in einer kurzen timespanne mehrmals auf die Applikation zugreifen können, dachte ich daran, irgendeine Art von Cache auf meine Abfragelogik zu stellen. Aber dann dachte ich, dass mein ms sql server das wohl schon für mich tut. Habe ich recht? Oder muss ich etwas konfigurieren, um es zu machen? Wenn es tut, dann, wie lange hält es den Cache auf?

Es ist sicher zu vermuten, dass MSSQL wird das Caching gut ausgearbeitet ziemlich gut =) Machen Sie sich nicht die Mühe zu versuchen, etwas selbst oben auf sie zu build, stellen Sie einfach sicher, dass die Methode, die Sie verwenden, um für Änderungen abzufragen ist effizient (zB nicht Abfrage auf nicht indizierte Spalten).

PS: würde nicht Caching lokal besiegen den gesamten Zweck der Überprüfung für Änderungen an der database?

Intern die database macht alle möglichen Dinge, einschließlich 'Caching', aber zu jeder time funktioniert es unglaublich schwer, um sicherzustellen, dass Ihre Benutzer aktuelle data sehen. So muss es jedes Mal etwas Arbeit machen, wenn Ihre Bewerbung eine Anfrage stellt.

Wenn du die Arbeitsbelastung reduzieren möchtest, indem du statice data in deiner Anwendung beibehältest, dann musst du es selbst implementieren.

Die späteren Versionen des .net Frameworks haben Caching-Features eingebaut, so dass Sie einen Blick auf diejenigen (Gebäude Ihre eigenen Caching kann sehr komplex).

SQL server behandelt Caching für Sie, ja. Wenn Sie eine Abfrage oder eine gespeicherte Prozedur erstellen, wird SQL server diesen Ausführungsplan zwischenspeichern und entsprechend wiederverwenden. Von MSDN :

SQL server-Ausführungspläne haben die folgenden Hauptkomponenten: Abfrageplan Der Großteil des Ausführungsplans ist eine re-entrant, read-only datastruktur, die von einer beliebigen Anzahl von Benutzern verwendet wird. Dies wird als Abfrageplan bezeichnet. Im Abfrageplan wird kein Benutzerkontext gespeichert. Es gibt nie mehr als ein oder zwei Kopien des Abfrageplans im memory: eine Kopie für alle seriellen Ausführungen und eine andere für alle parallelen Ausführungen. Die parallele Kopie deckt alle parallelen Ausführungen ab, unabhängig von ihrem Parallelitätsgrad.

Ausführungskontext, jeder Benutzer, der gerade die Abfrage ausführt, hat eine datastruktur, die die für ihre Ausführung spezifischen data wie Parameterwerte enthält. Diese datastruktur wird als Ausführungskontext bezeichnet. Die Ausführungskontextdatenstrukturen werden wiederverwendet. Wenn ein Benutzer eine Abfrage ausführt und eine der Strukturen nicht verwendet wird, wird sie mit dem Kontext für den neuen Benutzer neu initialisiert.

Wenn du diesen Cache sp_recompile DBCC FREEPROCHCACHE du sp_recompile oder DBCC FREEPROCHCACHE