24. Juli 2008 12:51
Hallo Gemeinde,
vor ein paar Jahren hat mir ein selbsternannter Navision-Spezialist mal erzählt, daß man in einer C/SIDE-Datenbank bei den Schlüsseln bestimmte (SQL-)Properties deaktivieren könne. Das spare Platz und bringe Performance.
Ich konnte es damals nicht gleich testen, da ich keine geeignete Test-DB hatte. Später habe ich dann festgestellt, daß sich weder beim Platzbedarf noch bei der Performance Vorteile ergaben.
Habe ich möglicherweise nicht die richtigen Properties angefasst? Oder hat mir der Spezialst Blödsinn erzählt?
Gibt es bei den Keys Eigenschaften, die ich deaktivieren kann?
Key-Grüße,
JürgenT
25. Juli 2008 09:15
Hi!
Ja, es gibt schon Properties bei den "Keys" die für SQL relevant sind - für native C/SIDE aber nicht, es ist deshalb Quatsch zu behaupten, die "Deaktivierung (???) dieser SQL Properties" hätte auch nur irgendeine Auswirkung auf den nativen Server ...
Mit SQL Server ist folgendes zu beachten:
1. "Key" definiert nur die Sortierung (ORDER BY)
2. In "standard" NAV ist "KEy" die Vorlage für den SQL Index, diese werden UNIQUE aufgebaut und der PK Anteil wird angehängt - das ist aus SQL Sicht ziemlich schlecht ...
3. "SQL Index" überschreibt diese standard Index Definition; d.h. hier kann der Index abweichend vom Key angegeben werden. Dazu gäbe es einiges zu sagen (Selektivität, B-Tree Size, Füllfaktoren, etc.) - eine präzise Optimierung kann aber nur individuell erfolgen. Was man MINDESTENS tun sollte (bei großen und/oder wichtigen Tabellen mit vielen Indexen), ist den Inhalt von "Key" nach "SQL Index" kopieren. Die Indexe werden dann nicht mehr UNIQUE und ohne PK Anteile aufgebaut (Ausnahne PK, eh klar). Die Indexe werden dadurch kleiner und erzeugen weniger I/O.
4. "MaintainSQLIndex" gibt an ob überhaupt ein SQL Index aufgebaut werden soll. Ist der Wert FALSE, dann kann der "Key" immer noch in C/AL & C/SIDE verwendet werden, aber es gibt dafür keinen Index im SQL Server was wieder die Last auf dem Server reduziert. Indexe zu deaktiviern setzt aber voraus, dass man zu 100% weiß ob der Index benötigt wird oder nicht, andernfalls kann man sich dadurch erhebliche Probleme erzeugen! Von NAV Seite lässt sich die tatsächliche Index Nutzung NICHT vorhersehen! Eine empirische Auswertung kann nur mit entsprechenden SQL Tools erfolgen, die auf einem bestimmten DMV basieren ...
Hoffe das hilft ein wenig!
Schöne Grüße,
Jörg