Frage

Ich habe eine Referenzcodetabelle, aus der nur während des normalen Gebrauchs gelesen wird und die nur für Produktänderungen (monatlich) aktualisiert werden sollte.

Welche Tabellensperre sollte ich in der Anweisung create table verwenden?

Ich habe ALLPAGES angenommen, da dadurch die Gesamtzahl der Lesesperren, die ASE verwalten muss, niedrig bleibt.Aber ich bekomme andere "Ratschläge" von einem anderen Entwickler für das Projekt.

Ich sehe andere Referenztabellen in der fraglichen Datenbank, die ALLPAGES verwenden.aber sie wurden von 12.5 aktualisiert, es kann nur ein Überbleibsel von dem sein, was damals verfügbar war.

Die Tabelle ist nicht sehr breit, sie enthält zwei ID-Spalten mit numerischem Code, eine char (1) -Spalte, und ist auf den beiden numerischen Codes gruppiert.

War es hilfreich?

Lösung

Ich habe nur eine offensichtliche Antwort - führen Sie zuerst sp_object_stats aus und wählen Sie das Sperrschema.

Andere Tipps

Wenn die Referenztabelle nur zum Lesen dient, ist das Sperren aller Seiten am besten, da die geringste Anzahl von Sperren (wie Sie sagten) erforderlich ist und kein Konflikt mit freigegebenen Sperren besteht, die die Prozesse beim Lesen von Daten erfassen.

Nur um Ihnen einen zusätzlichen Tipp zur Leistung zu geben: Versuchen Sie immer, eine Referenztabelle über eine zusammengehörige Unterabfrage zu verwenden, um den Vorteil des Zwischenabfrage-Caching zu nutzen.Denken Sie auch daran, dass das Zwischenspeichern von Unterabfragen nur stattfindet, wenn die Unterabfrage vom Optimierer nicht reduziert und nicht wieder in einen regulären Join konvertiert wurde.Der Trick, um sicherzustellen, dass die Unterabfrage nicht reduziert wird, besteht darin, eine Aggregatfunktion zu verwenden, z. B. max (attr) für das Attribut.Die Max-Funktion ist nur ein Dummy ohne "Gruppieren nach".

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