High Reads bei Insert into statement

19. Oktober 2010 11:41

Hallo Gemeinde,

ich hätte mal eine Frage.

Warum wird bei einem insert into Statement (INSERT INTO XXX.$Value Entry) ein Read von 23522 ausgeführt (die Duration liegt bei 48,CPU bei 63, Writes bei 119)?
Liegt dies an vielen Indizes (Die Tabelle 5802 enhält 21 Schlüssel und 9 davon haben VSIFT mit einer Tiefe von 2 - 15 SIFT Feldern) oder einfach an einem fehlenden / falschen Excecution Plan?

Alles gemessen mit dem SQL Profiler

Re: High Reads bei Insert into statement

19. Oktober 2010 11:50

Welche NAV- Version hast du denn?

Vor 5.x hat das System noch mit SIFT-Tabellen gearbeitet. Diese Tabellen mussten gepflegt werden, und da war schon einiges an Bewegung. Ich würde in diesem Fall deiner Vermutung schon zustimmen. Da der SQL-Server für jeden SIFT-Level Einträge Datensätze in die Tabelle einfügen und berechnen muss. Abhilfe schafft hier nur ein technisches Update auf 5.1 oder später oder das Abschalten einzelner SIFT-Level .

Gruß, Fiddi

Re: High Reads bei Insert into statement

19. Oktober 2010 12:26

Hallo Fiddi,

wir nutzen 6.00.30232

Re: High Reads bei Insert into statement

21. Oktober 2010 17:44

mhm, d.h. also an den vielen Indizes?

Re: High Reads bei Insert into statement

22. Oktober 2010 09:44

Ja, beim INSERT müssen alle 21 Indexe und 9 VSIFT aktualisiert werden (= "Cost per record" 1:30).
Hinzu kommt die Last, wenn "Auto. Update Stats" aktiviert ist, und somit die Statistiken auch aktualisiert werden (ich glaube das wird bei den Read/Writes mit eingerechnet!?).

D.h. um die Reads zu reduzieren müsste man z.B. ungenutzte Indexe deaktivieren; siehe dazu:
http://dynamicsuser.net/blogs/stryk/archive/2010/05/20/directions-emea-2010-nav-sql-performance-indexes.aspx

Schöne Grüße,
Jörg

Re: High Reads bei Insert into statement

22. Oktober 2010 15:22

Supi, danke. Genau was ich "befürchtet" habe. Die autoupdateStat hab ich deaktiviert. Das macht ein abendlicher Job.
Aber nicht sp_updatestats / sp_createstats <- da diese alste StoredProc. nicht die indizes von Views aktuallisiert. Daher nutz ich den Maint. Wizard. Dort kann man auch alles einstellen.

Ich werd mal die Statistiken zu den Indizes durchsehen, wie oft ein Index verwendet wurde und wo er verwendet wird (meist calcfields).
Da wo der Indize def. nirgends gebraucht wird (bei unseren neuen Schlüsseln, sondern nur die Sifts, werd ich MaintSQLIndex deaktivieren, da für die Calcfields nur die VSIFTS benötigt werden und der SQL Index im Prinzip überflüssiger Ballast ist (sofern nicht i.wo. benötigt).

Passiert natürlich alles auf der Testbüchse ......