Magento 2-Tabellen werden erstellt und enden mit "_cl"

7

Nachdem ich einen Unterschied zwischen den Tabellen von einem Produktionsserver zu einem lokalen Server gemacht habe, habe ich festgestellt, dass neue Tabellen erstellt wurden, die alle mit enden _cl. Diese sind:

#        TABLE: catalog_category_product_cl
#        TABLE: cataloginventory_stock_cl
#        TABLE: catalog_product_price_cl
#        TABLE: catalog_product_category_cl
#        TABLE: customer_dummy_cl
#        TABLE: catalogrule_product_cl
#        TABLE: catalog_product_attribute_cl
#        TABLE: catalogsearch_fulltext_cl
#        TABLE: design_config_dummy_cl
#        TABLE: catalogrule_rule_cl

Da diese alle mit Indizes in Magento zusammenhängen, gehe ich davon aus, dass es sich um "Änderungsprotokolle" oder ähnliches handelt (wenn dies bestätigt werden könnte, würde ich es begrüßen!).

Ich habe eine zweiteilige Frage dazu: Wie werden diese Tabellen gefüllt und wie oft / wie werden diese Tabellen gereinigt ?

Jede Hilfe hierzu wäre sehr dankbar.

Richard Cripps
quelle
2
ja, "cl" steht für change log
Fabian Schmengler

Antworten:

23

Diese Tabellen beziehen sich auf MView von Magento 2. Es ist der Indexer, der standardmäßig jede Minute in cron ausgeführt wird. MView wird verwendet, wenn Sie den Indexermodus auf "Nach Zeitplan indizieren" setzen.

Magento prüft, ob die _clTabellen vorhanden sind. Wenn nicht, werden sie bei jeder Ausführung des Indexers / MView erstellt. Der Code für diese Tabellenerstellung befindet sich in \Magento\Framework\Mview\View::subscribe().

Das Einfügen in diese Tabellen erfolgt durch MySQL-Trigger. Alle Trigger in der Magento 2-Datenbank werden zum Aktualisieren von _clTabellen verwendet : SHOW TRIGGERS. Wenn der Administrator den Preis des Produkts ändert, werden Zeilen in einige der Tabellen eingefügt. Wenn cron nach 1 Minute ausgeführt wird, wird für jeden beteiligten Indexer eine Indizierung dieser Entitäten ausgelöst. Wenn nach jedem Indexerlauf betroffene Entitäten / Cache-Tags (catalog_product_123) vorhanden sind, wird eine vollständige Bereinigung des Cache / Lacktyps ausgelöst.

_clTabellenzeilen werden wie jede Stunde gelöscht, wenn sie alt sind. Dafür gibt es einen Cron-Job.

// Magento_Indexer/etc/crontab.xml
<job name="indexer_clean_all_changelogs" instance="Magento\Indexer\Cron\ClearChangelog" method="execute">
    <schedule>0 * * * *</schedule>
</job>

Überprüfen Sie Folgendes : Was ist mview in magento2?

EDIT Auch zurückgesetzt version_id zu 0in mview_stateTabelle. Sonst wird es nicht indizieren , bis ids in *_clTabellen , die Reichweite version_idin mview_state.

Möglicherweise gibt es mehr *_clTabellen als diese:

TRUNCATE TABLE `cataloginventory_stock_cl`;
TRUNCATE TABLE `catalogrule_product_cl`;
TRUNCATE TABLE `catalogrule_rule_cl`;
TRUNCATE TABLE `catalogsearch_fulltext_cl`;
TRUNCATE TABLE `catalog_category_product_cl`;
TRUNCATE TABLE `catalog_product_attribute_cl`;
TRUNCATE TABLE `catalog_product_category_cl`;
TRUNCATE TABLE `catalog_product_price_cl`;
TRUNCATE TABLE `customer_dummy_cl`;
TRUNCATE TABLE `design_config_dummy_cl`;
TRUNCATE TABLE `salesrule_rule_cl`;
TRUNCATE TABLE `targetrule_product_rule_cl`;
TRUNCATE TABLE `targetrule_rule_product_cl`;

UPDATE `mview_state` SET `version_id` = '0';
obskur
quelle
Wir arbeiten an Magento 1.14 EE und haben den gleichen Tabellentyp, der sich über 9 GB erstreckt. Können wir ihn löschen? Ich habe gerade Folgendes gelesen: maxchadwick.xyz/blog/magento-enterprise-index-lesson-329 Ich bin mir nicht sicher, was ich mit dieser Tabelle tun soll, da wir db auf localhost sichern und wiederherstellen müssen.
Chetan Sharma
In Magento 2 können Sie *_clTabellen abschneiden und auch version_idin mview_stateTabellen zurücksetzen . In Magento 1 EE sollte es dasselbe sein. Ich weiß nicht, wo Magento 1 die aktuelle oder letzte Versions-ID speichert. Ich werde meine Antwort aktualisieren.
obskure
Übrigens. In Ihrer Liste fehlen zwei Tabellen: catalog_category_flat_cl& catalog_product_flat_cl. Außerdem konnte ich die folgenden Tabellen in unserer Magento 2.3.2-Installation nicht finden : salesrule_rule_cl, targetrule_product_rule_cl& targetrule_rule_product_cl.
Fritzmg