Ich arbeite mit einer Unternehmensanwendung und habe einige Tipps für das DB-Design
erhaltenLastChangedBy
, LastChanged
, LastChangedPage
bDebug
haben. Standardmäßig ist es auf 0 gesetzt. Wenn es auf 1 gesetzt ist, drucken Sie die dynamische SQL-Anweisung aus, und das wird beim Debuggen sehr hilfreich sein. Irgendwelche anderen nützlichen Tipps, die Sie sich vorstellen können?
EDIT: Danke für alle Antworten. Ich bin immer noch auf der Suche nach einer Antwort, die einen Link zu Tipps / Tricks / Strategien für DB Design geben kann.
Für # 1: Wechseln Sie zu SQL Server 2008 und aktivieren Sie nur Datenerfassung ändern. Wenn Sie wirklich detaillierte Audit-Trails benötigen, wird diese Funktion allein die Kosten rechtfertigen.
Für # 2: Jede gespeicherte Prozedur mit dynamischem sql sollte automatisch auf eine doppelte geheime Probezeit gesetzt werden (dh: es ist erlaubt, muss aber mehrere Stufen der Code-Überprüfung durchlaufen, um sicherzustellen, dass es keinen besseren Weg gibt, dies zu tun).
Wenn es um die Macht des Internets geht, ist es besser, nichts zu löschen. Daher können Sie mit einem deletedOn-Datum nur solche Objekte ausschließen, die von Ihren Suchen "gelöscht" wurden. Dies hilft auch verzweifelten Kunden, die versehentlich ihren Account gelöscht haben. Offensichtlich sollte dies nicht in jedem Bereich verwendet werden.
LastChangedBy usw. Felder sind ziemlich nutzlos. Wenn Sie wirklich einen Audit-Trail benötigen, benötigen Sie separate Audit-Tabellen, die die Änderungen detailliert darstellen und ein Audit-Protokoll führen. Wenn Sie keinen Audit-Trail benötigen, werden die Felder "LastChangedBy" und "LastChangedBy" nur hinzugefügt, um einen Geschäftswert zu vermeiden.
Ein paar Gedanken, die einem sofort in den Sinn kommen, wenn man mit einer sehr großen Datenbank (VLDB) arbeitet:
Soll die Tabellenpartitionierung implementiert werden?
Große Datenbanktabellen mit Millionen von Datensätzen können von der Tabellenpartitionierung profitieren.
Was sind meine am häufigsten verwendeten Tabellen?
Ziehen Sie die Trennung nach Dateigruppe in Betracht, d. h. legen Sie die Tabelle Customer auf einer Dateigruppe und die Tabelle Transaktion auf einer anderen. Dadurch kann SQL Server mehrere Threads für den Dateizugriff erstellen, wodurch die Möglichkeit für sequenzielle E / A geschaffen wird.
Betrachten Sie anschließend die zugrundeliegende physische Festplattenstruktur, d. h. eine separate LUN für jede Dateigruppe.
Entwickeln Sie eine flexible Indexierungsstrategie
Sie werden zweifellos bereits eine Indexierungsstrategie im Auge haben, aber für VLDB-Plattformen sollte dies häufig überprüft werden. Wenn sich das Datenvolumen erhöht und sich die Datenverteilung ändert, können die Ausführungspläne für Ihren Datenzugriff Abfragen ausführen. Sie sollten planen, Ihre Indexierungsstrategie regelmäßig zu überprüfen.
Tags und Links sql-server sql-server-2005