Задавайте вопросы, мы ответим
Вы не зашли.
Есть кластер на нескольких машинах. Есть таблица на 8млн записей - размер примерно 4 гигабайта.
Проблемы
1) некоторые селекты выполняются по несколько минут. я так понял что при использовании order by главная нода кластера запрашивает всю таблицу для сортировки - ну и 4гигабайта перетянуть по локальной сети занимает некоторое время.
2) скорость одного и того же запроса уж очень сильно зависит от данных
например
---
SELECT u.id, u.user, u.year, u.month, u.day, u.location, u.gender, u.feature FROM `phpfox_user` AS u WHERE 1 AND u.p_update > 0 LIMIT 0,9;
/* Результат : "записей извлечено: 9 (5,391 с)" */
SELECT u.id, u.user, u.year, u.month, u.day, u.location, u.gender, u.feature FROM `phpfox_user` AS u WHERE 1 AND u.p_update > 1235163600 LIMIT 0,9;
/* Результат : "Пустой набор (00:01:26)" */
--
Вопрос - есть ли возможность для NDB кластера с 8 млн записей ускорить select с использованием order by, а также можно ли ускорить селекты которые занимаются полным перебором данных и при это ничего не возвращают (см. последний запрос)?
Неактивен
1. ORDER BY будет выполняться на sql-ноде в любом случае. Ускорить можно только изменением самого запроса - добавить WHERE, чтобы не заставлять сервер скачивать все, а затем сортировать.
2. нужно включить engine_condition_pushdown (см SHOW VARIABLES LIKE 'engine_condition_pushdown'), тогда сравнение будет выполняться на дата-нодах без выгрузки на sql-ноду
Неактивен