SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.08.2013 20:13:08

Denya-qt
Участник
Зарегистрирован: 04.06.2013
Сообщений: 15

Ускорить большую выборку таблицы InnoDB

Здравствуйте.
Подскажите, пожалуйста, как можно ускорить выборку из InnoDB?
Вся таблица находится в СОЗУ, одна строка имеет размер около 100байт, в таблице 30тыс строк (размер таблицы около 3Мб).
Выборка всех строк длится более 30сек.
Спасибо.

Отредактированно Denya-qt (17.08.2013 20:13:50)

Неактивен

 

#2 17.08.2013 22:28:54

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Ускорить большую выборку таблицы InnoDB

А во что упираетесь? в процессор? в сеть? попробуйте сделать выборку
в /dev/null и посмотреть на результат.

Ну и какие-нибудь доп.характеристики расскажите. Один запрос или
постоянные длинные транзакции. Просто SELECT * или что-то более сложное?
Какой результат вы ожидаете?

Неактивен

 

#3 18.08.2013 00:33:22

Denya-qt
Участник
Зарегистрирован: 04.06.2013
Сообщений: 15

Re: Ускорить большую выборку таблицы InnoDB

paulus, на VPS время выборки точно не засекал, но ориентировочно тоже самое.
Все проверяю на ноутбуке, т.е. localhost и процессор 2 ядра 1,5ГГц.
Юзаю Windows Server (WAMP), поэтому "/dev/null" наверное не получится.

Пока тестирую обычный длинный запрос SELECT *, хотелось бы в 5сек укладываться, а лучше в 1сек.
ИМХО 3Мб из оперативки читать 35сек - это край...
Спасибо.

Неактивен

 

#4 19.08.2013 02:56:16

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Ускорить большую выборку таблицы InnoDB

У меня дикое ощущение, что вы упираетесь куда-то в сеть. Перечитал изначальное
сообщение, сначала я думал, что Вы про 30 миллионов строк говорите, 30 тысяч
должны выбираться моментально.

Попробуйте подключиться обычным клиентом mysql (консольным) с localhost и
сделать ту же выборку.

Неактивен

 

#5 19.08.2013 09:45:23

Denya-qt
Участник
Зарегистрирован: 04.06.2013
Сообщений: 15

Re: Ускорить большую выборку таблицы InnoDB

paulus, попробовал выполнить тот же запрос вне всяких оболочек через php скрипт с выводом времени, вышло около 3сек.
Затык в "быдло коде" + Ajax. Несколько моментов переписал, стало побыстрее (из 30сек, стало 20сек).

Кстати, по размеру InnoDB, попробовал ради эксперимента сменить тип таблицы на Archive Storage Engine, объем уменьшился в сотни раз, а скорость выборки осталась таже.
Очень остро стоит вопрос в размещении всей таблицы в СОЗУ, может заюзать лучше ARCHIVE?
Спасибо.

Неактивен

 

#6 19.08.2013 12:45:59

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Ускорить большую выборку таблицы InnoDB

3 секунды тоже много, на установленном соединении у меня получается 0.02 секунды просто
на ноутбуке. Скорее всего, тратите много времени на установку соединения. Права выданы
на адрес IP или на имя? Может много времени уходить на DNS.

ARCHIVE не поддерживает обновление полей, создание индексов кроме primary, так что Вы
в каком-то смысле ограничены только добавлением в конец и полным сканом всей таблицы
всегда. Я бы не менял хранилище без веских на то причин.

Неактивен

 

#7 19.08.2013 16:59:26

Denya-qt
Участник
Зарегистрирован: 04.06.2013
Сообщений: 15

Re: Ускорить большую выборку таблицы InnoDB

paulus, все тестирую на ноутбуке localhost, т.е. затык явно в MySQL...
У нас таблицы простейшие, добавление всегда только в конец, удаление первых строк и чтение, все.
Такая смена хранилища позволила бы сэкономить на оплате VPS, каждые 100МБ SRAM денег стоят.

Отредактированно Denya-qt (19.08.2013 17:00:03)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson