Ошибка SQL (1038): недостаточно памяти для сортировки, рассмотрите возможность увеличения буфера сортировки сервера

Я обновил MariaDB 10.3.13 до последней версии 10.5.6. После развертывания один из моих запросов начал выдавать эту ошибку:

Ошибка SQL (1038): недостаточно памяти для сортировки, рассмотрите возможность увеличения буфера сортировки сервера

Мне удалось упростить запрос, сохранив ошибку при новой установке 10.5.6 (настройки по умолчанию). Это работает без проблем с 10.3.13:

УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ test_products;
СОЗДАТЬ ТАБЛИЦУ test_products (имя_продукта VARCHAR(7), id_country INT, PRIMARY KEY (product_name, id_country)) COLLATE='utf8_general_ci' ДВИГАТЕЛЬ =INNODB;


DELIMITER //
FOR i IN 1..3700 DO INSERT INTO test_products (product_name, id_country) VALUES ('product', i); КОНЕЦ ДЛЯ;
//
DELIMITER;

ВЫБЕРИТЕ p.product_name, p.id_country,ierarchy.hierarchy
ИЗ test_products p
LEFT JOIN (
    SELECT p2.product_name, p2.id_country, h.hierarchy, MAX(test) AS test
    ОТ test_products p2
    LEFT JOIN (
        SELECT product_name, id_country, '_exactly_' ASierarchy, 1 AS test - удаление одного символа из строки заставит этот запрос снова работать
        ОТ test_products) h ВКЛ h.product_name = p2.product_name И h.id_country = p2.id_country
   GROUP BY product_name, id_country, h.hierarchy) иерархия ON hierarchy.product_name = p.product_name ANDierarchy.id_country = p.id_country

Увеличение sort_buffer_size помогает. Однако в исходном запросе мне нужно увеличить этот буфер с 2 МБ по умолчанию до примерно 80 МБ (без ORDER BY; таблица продуктов отфильтрована примерно до 15-20 тыс. Записей - совсем не такие большие числа). Согласно https://www.xaprb.com/blog/2010/05/09/how-to-tune-mysqls-sort_buffer_size/, я бы предпочел сохранить исходные настройки. Также я не понимаю, почему 10.3.13 со стандартным буфером 2 МБ работает хорошо, а более новая версия - нет.
Следует ли мне сообщить об ошибке в MariaDB? Или я что-то не так делаю? Или мне следует изучить неделю / две, чтобы упростить запрос? Заблудился здесь.

протестировано на Windows Server 2012R2; Xeon E3-1225@3.2Ghz; ОЗУ 16 ГБ

Спасибо за помощь.

1 ответ

Решение

Это поведение выглядело странно, поэтому я сообщил об ошибке команде MariaDB.

Исправление будет доступно с версии 10.5.7.

Для получения дополнительной информации посетите https://jira.mariadb.org/browse/MDEV-24015.

Другие вопросы по тегам