Primary-Key ohne RI
- Dieses Thema hat 3 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 18 Jahre, 4 Monaten vonMitglied.
- AuthorPosts
- 2. Februar 2005 um 9:03 Uhr #2506
Liebe Leute,
wir haben eine umfangreiche DB auf OS390 und kein RI definiert.
Wir haben aber jede Tabelle mit einem PK und entsprechendem UI versehen. Nun geht das Gerücht, daß man ohne die Definition des PK bei UPDATES/INSERTS performanter arbeitet (und das wäre für uns gerade im Batch sehr wichtig).
Stimmt das und woran hängt´s ?!
Danke
Rodi602. Februar 2005 um 10:13 Uhr #2966Rein theoretisch könnte ich mir vorstellen, dass -wenn ein primary key definiert ist – DB2 bei DELETE einer Zeile oder bei UPDATE des primary keys in seinen Systemtabellen nachschaut, ob  es abhängige Tabellen auf RI-Verstosse zu prüfen gilt.
Habe gerade ein paar Tests gemacht, aber keinen einzigen zusätzlichen GETPAGE festgestellt. Daher halte ich diese Aussage wirklich für ein Gerücht.
Bei einem INSERT sollte PK ja grundsätzlich nicht interessieren (weil keine RI-Verstösse auftreten können).
[edit] Nachtrag: Mir ist jedoch einmal aufgefallen, dass, wenn ein ALTER TABLE ADD PRIMARY KEY gemacht wird, alle Packages invalidiert werden, die auf diese Tabelle zugreifen, selbst wenn nur ein primary key definiert wurde, aber keine RI. Den Grund habe ich aber nicht herausgefunden [/edit]
2. Februar 2005 um 14:02 Uhr #3290Hi,
den Test, ob das Gerücht stimmt, kann man doch leicht und ohne Gefahr machen: Einen Batch-Lauf mit PK und UI und einen zweiten Batch-Lauf ohne PK, aber mit UI. Dank UI kann es doch zu keiner Verletzung der entity integrity kommen. – Ich wüßte aber auch nicht, wo da entscheidende Performance-Unterschiede auftreten sollten. Interessant wär der Versuch allerdings doch.
Wenn man einen PK nachdefiniert, so ist im allgemeinen die Definition eines UI damit verbunden. Daher könnte das Invalidieren der Packages resultieren. Oder geschieht dies auch, wenn der genutzte UI schon länger existiert?
MfG
AxelP
3. Februar 2005 um 7:38 Uhr #3500Das Verhalten, dass ADD PRIMARY KEY zur Invalidation von Packages führt, war in V6 irgendwo in der IBM-Literatur beschrieben. Kann mich noch daran erinnern, dass ich die möglichen Gründe damals mit Hr. Denne diskutiert habe. Lt. V7-Literatur werden Packages nur noch invalidiert, wenn tatsächlich RI’s definiert werden.
CREATE UNIQUE INDEX führt m.E. nicht zu einer Invalidation von Packages.
- AuthorPosts
You must be logged in to reply to this topic.