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

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

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

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

Сообщение CyberMax » 01 авг 2006, 16:24

IB Expert. Регистрационная информация базы -> Дополнительные -> Вторая группа чекбоксов - сними все флажки и перезапусти запрос. Дай статистику :)

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

Сообщение Ivan_Pisarevsky » 01 авг 2006, 16:58

Dmitry74 писал(а):
Ivan_Pisarevsky писал(а):и сделал запрос очень простой что там даже оптимизировать не чего
А может банально кеш пэджес накрутить, чтоб ФБ диск не дергал?

Мониторинг дисковой активности что говорит?
Какая очередь к диску?
заглянуть firebird.conf пробовал?
Dmitry74 писал(а):Диск крутится будь здоров!
Ну ты просто пальцем в небо с первого раза попал...
Скоко в иопсах?
СКоко средняя длина очереди?

Тебе не зря про статистику говорят, что в ибэксперте...
Dmitry74 писал(а):Ты пишешь у тебя сто тысяч записей а у меня базы по 2 миллиона а бывают и больше.
Вот мне и стало интересно... воспроизводимый пример состряпать можешь?

например одна из таблиц

запрос
select count (*) from st_ved_spec

результат
344045

статистика
Plan
PLAN (ST_VED_SPEC NATURAL)

Adapted Plan
PLAN (ST_VED_SPEC NATURAL)

------ Performance info ------
Prepare time = 0ms
Execute time = 1s 863ms
Avg fetch time = 1 863,00 ms
Current memory = 2 653 880
Max memory = 2 788 796
Memory buffers = 10 000
Reads from disk to cache = 2 690
Writes from cache to disk = 6
Fetches from cache = 693 553

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

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

Изображение

Всё выключено а статистику не показывает

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

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

Может у меня эксперт урезанный :cry:

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

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

Ivan_Pisarevsky писал(а):и сделал запрос очень простой что там даже оптимизировать не чего
пришли мне свой Ibexpert по адресу ADN@DSM.RU

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 01 авг 2006, 18:10

св-ва базы покажи хотя бы. Services / Database Properties. Интересует page size и buffer pages.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 01 авг 2006, 19:30

Ivan_Pisarevsky писал(а): запрос
select count (*) from st_ved_spec

результат
344045

Execute time = 1s 863ms
А теперь попробуй с группировкой по паре-тройке полей. Если "результат" умножить на 10, то можно действительно нехило отдохнуть.

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

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

Merlin писал(а):
Ivan_Pisarevsky писал(а): запрос
select count (*) from st_ved_spec

результат
344045

Execute time = 1s 863ms
А теперь попробуй с группировкой по паре-тройке полей. Если "результат" умножить на 10, то можно действительно нехило отдохнуть.
Это игровая копия базы на моем рабочем дектопе, у него один ide винт и один процессор селерон 1300 мегагерцов. :wink: Надо быть изрядным извращенцем, чтоб тягать на таком конфиге многомиллионные таблицы. :shock: Хотя копия на моем десктопе, моей БД, где вот эта таблица присутствует в числе прочих, работает совершенно адекватно, я по таким таблицам натурамлом не шарюсь.

>пришли мне свой Ibexpert
Прислать-то не жалко(лови примерно 5 мег), только он у меня ужо наверняка устаревший,от конца прошлого года и скачан с сайта первоисточника www.ibexpert.com

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

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

Иван спасибо за твой эксперт
он мне выдал статистику

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

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

------ Performance info ------
Prepare time = 0ms
Execute time = 1m 18s 735ms
Avg fetch time = 4 920,94 ms
Current memory = 698 644
Max memory = 864 012
Memory buffers = 2 048
Reads from disk to cache = 597 548
Writes from cache to disk = 0
Fetches from cache = 5 988 721

PS Всётаки у меня была урезанная копия

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

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

Merlin писал(а):А теперь попробуй с группировкой по паре-тройке полей. Если "результат" умножить на 10, то можно действительно нехило отдохнуть.
Прикола ради попробавал запустить такой же запрос, по той же таблице, на том же сервере, только дважды. Результат второго исполнения слегонца получше, диск уже не лимитирует

Код: Выделить всё

Plan
PLAN (ST_VED_SPEC NATURAL)

Adapted Plan
PLAN (ST_VED_SPEC NATURAL)

------ Performance info ------
Prepare time = 0ms
Execute time = 561ms
Avg fetch time = 561,00 ms
Current memory = 3 605 724
Max memory = 4 089 876
Memory buffers = 10 000
Reads from disk to cache = 0  <- !!! И сразу видно в 3 с лишним раза быстрее.
Writes from cache to disk = 6
Fetches from cache = 693 547
 
:)

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

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

Memory buffers = 2 048

СЛИШКОМ МАЛО !!!

Какой размер страницы?

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

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

Вчера провёл эксперемент
Установил движок
MSDE (урезанная копия SQL server)
Создал базу перекачал все данные из FireBird в MSDE
Выполнил запрос с группировкой в этих двух базах (кол записей в таблице ,по которой делался запрос, 2 500 000 записей )
(прога написана на Delphi 7
для MSDE использовал ADO
для FireBird использовал компаненты с закладки InterBase)

в MSDE 58 сек
в FireBird 2 мин 01 сек

Что подкрутить чтоб FireBird выиграл по времени?

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

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

Reads from disk to cache = 597 548

Зуб даю, диск тормозит!
отрестрь базу с явным указанием размера страницы 8 и 16 килобайт, и накрути в конфиге кеш не меньше 10000.

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

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

Ivan_Pisarevsky писал(а):Memory buffers = 2 048

СЛИШКОМ МАЛО !!!

Какой размер страницы?
как его увеличить

если я использую
1. локальную установку (пользую только GDS32.dll)
2. серверную установку (Пользую сервер FireBird)

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

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

находишь файл firebird.conf
там строку
#DefaultDbCachePages = 2048
меняешь на
DefaultDbCachePages = 10000
или даже выше, смотря сколько у тебя памяти в сервере, чтоб своп не свалился.
передергиваешь фб и пробуешь.

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

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

Ты не торопись, ты читай... :)

1. локальную установку (пользую только GDS32.dll)
Локальная установка идет лесом, она в определенных ситуациях нужна эндюзеру, но никак ни разработчику.

Не хватало еще отладку вести на эибендед версии :lol:

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

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

Ivan_Pisarevsky писал(а):находишь файл firebird.conf
там строку
#DefaultDbCachePages = 2048
меняешь на
DefaultDbCachePages = 10000
или даже выше, смотря сколько у тебя памяти в сервере, чтоб своп не свалился.
передергиваешь фб и пробуешь.
А если без сервера то как?

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

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

короче щас попробую и доложу!
(моя задача обогнать MSDE)

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

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

Лучше не стало
План
PLAN SORT ((MAIN NATURAL))

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

------ Performance info ------
Prepare time = 0ms
Execute time = 1m 14s 954ms
Avg fetch time = 4 684,63 ms
Current memory = 2 481 580
Max memory = 2 646 976
Memory buffers = 10 000
Reads from disk to cache = 597 548
Writes from cache to disk = 0
Fetches from cache = 5 988 721

Если ещё какие нибудь предложения

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 02 авг 2006, 11:03

MSDE ты хоть убейся на полном сканировании не обгонишь, но и отставание на 30% тоже неплохо.
А вообще статистический отчет за год строящийся за минуту... твое счастье что ты с Галактикой не работал. Там это удовольствие на полчаса мимнимум.

Ответить