Sybase NNTP forums - End Of Life (EOL)

The NNTP forums from Sybase - forums.sybase.com - are now closed.

All new questions should be directed to the appropriate forum at the SAP Community Network (SCN).

Individual products have links to the respective forums on SCN, or you can go to SCN and search for your product in the search box (upper right corner) to find your specific developer center.

Delete-Anweisung sehr langsam (bis zu 5 Stunden)

3 posts in iAnywhere General Discussion (German) Last posting was on 2005-04-13 13:50:42.0Z
Frank Schumann Posted on 2005-04-12 12:22:17.0Z
From: "Frank Schumann" <frankschumann@siemens.com>
Newsgroups: ianywhere.public.german.general
Subject: Delete-Anweisung sehr langsam (bis zu 5 Stunden)
Lines: 71
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1478
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1478
X-Original-NNTP-Posting-Host: dialin-145-254-167-040.arcor-ip.net
Message-ID: <425bbd75$1@forums-2-dub>
X-Original-Trace: 12 Apr 2005 05:22:13 -0800, dialin-145-254-167-040.arcor-ip.net
X-Original-NNTP-Posting-Host: forums-2-dub.sybase.com
X-Original-Trace: 12 Apr 2005 05:22:14 -0800, forums-2-dub.sybase.com
NNTP-Posting-Host: forums-master.sybase.com
X-Original-NNTP-Posting-Host: forums-master.sybase.com
Date: 12 Apr 2005 05:22:17 -0700
X-Trace: forums-1-dub 1113308537 10.22.108.75 (12 Apr 2005 05:22:17 -0700)
X-Original-Trace: 12 Apr 2005 05:22:17 -0700, forums-master.sybase.com
X-Authenticated-User: ngsysop
Path: forums-1-dub!not-for-mail
Xref: forums-1-dub ianywhere.public.german.general:127
Article PK: 959

Hallo alle zusammen,

Ich habe eine ASA 7.04 Datenbank mit 17 Tabellen (Produktioansdaten)

Der Aufbau ist ungefähr folgender:

1.. Tabelle AUFTRAG (1 Zeile je Auftrag)
2.. Tabelle REZEPT (Rezeptdaten zu dem Auftrag, also 1:1 zur Tabelle
AUFTRAG)
3.. Tabelle BATCH (Je Auftrag gibt es 1 - 200 Batche mit Daten, 1:n zur
Tabelle REZEPT)
4.. Tabelle IWB_SCHRITT (Jeder Batch besteht aus 1 bis 15 Schritte mit
entspr. Daten, 1:n zur Tabelle BATCH)
5.. Tabelle IWB_WAAGE (Jeder Batch hat max 8 Waagendaten, 1:n zur Tabelle
BATCH)
6.. Tabelle IWB_VERWIEGUNG (Jede Waage macht max. 8 Verwiegungen, 1:n zur
Tabelle IWB_WAAGE)
7.. Bis 17 schenk ich mir jetzt.
Wenn also beispielsweise ein Auftrag ausgeführt wird...

a.. wird 1Zeile in AUFTRAG eingefügt
b.. wird 1Zeile in REZEPT eingefügt
c.. werden bis zu 200 Zeilen in BATCH eingefügt
d.. werden bis zu 3000 Zeilen in IWB_SCHRITT eingefügt
e.. werden bis zu 1600 Zeilen in IWB_WAAGE eingefügt
f.. werden bis zu 12800 Zeilen in IWB_VERWIEGUNG eingefügt
g.. usw.
Es laufen ca. 10 bis 20 Aufträge pro Tag und Anlage. Ich habe bei einem
Kunden beispielsweise 10 Anlagen, wo ich dieses Auftrasvolumen täglich in
die Sybase-Datenbank abspeichere.

Nach ca. einem Monat ist die Datenbank 500 MB groß. Ich habe eine Batchdatei
erstellt, die...

den Datenbankdienst stoppt - die Datenbank sichert - dann werden alle Daten
die älter als 2 Wochen sind mir einer Delete-Anweisung gelöscht (somit
stehen immer mindestens 2 Wochen Daten für Onlineuntersuchungen zur
Verfügung) - dann wird der Datenbankdienst wieder gestartet - die normale
Produktionsdatenarchivierung (VB-Programm) läuft wieder an

Nun die Frage:

Alles funktioniert super, nur die Delete-Anweisung braucht ca.1 bis 5
Stunden (je nach DB-Größe/Anlage/PC-Speicher/Prozessor)!

Die Tabellen sind mit Fremdschlüsseln miteinander verbunden, die Tabellen
besitzen alle mindestens einen Primärschlüssel (AUFTRAG.AUFTRAGS_ID) und
maximal bis zu 5 Primärschlüssel
(IWB_VERWIEGUNG.AUFTRAGS_ID/REZEPT_CODE/BATCH_NR/WAAGEN_NR/VERWIEGENUMME),
Ferner besitzt jede Tabelle bis zu 2 Indexe.

Ist es normal, das das Löschen so lange dauert? Haben wir zu viele Indexe
oder Primärschlüssel?

Gibt es Tricks, damit das Löschen schneller geht?

Bisher hatten wir bei den Fremdschlüsseln kein "kaskadiertes Löschen" gehabt
und die Daten je Tabelle einzeln mit Delete-Anweisung gelöscht. Jetzt haben
wir nachträglich das "kaskadierte Löschen" aktiviert und brauchen nur noch
die Tabelle AUFTRAG zu löschen, die anderen Tabellen werden dann selbständig
korrekt gelöscht. Aber auch dieses brachte nicht den Erfolg, den wir uns
wünschen (ca.1 Stunde)

Ich hoffe die Frage ist nicht zu speziell. Über eine baldige Antwort freue
ich mich sehr!

Viele Grüße

Frank S.


"Markus Hofer" Posted on 2005-04-12 16:05:57.0Z
Reply-To: "Markus Hofer" <mh[(at)]smartsol.ch>
From: "Markus Hofer" <mh[(at)]smartsol.ch>
Newsgroups: ianywhere.public.german.general
References: <425bbd75$1@forums-2-dub>
Subject: Re: Delete-Anweisung sehr langsam (bis zu 5 Stunden)
Lines: 106
Organization: Smart Solutions AG
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1437
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441
NNTP-Posting-Host: 212.4.66.217
X-Original-NNTP-Posting-Host: 212.4.66.217
Message-ID: <425bf1e5@forums-1-dub>
Date: 12 Apr 2005 09:05:57 -0700
X-Trace: forums-1-dub 1113321957 212.4.66.217 (12 Apr 2005 09:05:57 -0700)
X-Original-Trace: 12 Apr 2005 09:05:57 -0700, 212.4.66.217
Path: forums-1-dub!not-for-mail
Xref: forums-1-dub ianywhere.public.german.general:128
Article PK: 960

Hallo Frank

Ein paar Ideen:

- Verwendest Du ein Log-File. Wenn nicht, verschenktst Du damit
Gratis-Performance.
- Hast Du den Plan schon mal untersucht? Werden die Indizes so verwendet wie
Du das erwartest?
- Löscht Du mit einem Statement? Die ganze Löschung geschieht so in einer
einzigen Transaktion
was meistens relativ ineffizient ist. Versuche die Daten in mehrern
Tranchen zu löschen und
diese jeweils einzeln zu committen.
- Ist evtl. Deine Harddisk fragmentiert? Dies könnte die Löschungen
ebenfalls stark verzögern.

Markus

---------------------------------------------------
Markus Hofer, dipl. Ing. ETH
Geschäftsführender Partner
Smart Solutions AG, Baarerstr.98, 6302 Zug, Schweiz
http://www.smart-solutions.ch
---------------------------------------------------

