Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ускорить большую выборку таблицы InnoDB в MySQL
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Alt.F4
Здравствуйте.
Подскажите, пожалуйста, как можно ускорить выборку из InnoDB?
Вся таблица находится в СОЗУ, одна строка имеет размер около 100байт, в таблице 30тыс строк (размер таблицы около 3Мб).
Выборка всех строк длится более 30сек. wacko.gif
Спасибо.
andrewlekar
Стоит задать себе вопрос, кому нужно иметь сразу все 30000 строк? Вы их всё равно все сразу не увидите и они нужны как правило либо по какому-то критерию, либо постранично.
Короче, я ничё не знаю про InnoDB (можете попробовать другой бэкенд использовать, вдруг быстрее будет), но средствами SQL с заданными условиями ничё ускорить не получится. Остаются средства аппаратные (поставить проц шустрее), попробовать другой движок БД (даже если и ускорит, то незначительно).
Alt.F4
andrewlekar, на самом деле нужно до 100тыс строк сразу, но дело не в этом.
Чтобы я проект писал с нуля, то взял бы за основу BerkeleyDB, где такая выборка вообще не нагрузка, а так приходится допиливать что есть.

Я просто въехать не могу, как из оперативки 3Мб могут читать 35сек? Космос! cranky.gif
MKdemiurg
У меня таблица - 20Мб. Где то 500 тыс.строк, 8 полей.
Выборка 8т строк - 1-2 сек. А случаем не в mysql-client выводишь построчно? Если да, то 35 секунд это не сама выборка...
Tiro
Цитата(Alt.F4 @ Aug 17 2013, 23:35) *
Чтобы я проект писал с нуля, то взял бы за основу BerkeleyDB, где такая выборка вообще не нагрузка, а так приходится допиливать что есть.

Ненене, только не это. В ней даже индексов нет.
Alt.F4
MKdemiurg, во всем участвует еще Apache, но разве он будет так тормозить процесс?
Tiro, наблюдал сумасшедшие выборки, все летает.
MKdemiurg
Цитата(Alt.F4 @ Aug 18 2013, 08:30) *
MKdemiurg, во всем участвует еще Apache, но разве он будет так тормозить процесс?

Дык,а почему бы и нет?
Апач вобще штука глючная.
Просто попробуйте неапач ,чтобы проверить. NGINX например.
ЗЫ А индексы по полям выборки стоят? У меня например таблица разбивается на 50 уникальных индексов + индекс по времени. ПОлучается, что запрос реально происходит не из 500т строк, а из 5-10. Без них минимум в 10 раз дольше выборка.
Alt.F4
MKdemiurg, морознул немного, попробовал выполнить тот же запрос вне всяких оболочек через php с выводом времени, вышло около 3сек.
Буду искать затык в "быдлокоде"...

Что касается индексов, то они будут сильно тормозить процесс добавления новых данных (до сотни в 1сек) + лишний объем.
А такие огромные выборки весьма редки, в основном десяток последних данных, поэтому индексы тут не пойдут.

Цитата
Апач вобще штука глючная.
Просто попробуйте неапач ,чтобы проверить. NGINX например.
Я бы с радостью заменил Apache, но ничего другого не нашел для динамического контента.

Кстати, по размеру InnoDB, попробовал ради эксперимента сменить тип таблицы на Archive Storage Engine, объем уменьшился в сотни раз, а скорость выборки осталась таже.
Очень остро стоит вопрос в размещении всей таблицы в СОЗУ, может заюзать лучше Archive Storage Engine?
MKdemiurg
Цитата(Alt.F4 @ Aug 18 2013, 10:01) *
Кстати, по размеру InnoDB, попробовал ради эксперимента сменить тип таблицы на Archive Storage Engine, объем уменьшился в сотни раз, а скорость выборки осталась таже.
Очень остро стоит вопрос в размещении всей таблицы в СОЗУ, может заюзать лучше Archive Storage Engine?

Лучше спросить тут http://sqlinfo.ru/
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.