index-controlled to table-controlled partitioning
- Dieses Thema hat 3 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 12 Jahren, 11 Monaten von
Anonym.
-
AuthorPosts
-
17. Dezember 2010 um 13:24 Uhr #4114
AnonymInaktivHallo zusammen,
wir haben eine Tabelle die rund um die Uhr im Zugriff durch Online und Batch ist. Nur am Wochenende können wir mal für 1-2 Stunden Maximum die Tabelle für UPDATE-Zugriffe sperren. Read-Zugriffe würde wir gerne weiterhin ermöglichen.
Die Tabelle enthält ca. 50 Mio rows, 3 Indices und hat eine rowlength von ca. 100 Byte.
Diese Tabelle ist partitioniert und auch schon seit vielen Jahren angelegt. Ein Versuch einen UPDATE-SQL auf die Tabelle zu binden oder auszuführen führt zu einem SQLCODE -151, der diese verbietet. Die Tabelle wurde vermutlich zu DB2 V6-Zeiten angelegt. Ein Drop des partitioning indexes damit die Tabelle automatisch table-partitioned wird, funktioniert leider nicht!
Diese Tabelle würden wir gerne renovieren, soll bedeutet zu einer table-partitioned table machen.
Dies soll möglichst schnell und unauffällig passieren.
Wie kann das gehen? Ich mache mal einen Vorschlag und ihr sagt mir dann, wie man es besser bzw schneller machen kann.1. Anlegen der neuen table-partitioned table table-neu mitÂ
  allen indices etc.
2. alten tablespace der table-alt in status ReadOnly setzen
3. paralleler UNLOAD (DSNTIAUL degree any oder UNLOAD)
4. paralleler load,runstats,icopy für table-neu
5. rename table-alt in table-alt1 (geht das in ReadOnly ?)
6. rename table-neu in table-altGeht das so?
Was für Möglichkeiten gibt es zu verbessern?
Wie lange sollte soetwas ca. laufen?besten Dank für euer Mitdenken im Voraus.
Gruß Klaus
17. Dezember 2010 um 20:16 Uhr #4264
AnonymInaktivHi Klaus,
für das Umladen in eine Tabelle mit neuer Organisationsform kann ich LOAD from CURSOR (‚Cross Loader‘) empfehlen, Runstats gleich dazupacken. Die 50 Mio Rows sollten in 10 Minuten umgeladen worden sein. Hängt natürlich von MIPS und Last der Maschine ab.
Ähm, von welcher DB2 Version reden wir gerade? [Vielleicht gibt’s ja noch andere Optionen?!]
Gruß
Gernot
21. Dezember 2010 um 8:46 Uhr #4373
AnonymInaktivHallo Gernot,
danke für den Hinweis. Den Cross Loader habe ich schon verwendet. Aber eigentlich immer um die Daten einer Location in die Tabelle einer anderen location zu laden.
Der Performance-Vorteil innerhalb einer Location war mir nicht klar.
Gruß Klaus
Zu deiner Frage: Wir habe DB2-Version 9.
22. Dezember 2010 um 16:55 Uhr #4449
AnonymInaktivHast Du schon mal sowas wie
ALTER INDEX ( Name des clustering Index ) CLUSTER NO ;
probiert ?
Du musst allerdings grundsätzlich bei der Umstellung von Index- auf tablecontrolled partitioning aufpassen, weil bei indexcontrolled partitionierung die Obergrenze der obersten Partition ignoriert wird, aber nicht bei tablecontrolled.
Wird durch so einen Befehl wie ALTER INDEX … CLUSTER NO die Kontrolle umgestellt, dann wird die Obergrenze der letzen Partition automatisch auf HIGHVALUE gesetzt.
-
AuthorPosts
You must be logged in to reply to this topic.