|
время выполнения запроса
|
|||
---|---|---|---|
#18+
Добрый день! В рунтайме программа в цикле формирует запросы к БД для заполнения книги в Экселе. порядка 30тыс селектов разной степени сложности (размерность таблицы 900 на 35). время выполнения одного запроса 3-10сек. Например такой select count(id) from sc inner join scf on sc.id=scf.stat_card_id where sc_id!=-1 and (period_id = 20 or period_id = 19 ) and ((( scf.res=21 or scf.res=32 or scf.res=1 or scf.res=31 or scf.res=4 or scf.res=5 or scf.res=6 or scf.res=7 or scf.res=8 or scf.res=9 or scf.res=10 or scf.res=11 or scf.res=12 or scf.res=13 or scf.res=14 or scf.res=15 or scf.res=17 or scf.res=18 or scf.res=16 or scf.res=20) ) ) and (( scf.res=1 ) ) and sc.mode_sc in (0,1,4) План выполнения такой Plan PLAN JOIN (SCF INDEX (SCF_RES, SCF_PERIOD_ID, SCF_PERIOD_ID), SC INDEX (RDB$PRIMARY51)) Adapted Plan PLAN JOIN (SCF INDEX (SCF_RES, SCF_PERIOD_ID, SCF_PERIOD_ID), SC INDEX (PK_SC)) ------ Performance info ------ Prepare time = 0ms Execute time = 3s 276ms Avg fetch time = 3 276,00 ms Current memory = 43 336 744 Max memory = 43 482 792 Memory buffers = 2 048 Reads from disk to cache = 52 484 Writes from cache to disk = 0 Fetches from cache = 5 515 962 FB - SS 2.5.1.26351 Win7(64) Для доступа к базе используются компоненты FIB. КОличество записей в SC и SCF порядка 10млн. Это нормальное (обычное) время выполнения запроса или можно как-то ускорить, чтобы было менее секунды. Сейчас для расчета такой таблицы уходит порядка суток! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 22:16 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
che_work, страничный кеш подымай, раз уж у тебя супер. Например до 50K. Не знаю насколько его можно ещё задрать в 2.5, но не больше чем FileSystemCacheThreshold. Запрос наверное тоже можно ускорить, но я так понял они у вас автоматом строятся ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 22:31 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
Симонов Денисche_work, страничный кеш подымай, раз уж у тебя супер. Например до 50K. Не знаю насколько его можно ещё задрать в 2.5, но не больше чем FileSystemCacheThreshold. Запрос наверное тоже можно ускорить, но я так понял они у вас автоматом строятся Да, не указывал - настройки сервера все дефолтные. DefaultDbCachePages - этот параметр? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 22:35 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
che_work, да. Если программу разрабатываешь ты, можно попробовать аккуратно перейти на 3.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2018, 22:43 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
che_workНапример такой Это настоящий запрос или "чисто для примера"? В первом случае его формирователю надо что-нибудь оторвать за условие "(scf.res=21 or scf.res=1) and scf.res=1". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2018, 00:17 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
che_workпорядка 30тыс селектов ... можно как-то ускоритьИзбавиться от 30к запросов. Другого пути нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2018, 09:01 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovche_workНапример такой Это настоящий запрос или "чисто для примера"? В первом случае его формирователю надо что-нибудь оторвать за условие "(scf.res=21 or scf.res=1) and scf.res=1". Не нужно отрывать. Запрос реальный, не "для примера". Есть и более сложные - связь по трем-четырем таблицам inner join, условия для проверки на бОльшее количество строк. Так построен алгоритм формирования запросов - условия по строке таблицы + условия по графе. В общем от этого не уйти. Но ведь не это же причина "тормозов" ? Собственно я хотел узнать: при таких условиях время 3-10 сек - это "тормоза" или норма? Или можно улучшить хотя бы в несколько раз? И тогда еще попутно вопрос - в толстом клиенте замерял время выполнения этих же запросов. Там время выполнения больше - 10-20 сек, чем в ibexpert-е. Наверное так и должно быть? (работа компонентов FIB? сервера). Или же время должно быть сопоставимо? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2018, 10:41 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
che_workВ общем от этого не уйти. Но ведь не это же причина "тормозов" ? Может быть и в этом. Изучай http://www.ibase.ru/dataaccesspaths/ che_workСобственно я хотел узнать: при таких условиях время 3-10 сек - это "тормоза" или норма? Или можно улучшить хотя бы в несколько раз? Это тормоза. Улучшить, скорее всего, можно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2018, 12:43 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
che_workТам время выполнения больше - 10-20 сек, чем в ibexpert-е. Наверное так и должно быть? (работа компонентов FIB? сервера).Я тебе страшную тайну приоткрою, в эксперте используются ФИБ-ы. :) che_workMemory buffers = 2 048 Reads from disk to cache = 52 484Увеличивай первый параметр (научное имя DefaultDbCachePages в конфиге), чтобы второй приблизился к нулю и при этом сервер не вывалился в своп. Сам сервер обновить как минимум до 2.5.8 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2018, 13:21 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
Ivan_Pisarevskyche_workТам время выполнения больше - 10-20 сек, чем в ibexpert-е. Наверное так и должно быть? (работа компонентов FIB? сервера).Я тебе страшную тайну приоткрою, в эксперте используются ФИБ-ы. :) che_workMemory buffers = 2 048 Reads from disk to cache = 52 484Увеличивай первый параметр (научное имя DefaultDbCachePages в конфиге), чтобы второй приблизился к нулю и при этом сервер не вывалился в своп. Сам сервер обновить как минимум до 2.5.8Спасибо. Проверю ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2018, 14:45 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
поставил FB - SS 2.5.8. Увеличил DefaultDbCachePages. Сделал равным 65 536. Первый раз после запуска службы в ibexpert-e показатели такие Prepare time = 0ms Execute time = 1m 21s 464ms Avg fetch time = 81 464,00 ms Current memory = 1 099 025 072 Max memory = 1 099 034 816 Memory buffers = 65 536 Reads from disk to cache = 49 544 Writes from cache to disk = 0 Fetches from cache = 5 515 962 Второй раз выполнил запрос - данные дргие. Prepare time = 0ms Execute time = 2s 995ms Avg fetch time = 2 995,00 ms Current memory = 1 099 025 192 Max memory = 1 099 148 544 Memory buffers = 65 536 Reads from disk to cache = 0 Writes from cache to disk = 0 Fetches from cache = 5 515 962 Лучше , но всё равно сравнимо с первоначальным. Наверное настройками сервера кардинально показатели не улучшить ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2018, 15:24 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
che_workMemory buffers = 65 536 Лучше , но всё равно сравнимо с первоначальным.А ведь тебя специально предупреждали, чтобы ты не ставил 65536 или любое другое число, большее, чем SystemCacheTreshold... С таким отношением, я так понимаю, про селективность индексов и сбор статистики лучше вообще не заикаться. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2018, 15:49 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovche_workMemory buffers = 65 536 Лучше , но всё равно сравнимо с первоначальным.А ведь тебя специально предупреждали, чтобы ты не ставил 65536 или любое другое число, большее, чем SystemCacheTreshold... С таким отношением, я так понимаю, про селективность индексов и сбор статистики лучше вообще не заикаться. Я проверил разные варианты - 8К, 16К, 32К, 64К Сейчас поставил 64000 Результат: Plan PLAN JOIN (STAT_CARD_FLAT INDEX (SCF_RES_MEETING, SCF_PERIOD_ID, SCF_PERIOD_ID), STAT_CARD INDEX (RDB$PRIMARY51)) Adapted Plan PLAN JOIN (STAT_CARD_FLAT INDEX (SCF_RES_MEETING, SCF_PERIOD_ID, SCF_PERIOD_ID), STAT_CARD INDEX (PK_STAT_CARD)) ------ Performance info ------ Prepare time = 0ms Execute time = 1m 18s 516ms Avg fetch time = 78 516,00 ms Current memory = 1 073 490 616 Max memory = 1 073 500 504 Memory buffers = 64 000 Reads from disk to cache = 49 544 Writes from cache to disk = 0 Fetches from cache = 5 515 96 Plan PLAN JOIN (STAT_CARD_FLAT INDEX (SCF_RES_MEETING, SCF_PERIOD_ID, SCF_PERIOD_ID), STAT_CARD INDEX (RDB$PRIMARY51)) Adapted Plan PLAN JOIN (STAT_CARD_FLAT INDEX (SCF_RES_MEETING, SCF_PERIOD_ID, SCF_PERIOD_ID), STAT_CARD INDEX (PK_STAT_CARD)) ------ Performance info ------ Prepare time = 0ms Execute time = 2s 902ms Avg fetch time = 2 902,00 ms Current memory = 1 073 490 712 Max memory = 1 073 614 104 Memory buffers = 64 000 Reads from disk to cache = 0 Writes from cache to disk = 0 Fetches from cache = 5 515 962 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2018, 16:14 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
che_work, значит остаётся только переписывать запросы в человеческий вид Ну и 30000 SELECT запросов в цикле это бред, над архитектурой надо крепко подумать ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2018, 17:03 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
Симонов Денисche_work, значит остаётся только переписывать запросы в человеческий вид Ну и 30000 SELECT запросов в цикле это бред, над архитектурой надо крепко подуматьпонятно, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2018, 17:28 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
che_workЯ проверил разные варианты - 8К, 16К, 32К, 64К Ок, всё закэшировано. Раз уж ты самостоятельно изучать теорию не хочешь, идём дальше по шагам. Если выкинуть из запроса бессмысленный мусор, в нём остаётся три полезных условия: 1) period_id = 20 or period_id = 19 2) scf.res=1 3) sc.mode_sc in (0,1,4) Сколько записей подпадают под эти условия по отдельности (в штуках и процентах от общего числа записей в соответствующей таблице)? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2018, 17:34 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, да бесполезно это. Ты ему один запрос поправишь, а него ещё 29999 построенных по тому же принципу ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2018, 17:58 |
|
время выполнения запроса
|
|||
---|---|---|---|
#18+
Симонов ДенисТы ему один запрос поправишь, а него ещё 29999 построенных по тому же принципу Значит и будем править принцип. Может, ему статистику индексов просто пересчитать надо?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2018, 18:09 |
|
|
start [/forum/topic.php?fid=40&msg=39702588&tid=1560980]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 301ms |
total: | 459ms |
0 / 0 |