"Frank Schumann" <frankschumann@siemens.com> wrote in message
news:425bbd75$1@forums-2-dub...
> Hallo alle zusammen,
>
> Ich habe eine ASA 7.04 Datenbank mit 17 Tabellen (Produktioansdaten)
>
> Der Aufbau ist ungefähr folgender:
>
> 1.. Tabelle AUFTRAG (1 Zeile je Auftrag)
> 2.. Tabelle REZEPT (Rezeptdaten zu dem Auftrag, also 1:1 zur Tabelle
> AUFTRAG)
> 3.. Tabelle BATCH (Je Auftrag gibt es 1 - 200 Batche mit Daten, 1:n zur
> Tabelle REZEPT)
> 4.. Tabelle IWB_SCHRITT (Jeder Batch besteht aus 1 bis 15 Schritte mit
> entspr. Daten, 1:n zur Tabelle BATCH)
> 5.. Tabelle IWB_WAAGE (Jeder Batch hat max 8 Waagendaten, 1:n zur
Tabelle
> BATCH)
> 6.. Tabelle IWB_VERWIEGUNG (Jede Waage macht max. 8 Verwiegungen, 1:n
zur
> Tabelle IWB_WAAGE)
> 7.. Bis 17 schenk ich mir jetzt.
> Wenn also beispielsweise ein Auftrag ausgeführt wird...
>
> a.. wird 1Zeile in AUFTRAG eingefügt
> b.. wird 1Zeile in REZEPT eingefügt
> c.. werden bis zu 200 Zeilen in BATCH eingefügt
> d.. werden bis zu 3000 Zeilen in IWB_SCHRITT eingefügt
> e.. werden bis zu 1600 Zeilen in IWB_WAAGE eingefügt
> f.. werden bis zu 12800 Zeilen in IWB_VERWIEGUNG eingefügt
> g.. usw.
> Es laufen ca. 10 bis 20 Aufträge pro Tag und Anlage. Ich habe bei einem
> Kunden beispielsweise 10 Anlagen, wo ich dieses Auftrasvolumen täglich in
> die Sybase-Datenbank abspeichere.
>
> Nach ca. einem Monat ist die Datenbank 500 MB groß. Ich habe eine
Batchdatei
> erstellt, die...
>
> den Datenbankdienst stoppt - die Datenbank sichert - dann werden alle
Daten
> die älter als 2 Wochen sind mir einer Delete-Anweisung gelöscht (somit
> stehen immer mindestens 2 Wochen Daten für Onlineuntersuchungen zur
> Verfügung) - dann wird der Datenbankdienst wieder gestartet - die normale
> Produktionsdatenarchivierung (VB-Programm) läuft wieder an
>
> Nun die Frage:
>
> Alles funktioniert super, nur die Delete-Anweisung braucht ca.1 bis 5
> Stunden (je nach DB-Größe/Anlage/PC-Speicher/Prozessor)!
>
> Die Tabellen sind mit Fremdschlüsseln miteinander verbunden, die Tabellen
> besitzen alle mindestens einen Primärschlüssel (AUFTRAG.AUFTRAGS_ID) und
> maximal bis zu 5 Primärschlüssel
> (IWB_VERWIEGUNG.AUFTRAGS_ID/REZEPT_CODE/BATCH_NR/WAAGEN_NR/VERWIEGENUMME),
> Ferner besitzt jede Tabelle bis zu 2 Indexe.
>
> Ist es normal, das das Löschen so lange dauert? Haben wir zu viele Indexe
> oder Primärschlüssel?
>
> Gibt es Tricks, damit das Löschen schneller geht?
>
> Bisher hatten wir bei den Fremdschlüsseln kein "kaskadiertes Löschen"
gehabt
> und die Daten je Tabelle einzeln mit Delete-Anweisung gelöscht. Jetzt
haben
> wir nachträglich das "kaskadierte Löschen" aktiviert und brauchen nur noch
> die Tabelle AUFTRAG zu löschen, die anderen Tabellen werden dann
selbständig
> korrekt gelöscht. Aber auch dieses brachte nicht den Erfolg, den wir uns
> wünschen (ca.1 Stunde)
>
> Ich hoffe die Frage ist nicht zu speziell. Über eine baldige Antwort freue
> ich mich sehr!
>
> Viele Grüße
>
> Frank S.
>
>


Oliver Albrecht Posted on 2005-04-13 13:50:42.0Z
From: Oliver Albrecht <NOSP_O.Albrecht@Oliver-Albrecht.de>
Subject: Re: Delete-Anweisung sehr langsam (bis zu 5 Stunden)
Newsgroups: ianywhere.public.german.general
User-Agent: 40tude_Dialog/2.0.15.1de
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
Organization: Albrecht Software Solutions
References: <425bbd75$1@forums-2-dub> <425bf1e5@forums-1-dub>
Message-ID: <14zrn7tu1oxfr.uqrky6ku1jan.dlg@40tude.net>
X-Original-NNTP-Posting-Host: 217.5.221.2
X-Original-Trace: 13 Apr 2005 06:50:38 -0800, 217.5.221.2
Lines: 28
X-Original-NNTP-Posting-Host: forums-2-dub.sybase.com
X-Original-Trace: 13 Apr 2005 06:50:41 -0700, forums-2-dub.sybase.com
NNTP-Posting-Host: forums-master.sybase.com
X-Original-NNTP-Posting-Host: forums-master.sybase.com
Date: 13 Apr 2005 06:50:42 -0700
X-Trace: forums-1-dub 1113400242 10.22.108.75 (13 Apr 2005 06:50:42 -0700)
X-Original-Trace: 13 Apr 2005 06:50:42 -0700, forums-master.sybase.com
X-Authenticated-User: ngsysop
Path: forums-1-dub!not-for-mail
Xref: forums-1-dub ianywhere.public.german.general:129
Article PK: 961

On 12 Apr 2005 09:05:57 -0700, Markus Hofer wrote:

Hallo Frank,

zusätzlich zu dem was Markus gesagt hat:

Wir haben ein änliches Szenario (Katalog mit Artikeln, Bildern,
Texten, usw.), bei uns hat es geholfen, die
Daten "rückwärts" von Hand zu löschen. Also zuerst in untersten
Tabelle alle betroffenen Datensätze mit einem Statement löschen,
dann in der nächsten, und so weiter. Und nach jedem löschen ein
Commit zu machen. Einzige Herausforderung ist dann nur noch die
zu löschenden Daten zu ermitteln, falls ihr nicht in jeder
Tabelle den Primary Key des Auftrags mitführt.

Statt zwei Stunden dauert das Löschen eines Kataloges nur noch
zwischen 5 und 15 Minuten (je nach Rechner).

mfg

Oliver Albrecht
Albrecht Software Solutions

Remove the nosp_ from the address before e-mailing.

--
Programmers don't die!
They just GOSUB without RETURN...