Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте.
Подскажите, пожалуйста, как можно ускорить выборку из InnoDB?
Вся таблица находится в СОЗУ, одна строка имеет размер около 100байт, в таблице 30тыс строк (размер таблицы около 3Мб).
Выборка всех строк длится более 30сек.
Спасибо.
Отредактированно Denya-qt (17.08.2013 20:13:50)
Неактивен
А во что упираетесь? в процессор? в сеть? попробуйте сделать выборку
в /dev/null и посмотреть на результат.
Ну и какие-нибудь доп.характеристики расскажите. Один запрос или
постоянные длинные транзакции. Просто SELECT * или что-то более сложное?
Какой результат вы ожидаете?
Неактивен
paulus, на VPS время выборки точно не засекал, но ориентировочно тоже самое.
Все проверяю на ноутбуке, т.е. localhost и процессор 2 ядра 1,5ГГц.
Юзаю Windows Server (WAMP), поэтому "/dev/null" наверное не получится.
Пока тестирую обычный длинный запрос SELECT *, хотелось бы в 5сек укладываться, а лучше в 1сек.
ИМХО 3Мб из оперативки читать 35сек - это край...
Спасибо.
Неактивен
У меня дикое ощущение, что вы упираетесь куда-то в сеть. Перечитал изначальное
сообщение, сначала я думал, что Вы про 30 миллионов строк говорите, 30 тысяч
должны выбираться моментально.
Попробуйте подключиться обычным клиентом mysql (консольным) с localhost и
сделать ту же выборку.
Неактивен
paulus, попробовал выполнить тот же запрос вне всяких оболочек через php скрипт с выводом времени, вышло около 3сек.
Затык в "быдло коде" + Ajax. Несколько моментов переписал, стало побыстрее (из 30сек, стало 20сек).
Кстати, по размеру InnoDB, попробовал ради эксперимента сменить тип таблицы на Archive Storage Engine, объем уменьшился в сотни раз, а скорость выборки осталась таже.
Очень остро стоит вопрос в размещении всей таблицы в СОЗУ, может заюзать лучше ARCHIVE?
Спасибо.
Неактивен
3 секунды тоже много, на установленном соединении у меня получается 0.02 секунды просто
на ноутбуке. Скорее всего, тратите много времени на установку соединения. Права выданы
на адрес IP или на имя? Может много времени уходить на DNS.
ARCHIVE не поддерживает обновление полей, создание индексов кроме primary, так что Вы
в каком-то смысле ограничены только добавлением в конец и полным сканом всей таблицы
всегда. Я бы не менял хранилище без веских на то причин.
Неактивен
paulus, все тестирую на ноутбуке localhost, т.е. затык явно в MySQL...
У нас таблицы простейшие, добавление всегда только в конец, удаление первых строк и чтение, все.
Такая смена хранилища позволила бы сэкономить на оплате VPS, каждые 100МБ SRAM денег стоят.
Отредактированно Denya-qt (19.08.2013 17:00:03)
Неактивен