Hi, Johannes, Try the next release (expected in about a month) where https://jira.mariadb.org/browse/MDEV-29988 is fixed. Regards, Sergei VP of MariaDB Server Engineering and security@mariadb.org On Jan 04, Johannes Ody wrote:
I'm german. Please excuse my bad english. MariaDB version 10.5.18 is much slower than version 10.5.16 in string-manipulation (CONCAT). In version 10.5.16 my code in the bottom needs for 800 records in tmp_tartikel_live 1-2 seconds. In version 10.5.18 my code needs for 800 records in tmp_tartikel_live 20-30 seconds. In version 10.5.16 my code needs for 26000 records in tmp_tartikel_live 5-6 minutes. It is ok. In version 10.5.18 my code needs for 26000 records in tmp_tartikel_live more than 2 hours and was terminating by the system and was not ready. The execution-time glows much more than linear. The calling script is internal for maintenance-work at night. The purpose of this code is to build our search-tables in MySQL (concordance). The code must work for strings with special characters in the coding-systems html (è), ansi and utf-8. In german and france we have the special characters: ß ü ö äàá èé and so on.
I have found other users with performance-problems in MariaDB version 10.5.18, and they also use CONCAT: https://dba.stackexchange.com/questions/284073/query-performance-drop-after-...
My code is the following: /*#JODY_20221010 Die Datenbank muss fuer diesen Code auf Kollektion=latin1_swedish_ci eingestellt sein. ALTER DATABASE d03a5b1c COLLATE latin1_swedish_ci; Das CHARACTER SET scheint nicht so wichtig zu sein. */
/* #JODY_20211228 (ACHTUNG): Diese Datei muss ASCII-Codiert sein (nicht UTF8) Funktion zum Loeschen von HTML-Tags. Kann nur vom browser aus installiert werden. * / DROP PROCEDURE IF EXISTS mysql_log;*/ DROP FUNCTION IF EXISTS mysql_striptags; DROP FUNCTION IF EXISTS mysql_replace_utf8_sonderzeichen; DROP FUNCTION IF EXISTS mysql_replace_single_char; DROP FUNCTION IF EXISTS mysql_replace_char; DROP FUNCTION IF EXISTS mysql_replace_umlaute; /*DROP FUNCTION IF EXISTS mysql_delete_fuellwoerter;*/
DELIMITER $$
/*CREATE PROCEDURE mysql_log(strText VARCHAR(255)) BEGIN INSERT INTO debugout(cText) VALUES (strText); END$$*/
CREATE FUNCTION mysql_striptags(strParam TEXT) RETURNS TEXT DETERMINISTIC BEGIN DECLARE str TEXT;