Erstellen eines Index für eine sehr ausgelastete Tabelle

11

Wir haben eine Tabelle mit viel von insert\selectjeder Zeit (wie 100 Maschinen, die jede Sekunde einfügen \ aktualisieren).

Was ist der beste Weg, um einen Index für eine Tabelle zu erstellen, die nicht einmal für eine Sekunde gesperrt werden kann?

Wenn ich den Index erstelle, werden die Anforderungen sicher gesperrt, und ich kann es nicht tun.

Es ist eine große Tabelle mit 1 Million Zeilen +.

Racer SQL
quelle

Antworten:

12

Es gibt keine Option wie CREATE INDEX WITH (NOLOCK)(und selbst NOLOCKbei einer Abfrage werden Sperren ausgeführt, nur weniger als ohne den Hinweis).

Das Beste, was Sie tun werden, ist WITH (ONLINE = ON), dass zu Beginn und am Ende des Vorgangs immer noch Sperren erforderlich sind (beide beziehen sich auf das Neukompilieren von Plänen in Bezug auf die Tabelle - weitere Informationen finden Sie in diesem Blog-Beitrag von Paul Randal ).

Dadurch werden die Auswirkungen der Erstellung des Index auf Ihre Anwendungen erheblich verringert. Es gibt jedoch keine praktische Möglichkeit, diese Auswirkungen vollständig zu beseitigen. Diese Funktion ist auch nicht kostenlos: Sie erfordert Enterprise Edition.

Aaron Bertrand
quelle