Скорость работы MySql

Maxxon

Новичок
Скорость работы MySql

Привет всем!
Кто может подсказать, как увеличить скорость работа mysql?
В частности, под Mandrake.
У меня скрипт на php формирует табличку на основе данных из базы порядка 10ти минут на 800ом дюроне. Надо быстрее. Проблема в том, что базе тысячи записей и после выполнения запросов, данные обрабатываются php и только потом выводятся.
Изменение (увеличение) параметров в my.chf практически не увеличивает скорость. Таблицы в базе оптимизированы по нормальным формам Бойса-Кодда.
 

Dim-Dim

looking...
У тебя запрос 10 минут отрабатывает или скрипт обрабатывает данные 10 минут?
 

Maxxon

Новичок
Скрипт обрабатывает 10 минут.
Запросов там огромное количество.
Точнее, грубо говоря, несколько запросов типа mysql_query ("SELECT *"), а дальше в циклах mysql_result по определенным полям.

Скрипт строит статистические данные по паре сотен городов России по месяцу. Причем, данный отчет выводится регулярно.
 

Maxxon

Новичок
Курс в институте по базам данных.
В чем моя ошибка?

-~{}~ 01.03.06 11:45:

:) Если б я SQL даже плохо не знал, я б такой скрипт вообще не написал...
 

Фанат

oncle terrible
Команда форума
в том, что обработку ты делаешь в скрипте, а не в базе данных
 

Wicked

Новичок
1) для начала нужно понять, что именно тормозит. Профайлинг делал?
2) почему твой выбор пал именно на mysql_result() ?
 

Фанат

oncle terrible
Команда форума
ну, и в том, что ты ДАЖЕ НЕ ЗНАЕШЬ, сколько времени у тебя работает база данных, но при этом хочешь её ускорить.

Перед тем, как ставить турбонаддув, неплохо бы сначала снаться с ручника.
Это метафора такая.
 

Maxxon

Новичок
Wicked
У меня в базе хранятся цифры, PHP их достает, затем произодит с ними уйму арифметических действий, только затем выводит пользователю.
Тормозит, видимо, из-за большого количества запросов.
Какие могут быть варианты замены mysql_result я не знаю - подскажите плз. Может ли mysql сама производить вычисления? Сомневаюсь. Все-таки это хранилище для данных.
Да, кстати, что такое профайлинг? Я пока не слышал такого понятия.

Фанат
Это имеет такое критическое значение? Я могу, конечно подсчитать количество итераций, но что мне это даст? Количество итераций минимальное допустимое для получения исчерпывающих статистических данных.
Или ты миеешь ввиду, что надо получить значения в секундах?
 

Alexandre

PHPПенсионер
1) http://www.mysql.com/Downloads/super-smack/super-smack-1.0.tar.gz Программа "super-smack" представляет собой многопоточный инструмент оценки производительности для MySQL и PostgreSQL. Написана на C++. Легко расширяется для поддержки других баз данных, имеющих клиентские библиотеки C/C++. Автор Саша Пачев (Sasha Pachev).
2) может это поможет
В MySQL для хранения результатов, чтобы не держать их во временных переменных на клиенте, можно применять пользовательские переменные (see section 6.1.4 Переменные пользователя).

Например, для того чтобы найти изделия с максимальной или минимальной ценой, можно выполнить следующие действия:

mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;
mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price;
 

Maxxon

Новичок
Фанат
Хорошо учился. Но конкретно MySql нам не преподавали, только SQL в общем виде.
Если имеешь ввиду SUM,AVG и прочие функции, то я про них знаю, но мне в моей задаче проблематично их применить.

Alexandre
Спасибо, сейчас почитаю.
 

Wicked

Новичок
1) Профайлинг - протоколирование, позволяющее оценить время выполнения отдельных функций. Таким образом, ты узнаешь, какие части наиболее долгие. Ими то и нужно заниматься в первую очередь.
http://en.wikipedia.org/wiki/Profiling

2) mysql умеет производить арифметические операции. В рамках реляционной модели, естественно.
http://dev.mysql.com/doc/refman/5.0/en/numeric-functions.html
 

Фанат

oncle terrible
Команда форума
понятие профайлинга ты в институте тоже не проходил, как я понимаю?
 

Andreika

"PHP for nubies" reader
Maxxon
ну хоть одну подзадачу расскажи... интересно ж чего ты там с данными делаешь
 

Maxxon

Новичок
Andreika
В двух словах:
Фирма работает в определенном городе определенный период времени. Необходимо вести статистику посещения фирмы людьми за данный пеирод в этом городе, также сравнивая эти цифры с данными прошлых периодов работы, также есть задача анализа рентабельности рекламы в данном городе и резона работы в нем.
В результате строится главная таблица со статистикой посещения по каждому дню в КАЖДОМ городе, который описан в базе данных (т.е. сводный отчет), затем выводятся показатели эффктивности реклам в этих городах.

Конкретнее не могу - конфиденциальная информация.

Фанат
Мы оценивали время выполнения алгоритмов, но не работу БД :(. Прикладная математика...
 

Фанат

oncle terrible
Команда форума
Мы оценивали время выполнения алгоритмов
Я, что-то, логики не понял.
Почему задан вопрос "Скорость работы MySql ", а не "Скорость работы алгоритмов"?
 
Сверху