Ускорение работы MySQL

dunno

Новичок
Ускорение работы MySQL

Существует база (5 таблиц InnoDB): всего 20,2МБ
PHP скрипт выводит данные используя эти таблицы, причем на одну страницу приходится от 100 до 700 запросов.
Проблема заключается в том, что время генерации таких страниц доходит 17ти секунд в зависимости от количества запросов. Это естественно не приемлимо. Пробывал разные настройки кэширования старых запросов и т.д, но это особо не решает проблему так как вариантов генерирующихся страниц очень много и информация обновляется каждые 2-3 дня. Поэтому в основном, я предполагаю, работу на 90% замедляет хард. Оптимизировать количество запросов вряд ли удастся из-за своеобразного вида организации этой инфы.

Существует ли какой-нибудь вариант кэширования всей базы (20МБ совсем же немного?) в память для более быстрого доступа после каждого обновления?

Система: Athlon64 3.5+ / 1GB / SATA1 HDD / Win2k3+PHP5.1.6+MySQL5.0.24

Кстати, раньше стоял MySQL 4ый и было все немного быстрее.

За ранее спасибо.
 

Krishna

Продался Java
Пробывал разные настройки кэширования старых запросов и т.д, но это особо не решает проблему так как вариантов генерирующихся страниц очень много и информация обновляется каждые 2-3 дня.
Если скрипт дергается хотя бы раз в минуту, то кеш уже поможет.

Существует ли какой-нибудь вариант кэширования всей базы (20МБ совсем же немного?) в память для более быстрого доступа после каждого обновления?
Есть механизм хранения MEMORY, когда таблица лежит целиком в базе но он приносит ряд проблем, и врядли ускорит выполнение запроса.
на самом деле, 20 мегабайт считать для современного винчестера дело плевое...
Если, конечно, размер буферов не выставлен в минимальные значения, тогда обращений будет много. А вообще стоит проверить используют ли запросы необходимые индексы.

-~{}~ 02.12.06 01:37:

dunno

А вообще, я думаю можно выложить сюда структуру таблиц и запросы - посмотрим...
 

Фанат

oncle terrible
Команда форума
Krishna
при 700 запросах за 17 секунд среднее время выполнения запроса составит 0,02 сек. Это нормально.
Надо не индексты проверять, а запросы нормальные делать.
В первую очередь - убрать запросы из циклов
 

Krishna

Продался Java
Фанат
Да, мне померещилось, я думал 1 SQL запрос до 17ти секунд, а не HTTP.
Хотя 0.02 на запрос к таблице в 20мб нормально, только если он относительно тяжелый.

-~{}~ 02.12.06 04:45:

Но в общем, конечно, действительно есть подозрение, что можно обойтись без 700та запросов на страницу.
 

alexei.lexx

Новичок
Проблема в том, что один за другим MySQL'ю посылаются 700 простых запросов. Попробуйте просто уменьшить количество запросов, используя связывание таблиц. Всё-таки JOIN не даром придумали.
 

magic

lancer
на одну страницу приходится от 100 до 700 запросов
это типа такие запросы? :)
[sql]#выбираем n-ю запись
SELECT * FROM table WHERE id = 1
SELECT * FROM table WHERE id = 2
SELECT * FROM table WHERE id = 3[/sql]
 
Сверху