Also ich hab jetzt mal die Zeit gefunden, die general.log zu aktivieren und zu schauen, was da so abgeht.
Ich habe das System neu gestartet, habe nur eine Kategorie geändert und eine Zahl in die Beschreibung angefügt.
Dann hab ich gewartet, bis wieder Ruhe auf der DB herrscht und mir dann das general.log angeschaut.
grep -o "UPDATE \`category\` SET" general.log | wc -l
liefert 131.643 Zeilen.
Also ein Update auf eine Kategorie erzeugt bei uns 131.643 update Befehle auf die Kategorie-Tabelle.
Die sehen dann so aus:
2024-10-24T14:09:08.382219Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|',`level` = '2' WHERE `id` = '^A<8e>\r£Â<92>r\" é<8c>xð<96>\nè'
2024-10-24T14:09:08.383013Z 95 Query UPDATE `category` SET `path` = NULL,`level` = '1' WHERE `id` = '^A<8e>\r£Â}pè°FPÙ^U5ZÄ'
2024-10-24T14:09:08.383767Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|ee700af3da33af4efc8103e1891b0914|',`level` = '4' WHERE `id` = '\0\0,¯hÅ^C^Bä^E©}Såa^O'
2024-10-24T14:09:08.384469Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|faff732ffbf00f67c52b38dd49127216|ba98fb456d8a49077f483d34c6acae5c|857daad3ba2e5b2cc94fbe38e599dd11|',`level` = '6' WHERE `id` = '\0\0à\\3tËE^_»dßÖ¬\'á'
2024-10-24T14:09:08.385122Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|ee700af3da33af4efc8103e1891b0914|a028d9d789f549082abdfb7b5630d58b|33f74b7ef540e85ba1d28b450503fbb3|',`level` = '6' WHERE `id` = '\0\0å7\'uëY^Dû¸2<9a>\ZðC'
2024-10-24T14:09:08.385786Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|ee700af3da33af4efc8103e1891b0914|e6d2b6a08cd8bb285c07c5263fd32a50|3e23cf5d9e80865cd09db55ca902295f|',`level` = '6' WHERE `id` = '\0\0ç\'ô¡îÅ^XÇOÏ^O+ê?'
2024-10-24T14:09:08.386419Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|5eb91da6b0269b5073a86f7598c180b7|0bd0c6591c7824a27729e357eabdbf99|74b70e2ab7457b903ad2bf94cad1df0d|',`level` = '6' WHERE `id` = '\0^A<85>>þPÿ^A<8f>+Ç`<88>EL®'
2024-10-24T14:09:08.387151Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|ee700af3da33af4efc8103e1891b0914|eacb095ec3879ff9e030acb13ba329b8|825e7e8c0553bd694090a888b74fde95|',`level` = '6' WHERE `id` = '\0^A¹²ó<85>f^Y,&<9e>D<8f>u\\<9c>'
2024-10-24T14:09:08.387809Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|ee700af3da33af4efc8103e1891b0914|3c3cf394dff3909d3e6f8a3c2584ac7a|67ff0988e07f9ef5e0f35c9bd3c783eb|',`level` = '6' WHERE `id` = '\0^B5Ü^<99>±á¤è<8b>ètï[ø'
2024-10-24T14:09:08.388442Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|0d48d86e82a6faad8ef1b3d3d345919d|a437f323900214cfc9ab619f94a5bc78|ca09fcf1b33b23865c935042b4580b70|',`level` = '6' WHERE `id` = '\0^BLÍÌ¢^B\n:jWo´,·<96>'
2024-10-24T14:09:08.389069Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|78997e99cf10568a7bb0866e5f77162c|e6465133f4d95dd8ba99b9a28db5f89b|97788426a608b3c150282dfbe29513c0|',`level` = '6' WHERE `id` = '\0^BªØBÝÊÞ^D¹ø4^Yé;/'
2024-10-24T14:09:08.389700Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|88b98f26a6f20515d5e3a13f420fc273|8f7af6d73061ea7122910164cd8387ba|60d341075c590be5049d68ca70a65a92|',`level` = '6' WHERE `id` = '\0^Bé8C{ò<87><91>ÞãÉ^BJqÖ'
2024-10-24T14:09:08.390320Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|faff732ffbf00f67c52b38dd49127216|cc04be69fb4a950547151350081848fb|4371f1da8880c5152b6c6e84f3d0202b|',`level` = '6' WHERE `id` = '\0^C-V^_á¼^_¿^AÇ^CÀt¸.'
2024-10-24T14:09:08.391108Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|faff732ffbf00f67c52b38dd49127216|92019cc4e925e3eb133385fbd08a3111|',`level` = '5' WHERE `id` = '\0^C¾<83><8e>µ§s5Ð^Hª<83>Í<99><88>'
2024-10-24T14:09:08.391737Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|faff732ffbf00f67c52b38dd49127216|40018c04db3d8cf6aa329aca99331e47|eebe0e9b3c07961f1f82efa8b93bec7e|',`level` = '6' WHERE `id` = '\0^Cë©f^D EyÎ<8a>/ºC^EÜ'
2024-10-24T14:09:08.392485Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|ee700af3da33af4efc8103e1891b0914|a028d9d789f549082abdfb7b5630d58b|dd24528e87290398e19b689a83b2cdaa|',`level` = '6' WHERE `id` = '\0^C÷y<93>kà|jl·«JùeO'
2024-10-24T14:09:08.393123Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|78997e99cf10568a7bb0866e5f77162c|c91248841c135ff93da5c72da987a9ed|05cce106a60dd42e216fa87a4445830d|',`level` = '6' WHERE `id` = '\0^D^G^HQZsò¶Ü¶Z^N<9e>Ô<9f>'
2024-10-24T14:09:08.393749Z 95 Query UPDATE `category` SET `path` = '|018e0da3c27d70e8b04650d915355ac4|018e7f86357478a585a16424315b2db5|07f0e0498e7d7de2fd0972dbf879c226|0cac48aa68362b17575d9719a84c7c12|82c1e078a85cbd45d135bb1b0475f119|',`level` = '6' WHERE `id` = '\0^D/ ªv³ãäoÝr^V:Ê9'
Scheinbar wird dann bei ALLEN Kategorien der Pfad aktualisiert. Warum?
Anschließend wird noch überall die Übersetzung aktualisiert:
grep -o "INSERT INTO \`category_translation\`" general.log | wc -l
Das liefert freundliche 657.240 Zeilen. Das sind offensichtlich alle Kategorien in 5 Sprachen.
2024-10-24T14:12:04.963948Z 95 Query INSERT INTO `category_translation` (`category_id`, `category_version_id`, `language_id`, `breadcrumb`, `created_at`)
VALUES ('^A<8e>\r£Â<92>r\" é<8c>xð<96>\nè', '^O©^\ãéjK¾KÙÎu,4%', '^A<8e>\n^V+<92>q6·ô<8a><84>ÿé^FR', '...', DATE(NOW()))
ON DUPLICATE KEY UPDATE `breadcrumb` = '...'
Das Ganze erzeugt ca. 4.000 insert-update-Befehle pro Sekunde auf eine Tabelle, die 657.365 Zeilen hat.
Dann gibt es noch eine Palette solcher Befehle:
2024-10-24T14:18:30.308045Z 456 Query UPDATE `category` SET `version_id` = '^O©^\ãéjK¾KÙÎu,4%', `parent_id` = '^¹^]¦°&<9b>Ps¨ou<98>Á<80>·', `parent_version_id` = '^O©^\ãéjK¾KÙÎu,4%', `after_category_version_id` = '^O©^\ãéjK¾KÙÎu,4%', `media_id` = '<80>^UpJ^í%òVÝq<91>ëñ<8e>^Y', `cms_page_id` = '^A<8e>`|©(x^R<89><81>áäì^VÅ¿', `cms_page_version_id` = '^O©^\ãéjK¾KÙÎu,4%', `display_nested_products` = '0', `type` = 'page', `product_assignment_type` = 'product', `visible` = '1', `updated_at` = '2024-10-24 14:15:30.522' WHERE id = '^KÐÆY^\x$¢w)ãW꽿<99>' AND version_id = '^O©^\ãéjK¾KÙÎu,4%'
2024-10-24T14:18:30.309095Z 456 Query UPDATE `category` SET `version_id` = '^O©^\ãéjK¾KÙÎu,4%', `parent_id` = '^KÐÆY^\x$¢w)ãW꽿<99>', `parent_version_id` = '^O©^\ãéjK¾KÙÎu,4%', `after_category_version_id` = '^O©^\ãéjK¾KÙÎu,4%', `media_id` = '<80>^UpJ^í%òVÝq<91>ëñ<8e>^Y', `cms_page_id` = '^A<8e>`|©(x^R<89><81>áäì^VÅ¿', `cms_page_version_id` = '^O©^\ãéjK¾KÙÎu,4%', `display_nested_products` = '0', `type` = 'page', `product_assignment_type` = 'product', `visible` = '1', `updated_at` = '2024-10-24 14:15:30.531' WHERE id = 'NS<90>Ë<8e>^[Pü^]å5^FÛi¬+' AND version_id = '^O©^\ãéjK¾KÙÎu,4%'
2024-10-24T14:18:30.310067Z 456 Query UPDATE `category` SET `version_id` = '^O©^\ãéjK¾KÙÎu,4%', `parent_id` = 'NS<90>Ë<8e>^[Pü^]å5^FÛi¬+', `parent_version_id` = '^O©^\ãéjK¾KÙÎu,4%', `after_category_version_id` = '^O©^\ãéjK¾KÙÎu,4%', `cms_page_id` = '^A<8e>ðZôÜr2 ^^^G<91>¨õgp', `cms_page_version_id` = '^O©^\ãéjK¾KÙÎu,4%', `display_nested_products` = '1', `type` = 'page', `product_assignment_type` = 'product', `visible` = '1', `updated_at` = '2024-10-24 14:15:30.540' WHERE id = '<9f>^D¯^X<89><83>xH§u©&^Bhæ+' AND version_id = '^O©^\ãéjK¾KÙÎu,4%'
Da wird dann scheinbar ALLES nochmal aktualisiert.
Dann gehts weiter mit tausenden Updates auf die custom_fields
2024-10-24T14:18:30.320325Z 456 Query UPDATE `category_translation` SET custom_fields = JSON_SET(IFNULL(`custom_fields`, "{}"), '....) WHERE (`category_id` = '^¹^]¦°&<9b>Ps¨ou<98>Á<80>·') AND (`language_id` = '/»_ââ<9a>MpªXTÎ|ãâ^K') AND (`category_version_id` = '^O©^\ãéjK¾KÙÎu,4%')
Also brauch ich mich eigentlich nicht wundern, warum die DB in die Knie geht.
Aber ich frag mich echt, warum man das nicht auf die queue auslagert? Wenn ich über die API Kategorien update, kann ich es ja auch einstellen, dass es über die queue indexiert wird.
Weiß jemand, ob man das bei manuellen Updates auf Kategorien auch irgendwie einstellen kann? In der shopware.yaml vielleicht?