скорость выполнение запросов равна единицы, при шардирование такого же датасета на 3 шарда производительность уже равна две единицы. Почему разница в 2 раза, а не в 1.5? С чем может быть это связано
Это может быть связано с ошибкой в эксперименте.
То есть должен быть прирост 1.5 ?
Да, в моем понимании прирост должен быть 1.5 или чуть менее. У вас на нет перекоса, на всех шардах близкое количество данных?
Какой ключ шардирования, какие запросы
cityHash64(user_id), select c where, select с join, просто select, ну и в каждом запросе есть group by
Ну а так почему нет? У вас стало больше памяти для page cache, больше cpu для обработки и если делает GROUP BY user_id, то меньше уникальных id на каждом конкретном шарде, что означает более быструю агрегацию
Но ускорение не только связанных с user_id, но даже если не используется в запросе user_id. Например такой select event,count() FROM table group by event Даёт так же х2.
Обсуждают сегодня