Löscht Daten, die nicht mehr benötigt werden, weil sie entweder nicht mehr referenziert werden oder weil es sich um historische Daten handelt, deren „Aufbewahrungszeitraum abgelaufen“ ist.
Hinweis:
Aus Performancegründen sollte diese Prozedur nicht zu oft oder bei hoher Last aufgerufen werden ! Im Regelfall implementiert man einen täglichen Job („dstore“-Datenbank : Prozedur „sp_CronjobsDaily“), der diese Prozedur aufgeruft.
Anmerkung zum Parameter „CheckForCorrectDate“ :
Vor dem Löschen wird überprüft, wann die Prozedur das letzte mal angestoßen wurde (das steht in „BatchJobs“). Bei einer zu großen Differenz zum letzten Aufruf (siehe „Settings“-Eintrag zum Schlüssel „MaxDaysAllowedBetweenGarbageCollect“) wird davon ausgegangen, daß das aktuelle Server-Datum nicht stimmt, so daß die Prozedur abbricht - um nicht fälschlicherweise z.B. sämtliche historischen Daten zu löschen !
Gelöscht werden Datensätze aus derzeit folgenden Tabellen - in Klammern unter dem Tabellennamen ist angegeben, auf welcher Grundlage die Prozedur die Daten löscht :
(„Settings“, Schlüssel „MaxDaysInActions“)
(„Settings“, Schlüssel „MaxMonthsInBillsAndOrders“)
(Nicht mehr referenzierte „BinaryCodeID“s werden gelöscht, Referenz-Tabellen : „NodePresentations“, „BinariesForValues“, „BinariesForPersons“, „AuctionItems“)
(Nicht mehr in „BinaryProperties“ referenzierte „ValueID“s werden gelöscht, allerdings nur zu „BinaryCharacteristicID“s mit „PredefinedValues = 0“ !)
(„Settings“, Schlüssel „MaxDaysInDailyCharacteristicNos_PH“)
(Nicht mehr referenzierte „DateIntervallID“s bzw. „TimeIntervallID“s werden gelöscht, Referenz-Tabellen : „HistoryTreeView“, „UnitConverts“, „ValidRules“, „NodePresentations“, „TemplateUsage“)
(„Settings“, Schlüssel „MaxDaysInDSS_StatisticData“)
(„ForumSettings“, Schlüssel „KeepPostingsInDays“ und „PostingDeletionOptions“)
(„ForumSettings“, Schlüssel „KeepForumStatisticsInDays“)
(„LockCriteriaValue“-Werte zu „RatingSubjectID“s werden gelöscht, wenn die durch „LockPeriodInMinutes“ in „RatingSubjects“ konfigurierte Zeit abgelaufen ist)
(„CommunitySettings“, Schlüssel „sys_KeepMessagesInDays“)
(Datensätze zu Elemente, die gelöscht sind („Deleted = 1“ in „TreeView“)
(„KeepPropertiesHistoryInHours“ in „NodeCharacteristics“)
(„CommunitySettings“, Schlüssel „sys_KeepOnlineTimeStatisticsInDays“)
(„Settings“, Schlüssel „MaxMonthsInBillsAndOrders“)
(„Settings“, Schlüssel „MaxNumberOfRowsInPerformance“)
(Einstellungen in „PeriodsToKeepStatistics“)
(Einstellungen in „PeriodsToKeepStatistics“)
(„KeepPropertiesHistoryInDays“ in „PersonCharacsInCategories“)
(Abstimmungen zu „RatingSubjects“ werden gelöscht, wenn die durch „KeepRatingsInHours“ in „RatingSubjects“ konfigurierte Zeit abgelaufen ist)
(Abstimmungs-Statistiken zu „RatingSubjects“ werden gelöscht, wenn die durch „KeepRatingStatisticsInDays“ in „RatingSubjects“ konfigurierte Zeit abgelaufen ist)
(„ForumSettings“, Schlüssel „HoursAfterPostingsAreRegardedAsRead“)
(Alle Datensätze zu nicht mehr in „ForumPostings“ referenzierten „PostingID“s)
(Einstellungen in „PeriodsToKeepStatistics“)
(Einstellungen in „PeriodsToKeepStatistics“)
(Einstellungen in „PeriodsToKeepStatistics“)
(„Settings“, Schlüssel „HoursItemsRemainInTrolley“)
(„CommunitySettings“, Schlüssel „sys_KeepUsersOnlineTimeInDays“)
(„Settings“, Schlüssel „MaxDaysInVisitorInformation“)
(Alle Datensätze, deren „VisitDateAndTime“ länger als 1800 Sekunden (= 30 Minuten) her ist)
Außerdem werden (durch die Aufrufe der internen Prozeduren „_im_DeleteInactiveProducts“ und „_im_DeleteHistoryTreeNodes“) Daten aus „HistoryTreeView“, „TreeView“ und „dStore“, „NodeCharacteristicValues“ und „DateIntervalls“ gelöscht. Zunächst werden (mit „_im_DeleteInactiveProducts“) inaktive Produkte/Varianten, bei denen länger keinerlei Datenänderung stattfand (s. „Settings“-Eintrag „DeleteInactiveProductsWithoutDataUpdateInXDays“), als „gelöscht markiert“. Anschließend löscht „_im_DeleteHistoryTreeNodes“ dann tatsächlich (i.S.v. „wirklich entfernen“) „HTreeNodeID“s und damit verbunden andere (z.B. weil nicht mehr referenzierte) Daten aus den genannten Tabellen, die NICHT mehr gültig sind. Allerdings werden natürlich KEINE statistik- bzw. auftragsrelevanten Elemente gelöscht. Grundlage für die Feststellung, wann eine „HTreeNodeID“ tatsächlich aus der Tabelle gelöscht werden kann, ergibt sich aus dem größten Wert der beiden Zahlen „MaxMonthsInBillsAndOrders“ (in Tagen umgerechnet, also mit 31 multipliziert) aus „Settings“ sowie der gößten Zahl „KeepStatistics“ (ebenfalls in Tagen umgerechnet, also evtl. mit 7 bzw. 31 multipliziert) aus der Tabelle „PeriodsToKeepStatistics“.
HTTP-Method | POST |
HTTP-Auth | Optional |
Tags | |
Engine-Kategorie | system administration |
Engine-Typ | Daten-Änderung |
Letzte Aktualisierung | 7.0.7 (2015-01-29) |
Name 1) | Standard-Wert | Beschreibung 2) | SQL-Datentyp3) | ab Version |
---|---|---|---|---|
CheckForCorrectDate | 1 | Falls auf „1“ gesetzt, wird vor dem Löschen von Daten geprüft, ob das aktuelle Serverdatum nicht zu weit (siehe „Settings“-Eintrag zum Schlüssel „MaxDaysAllowedBetweenGarbageCollect“) vom letzen Aufruf des „Garbage-Collectors“ abweicht | bit | 3.5.4 |
Die Prozedur hat keine Rückgaben.
Die Prozedur hat keine Output-Parameter.
Code | Beschreibung | Quelle 4) |
---|---|---|
-856 | Fehlerhafte Daten in „MainPostingSorting“ | nur indirekt |
-855 | Fehlerhafte Konfiguration des Sortier-Kriteriums | nur indirekt |
-850 | Sortier-Kriterium nicht definiert oder inaktiv oder nicht verwendbar | nur indirekt |
-840 | Posting kann nicht bearbeitet werden, weil es bereits von einem anderen Prozess bearbeitet wird | nur indirekt |
-621 | Fehlender oder falscher Eintrag in PersonTypeSettings | nur indirekt |
-599 | Lizenz ist ungültig oder abgelaufen | nur indirekt |
-572 | Die Prozedur darf nur innerhalb einer Transaktion ausgeführt werden | nur indirekt |
-569 | Der Benutzer hat kein Ausführungsrecht für die Prozedur | nur indirekt |
-567 | Die Prozedur darf z. Zt. nicht ausgeführt werden | nur indirekt |
-566 | Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werden | nur indirekt |
-565 | Die „Objekt-ID“ der Prozedur konnte nicht ermittelt werden | nur indirekt |
-564 | Der Status in BatchJobs konnte nicht gesetzt werden | nur indirekt |
-562 | Die Prozedur ist nicht in BatchJobs registriert | nur indirekt |
-560 | Prozedur konnte nicht gestartet werden | direkt und indirekt |
-550 | Fehlender oder falscher Eintrag in Settings | nur indirekt |
-535 | Das Datum liegt nicht in der Vergangenheit | nur indirekt |
-530 | Der Wert ist nicht konvertierbar | nur indirekt |
-510 | Der Benutzer ist nicht registriert | nur indirekt |
-504 | Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochen | nur indirekt |
-500 | Falsche Parameter | nur indirekt |
Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.
7.0.7 | 2015-01-29 | Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf] |
7.0.5 | 2014-05-26 | Fehler „-550“ bzgl. des neuen „Settings“-Eintrags „DeleteInactiveProductsWithoutDataUpdateInXDays“ behoben |
7.0.4 | 2014-03-19 | 1. Implementierung des neuen „Settings“-Eintrags „DeleteInactiveProductsWithoutDataUpdateInXDays“, s. Ticket #3557 2. Bedeutung von „KeepPropertiesHistoryInHours“ von „NodeCharacteristics“ hat sich leicht geändert, s. Ticket #3560 |
6.5.1 | 2012-11-02 | Aufruf der neuen Prozedur „_om_MoveExpiredCampaignPeriods“ eingebaut |
6.0.8 | 2012-06-29 | 1. Fehlende Fehlerbehandlung und „print“-Ausgabe bzgl. „SourceCodeHistory“ (außerdem Performance-Verbesserung) 2. Quellcode-Anpassungen 3. Fehler beim Löschen von „RatingStatisticsPerSubject“ [es wurden nie Daten gelöscht] |
6.0.1 | 2010-07-20 | Holger Wies : Um Aufräumarbeiten in „SourceCodeHistory“ erweitert |
5.1.4 | 2006-08-14 | 1. „RatingStatistics“ wurde umbenannt in „RatingStatisticsPerSubject“ 2. Eine Spalte in „RatingSubjects“ wurde umbenannt 3. Neue Statistik-Tabelle „RatingStatisticsPerSubject“ 4. Überprüfung, ob Daten in der Tabelle „Performance“ vorkommen, geändert |
5.1.2 | 2006-06-26 | Verlagerung des Codes aus „ra_GarbageCollect_Ad“ in diese Prozedur, d.h. ab jetzt werden hier die Tabellen „ LockCriteriaValues“, „Ratings“ und „RatingStatistics“ [den Konfigurationen entsprechend] geleert ! |
5.1.1 | 2006-04-05 | 1. Optimierung des Zugriffs auf „NodeProperties“ (bedingt durch die Änderung dieser Tabelle in 5.1.0) 2. Fehlerhafte Index-Angabe bei „TemplateUsage“ |
5.0.2 | 2005-04-29 | Nicht mehr verwendete interne Variable, die zudem noch „falsch“ initialisiert war, entfernt |
5.0.1 | 2005-03-29 | Verlagerung des Löschens von Forum-Beiträgen zur neuen Prozedur „_fo_DeleteForumPostings“ |
5.0.0 | 2004-12-21 | Berücksichtigung des neuen „ForumSettings“-Schlüssel „PostingDeletionOptions“, der jetzt zusätzlich zum Schlüssel „KeepPostingsInDays“ bzgl. des Löschens „alter“ Beiträge beachtet werden muß |
4.0.13 | 2004-05-18 | 1. „_mi_StartProcedure“ u. „_mi_FinishProcedure“ 2. „set transaction isolation level 1“, „set rowcount 0“ 3. Konsequente Fehlerbehandlung 4. Diverse interne Änderungen 5. Fehler bzgl. Löschen von „DateIntervalls“ |
4.0.7 | 2004-01-16 | 1. Ausnutzung neuer Parameter der intern verwendeten Prozedur „_mi_TryToStartBatchJob“ 2. Interne Änderung : „ProcedureName“ steht jetzt in der neuen Tabelle „RegisteredProcedures“, in „BatchJobs“ steht nur noch die „ProcedureID“ |
4.0.0 | 2003-04-03 | 1. Löschen von „PersonPropertiesHistory“ 2. Korrektur der Doku bzgl. der verwendeten Tabellen/Prozeduren |
3.5.22 | 2002-08-30 | |
3.5.21 | 2002-08-06 | |
3.5.20 | 2002-07-22 | |
3.5.19 | 2002-06-17 | |
3.5.18 | 2002-05-15 | |
3.5.13 | 2001-12-06 | |
3.5.12 | 2001-10-17 | |
3.5.11 | 2001-09-06 | |
3.5.10 | 2001-07-14 | |
3.5.9 | 2001-06-16 | |
3.5.7 | 2001-05-04 | |
3.5.5 | 2001-03-30 | |
3.5.4 | 2001-03-11 | |
3.5.2 | 2001-01-28 | |
3.5.0 | 2000-11-23 | Erstmalig in dieser Version erstellt |
Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:
Unformatierte Ausgabe:
curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/mi_GarbageCollect_Ad'
Mit xmllint 5) formatierte Ausgabe:
curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/mi_GarbageCollect_Ad' | xmllint --format -
use dStore_php\WebService; $service = new WebService\Service( WebService\Scheme::HTTP,'<partner>-<project>.dstore.de', 80); $request = new WebService\Requests\Engine\Procedure\Request( new WebService\Requests\AccessData('default'), 'mi_GarbageCollect_Ad', array( // 'CheckForCorrectDate' => 1 ) ); $service->execute($request); $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); $ResultSet = $xml_result->getRowsAsArray();
XML zur Ausführung mit der Methode engine/execute, z.B. per
curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>'
<?xml version="1.0" encoding="UTF-8"?> <ListOfBatches> <Batch No="0"> <Procedure Name="mi_GarbageCollect_Ad"> <Parameters> <!-- <Parameter Name="CheckForCorrectDate">1</Parameter> --> </Parameters> </Procedure> </Batch> </ListOfBatches>