[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как проверить производительность сервера mysql
vuler
Здравствуйте.
хотинг от мастерхоста. Вчера почему-то резко упала производительность базы данных. Можно ли узнать производительность сервера базы данных? Может существует какой-то тестовый запрос на скорость выборки из тестовой таблицы, чтобы по времени его выполнения, можно было судить о производительности базы данных? Т.к. не вполне уверен связано падение производительности с сервером или с длинными запросами.
Несколько слов по запросам.

Вначале выполняется запрос из таблицы с фильтром и сортировкой, чтобы найти количество записей удовлетворяющее условиям сортировки. Тут проверяется чтобы у записи было имя рубрики из списка и имя города из списка.
SELECT id FROM firm_catalog WHERE (rubric_id LIKE '%,6,%' OR rubric_id LIKE '%,8,%' OR rubric_id LIKE '%,9,%' OR rubric_id LIKE '%,14,%') AND ( city_id=1 OR city_id=1771 OR city_id=1701 ) ORDER BY time

Потом идет выборка из полученного списка. Сделано чтобы отобразить текущую старницу с запросом. например 2-я страница по 5 записей на старнице. Поэтому id начинается с 6-й записи из первой таблицы.
$sql="SELECT id,type,name,logo,city,city_id,descr_small,rubric_id,access FROM firm_catalog WHERE id='125' OR id='124' OR id='123' OR id='122' OR id='121' OR id='120' OR id='119' OR id='118' OR id='117' OR id='116' ORDER BY time

Потом вопрос, можно ли в этом запросе объединить следующие запросы:
Из таблицы берется city_id.
Делается запрос
SELECT id_region,id_country,city_name_ru FROM cities WHERE id_city='$city_id;
SELECT country_name_ru FROM countries WHERE id_country='$id_country'";
SELECT region_name_ru FROM regions WHERE id_region='$id_region'";
Тут по city_id из трех таблиц вынимаются city_name_ru /region_name_ru/ country_name_ru. Т.е. имя города, региона и страны.

Весь запрос идет где-то 3-4 секунды. Хотя в таблице firm_catalog всего 15 тестовых записей. Раньше весь запрос проходил за секунду максимум(все запросы включая выбор городов и регионов)



Спустя 22 минуты, 58 секунд (16.03.2012 - 09:43) vuler написал(а):
Да, скорей всего производительность падает из-за последних 3-х запросов, т.к. они делаются для каждой выборки по id, если 10 фирм на странице, то проходит 30 запросов. Можно как-нибудь в выборку фирм по id его вогнать?

Спустя 12 минут, 48 секунд (16.03.2012 - 09:56) Visman написал(а):
Через JOIN прицепляй в основном запросе нужные таблицы и бери оттуда данные разом.

Спустя 43 минуты, 1 секунда (16.03.2012 - 10:39) vuler написал(а):
Что-то не могу составить запрос sad.gif
Пишу что-то типа такого.

$sql="SELECT id,type,name,logo,city,city_id,descr_small,rubric_id,access,city_name_ru FROM firm_catalog JOIN cities ON firm_catalog.city_id=cities.id_city WHERE firm_catalog.id='125' OR firm_catalog.id='124' OR firm_catalog.id='123'"

Нужно выбрать все id,type,name,logo,city,city_id,descr_small,rubric_id,access
из
firm_catalog
а к успешно найденым записям добавить
название города определенное по city_id из таблицы cities

Спустя 24 минуты, 13 секунд (16.03.2012 - 11:03) Visman написал(а):
Используй несколько JOIN (наверное можно LEFT JOIN, чтобы при отсутствии записи в справочнике результат все равно выводился).
Связывай справочники в ON их JOIN'ов.
$sql="SELECT id,type,name,logo,city,city_id,descr_small,rubric_id,access,city_name_ru, country_name_ru
FROM firm_catalog
LEFT JOIN cities ON (firm_catalog.city_id=cities.id_city)
LEFT JOIN countries ON (countries.id_country=cities.id_country)
WHERE firm_catalog.id='125' OR firm_catalog.id='124' OR firm_catalog.id='123'"

Спустя 1 минута, 5 секунд (16.03.2012 - 11:04) Visman написал(а):
WHERE firm_catalog.id='125' OR firm_catalog.id='124' OR firm_catalog.id='123'

-->
WHERE firm_catalog.id IN ('125', '124', '123')

Спустя 55 минут, 56 секунд (16.03.2012 - 12:00) Guest написал(а):
Спасибо вроде помогло smile.gif теперь буду разбираться во всем написанном smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.