Tabelle version_commit_data wächst auf mehrere GB an

Hallo

Wir aktualisieren Produkte im Shop stündlich über das Admin REST API. Nun wächst die Tabelle version_commit_data innerhalb 2 Monate auf 4.2 GB an (version_commit 75.2 MB)

Woran liegt das, wie kann man das korrigieren?

 

 

 

Hallo,

Wir stehen vor dem gleichen Problem.
Der Grund dafür ist, dass jeder Commit auf einem Repo des Shops (ob Änderung oder nicht) automatisch mit dem dazugehörigen Payload in die Tabelle version_commit_data geloggt wird.

WIr suchen aktuell auch nach einer Möglichkeit, wie man das Loggen in diese Tabelle ggf. sogar temporär deaktivieren kann.

Viele Grüße
Dennis

 

 

 

 

 

@compragmbh schrieb:

Hallo,

Wir stehen vor dem gleichen Problem.
Der Grund dafür ist, dass jeder Commit auf einem Repo des Shops (ob Änderung oder nicht) automatisch mit dem dazugehörigen Payload in die Tabelle version_commit_data geloggt wird.

WIr suchen aktuell auch nach einer Möglichkeit, wie man das Loggen in diese Tabelle ggf. sogar temporär deaktivieren kann.

Viele Grüße
Dennis

 

Ich leere die Tabelle nun per Cron Job jede Nacht.

Hallo,

wir haben das Phänomen nun auch entdeckt (1,1 GB nur die version_commit_data Tabelle). Die version_commit kann man dazu auch löschen, zumindest haben wir das gemacht. Wie löscht Ihr das per CronJob? Über den mysql Befehl und übergebt ein SQL, das abgearbeitet werden soll?

<?php

  declare(strict\_types=1);   namespace Nextag\Storemanager\Command;   use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface;   /\*\*  \* Class StoremanagerCommand  \* @package Nextag\Storemanager\Command  \*/ class StoremanagerCommand extends Command {     protected $timestamp;     protected $lastSync = null;     protected $log;     protected $config;       public function \_\_construct(\Nextag\Storemanager\Helper\Log $log, \Shopware\Core\System\SystemConfig\SystemConfigService $config)     {         parent::\_\_construct();         $this-\>log = $log;         $this-\>config = $config;     }       protected function configure(): void     {         $this-\>setName('nextag:storemanager:execute');     }       protected function execute(InputInterface $input, OutputInterface $output)     {           $this-\>log-\>info("Storemanager started");         $this-\>truncateversiontables();         $this-\>deleteCarts();         $this-\>log-\>info("Storemanager finished");     }       protected function truncateversiontables()     {         if ($this-\>config-\>get("NextagStoremanager.config.cleanUpVersionCommitTables")) {             $this-\>log-\>info("TruncateversiontablesCommand started");             $connectionParams = array(                 'url' =\> getenv("DATABASE\_URL"),             );             /\*\* @var \Doctrine\DBAL\Connection $conn \*/             $conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams);             $query = "Delete from version\_commit";             $conn-\>executeQuery($query);               $query = "Delete from version\_commit\_data";             $conn-\>executeQuery($query);               $this-\>log-\>info("TruncateversiontablesCommand finished");         }     }       protected function deleteCarts()     {         if ($this-\>config-\>get("NextagStoremanager.config.deleteCarts")) {             $this-\>log-\>info("deleteCarts started");             $connectionParams = array(                 'url' =\> getenv("DATABASE\_URL"),             );             /\*\* @var \Doctrine\DBAL\Connection $conn \*/             $conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams);             $query = "Delete from cart";             $conn-\>executeQuery($query);             $this-\>log-\>info("deleteCarts finished");         }     } }  

Hallo oliverriske@

bei uns ist die Datei >50GB groß. Wir haben deswegen schon 2x den Server vergößert.

Kannst du uns das einrichten? Damit die regeläßig geleert wird, habe davon leider keine Ahnung.

Oder wo muss ich was eintragen?  In phpMyAdmin habe ich diese Datei gefunden 969852 Datensätze groß.

Grüße Artur

Gibts da kein Plugin für? Zumindest gibt es eins welches die Warenkörbe leert.

Siehe mein script oben. Einfach in einem eigenen plugin als Command einbauen und per cronjob starten mit bin/console nextag:storemanager:execute

“Einfach in einem eigenen plugin als Command einbauen”

Das ist bestimmt einfach wenn man davon was versteht.

Könnt ihr ein kleines Plugin oder sonst was für User dafür bauen?

Dies ist ein Developerforum kein Userforum.

 

@Artexbres schrieb:

“Einfach in einem eigenen plugin als Command einbauen”

Das ist bestimmt einfach wenn man davon was versteht.

Könnt ihr ein kleines Plugin oder sonst was für User dafür bauen?

1 Like

Das könnte man auch mit nem simplen Bash Script der Form

echo „TRUNCATE TABLE  version_commit_data; TRUNCATE TABLE version_commit;“ | mysql -h host -u user -pPASS shopwaredb

lösen. Man bräuchte evtl. noch nichtmal ein Script, das kann man wohl auch direkt als Cronjob ausführen.

Vorteil: Dead simple

Nachteil: Passwort ist in der Kommandozeile sichtbar

Wir haben ein Plugin entwickelt, falls es jemand benötigt - einstellbar, wie lange die Logs aufgehoben werden.
ACRIS Automatische Datenbank Bereinigung | Backend-Bearbeitung | Administration | Erweiterungen | Shopware Community Store

Von uns gibt es so ein Plugin nun auch seit geraumer Zeit: