Производительность при группировке

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ivan_Pisarevsky
Заслуженный разработчик
Сообщения: 644
Зарегистрирован: 15 фев 2005, 11:34

Сообщение Ivan_Pisarevsky » 02 авг 2006, 12:49

Dmitry74 писал(а):
dimitr писал(а):
Dmitry74 писал(а):Дак пользователь то всегда на первый раз смотрит
типа стартует сервер, выполняет запрос, останавливает сервер? ню-ню :-)
Да я просто не пойму к чему ты ведёшь
Да все к тому же, более полному и рациональному использованию оперативной памяти сервера.

Это у тебя статистика первого запроса выложена или нет?

Попробуй еще увеличить размер кэша, 10000 похоже мало и фб вынужден доставать странички с диска.

Dmitry74
Сообщения: 70
Зарегистрирован: 31 июл 2006, 15:55

Сообщение Dmitry74 » 02 авг 2006, 13:09

Попробую


а MSDE всегда одно и тоже время выполнения запроса

Можно также настроить и в фб

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 02 авг 2006, 13:18

Dmitry74 писал(а):Можно также настроить и в фб
Если это вопрос, то встречный - а зачем?

Dmitry74
Сообщения: 70
Зарегистрирован: 31 июл 2006, 15:55

Сообщение Dmitry74 » 02 авг 2006, 13:28

CyberMax писал(а):
Dmitry74 писал(а):Можно также настроить и в фб
Если это вопрос, то встречный - а зачем?
Цель только всегда одна
чтоб быстро выгружались данные
и предсказуемо

а не так что сейчас 3 минуты а потом 1 минуту

Заметил такую особенность чем больше данных в запросе тем медленне выгружает (медленее чем MSDE )
а при не большом количестве быстрей чем MSDE

В чём суть?

Ivan_Pisarevsky
Заслуженный разработчик
Сообщения: 644
Зарегистрирован: 15 фев 2005, 11:34

Сообщение Ivan_Pisarevsky » 02 авг 2006, 13:42

Блин, чудес на свете не бывает. Чтоб данные быстро выдрать с накопителя он должен быть ОЧЕНЬ быстрым. обычный САТА винт это 100 иопсов, множим на 8 килобайт сраницы, получаем около 1 мегабайта в секунду, все кирдык, приехали. Все остальное достигается за счет всяких кэширований, чтений большими пакетами, применением рэйд контроллеров, более призводительных скази накопителей.
Судя по всему на старте мсскл сразу пытается затащить всю базу в ОЗУ, как только у него это получилось, все ОК. Производительность на уровне. ФБ же пока страница не нужна в память ее не тянет, чтоб он ее утянул в кэш к ней надо обратиться, чтоб потом она из кэша не вылетела, кеш должен быть достаточно большой. Сервер в боевом режиме имеет аптайм месяцами и в кэше остается именно то, что нужно, по крайней мере я у себя наблюдаю такую картину.

Могу где-то по мелочи соврать, но принцип примерно такой. :)

Ivan_Pisarevsky
Заслуженный разработчик
Сообщения: 644
Зарегистрирован: 15 фев 2005, 11:34

Сообщение Ivan_Pisarevsky » 02 авг 2006, 13:45

Dmitry74 писал(а):Заметил такую особенность чем больше данных в запросе тем медленне выгружает (медленее чем MSDE )
а при не большом количестве быстрей чем MSDE

В чём суть?
ФБ не хватает доступной памяти, ИМХО. По умолчанию он ее расходует черезчур экономно.

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 02 авг 2006, 13:48

Кстати, какой размер базы? (сорри, если где-то пропустил эту инфу).

Dmitry74
Сообщения: 70
Зарегистрирован: 31 июл 2006, 15:55

Сообщение Dmitry74 » 02 авг 2006, 14:06

CyberMax писал(а):Кстати, какой размер базы? (сорри, если где-то пропустил эту инфу).
531 МБ (556 810 240 байт)

Dmitry74
Сообщения: 70
Зарегистрирован: 31 июл 2006, 15:55

Сообщение Dmitry74 » 02 авг 2006, 14:17

Странно, чем Memory buffers меньше тем быстрей работает?

План
PLAN SORT ((MAIN NATURAL))

Адаптированный план
PLAN SORT ((MAIN NATURAL))

------ Performance info ------
Prepare time = 0ms
Execute time = 3m 57s 141ms
Avg fetch time = 14 821,31 ms
Current memory = 5 049 308
Max memory = 5 099 104
Memory buffers = 20 000
Reads from disk to cache = 33 311
Writes from cache to disk = 0
Fetches from cache = 4 862 792


План


PLAN SORT ((MAIN NATURAL))

Адаптированный план
PLAN SORT ((MAIN NATURAL))

------ Performance info ------
Prepare time = 0ms
Execute time = 1m 5s 109ms
Avg fetch time = 4 069,31 ms
Current memory = 957 960
Max memory = 1 038 940
Memory buffers = 2 048
Reads from disk to cache = 33 311
Writes from cache to disk = 0
Fetches from cache = 4 862 792

Ответить