powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / производительность запросов и tempdb
10 сообщений из 10, страница 1 из 1
производительность запросов и tempdb
    #38344433
energizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, столкнулся с такой проблемой производительности при использовании времянок. Запрос написан с времянкой на порядок по времени отличается чем без времянки на асе15.5 linux. создано несколько темпдб на нормальном внешнем дисковом массиве. Для этих темпдб созданы именованые кеши. Тестил и на файловой системе(dsync off и direct off), и на raw девайсах. Результаты почти теже. Без времянок намного быстрее выполняется запрос. Неужели большие накладные расходы на создание темповой таблицы?
Еще интересно в высоконагруженных проектах используются временные таблицы которые создаются хранимыми процедурами которые очень часто вызываются?
Может посоветуете что можно подкрутить или как проанализировать?
...
Рейтинг: 0 / 0
производительность запросов и tempdb
    #38344489
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит "с времянкой"? Их по разному можно использовать.

Самое эффективное это что-то в духе:
Код: sql
1.
2.
3.
4.
5.
6.
create table #tmp( .... )
insert into #tmp select ....
update #tmp set ....
update #tmp set ....
update #tmp set ....
select .... from #tmp ....


В этом случае у тебя будет возможность контролировать размер времянки и при нужде создавать индексы на нее.

А если что-то в духе:
Код: sql
1.
2.
3.
select ....
from (select ... ) as tmp
join table on tmp.pk=table.pk

то будет тяжко. Полный скан по времянке и хорошо если разовый.


Ткни Shift+F5 в dbisql и посмотри что у тебя в реальности происходит.
...
Рейтинг: 0 / 0
производительность запросов и tempdb
    #38344636
energizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl спасибо за ответ, замеряю время создания вот таких темповых таблиц:
Код: sql
1.
2.
3.
create table #t (pkey numeric (18,0), name varchar(100))
if object_id('#t') is not null begin exec ('drop table #t') end
select 1 as result



Получаю результат:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Parse and Compile Time 0.
Adaptive Server cpu time: 0 ms.
Total writes for this command: 0
 
Execution Time 0.
Adaptive Server cpu time: 0 ms.  Adaptive Server elapsed time: 16 ms.
Total writes for this command: 0
 
Execution Time 0.
Adaptive Server cpu time: 0 ms.  Adaptive Server elapsed time: 0 ms.
Parse and Compile Time 0.
Adaptive Server cpu time: 0 ms.
Total writes for this command: 0
 
Execution Time 0.
Adaptive Server cpu time: 0 ms.  Adaptive Server elapsed time: 0 ms.
Total writes for this command: 0
 
Execution Time 0.
Adaptive Server cpu time: 0 ms.  Adaptive Server elapsed time: 0 ms.
   
result 1
   
Total writes for this command: 0
 
Execution Time 0.
Adaptive Server cpu time: 0 ms.  Adaptive Server elapsed time: 0 ms.



Повторный запуск:
Код: sql
1.
Adaptive Server cpu time: 0 ms.  Adaptive Server elapsed time: 4 ms.


Код: sql
1.
Adaptive Server cpu time: 0 ms.  Adaptive Server elapsed time: 8 ms.


Каждый запуск выполняется с разным временем, а запрос тотже, это нормально или должно быть всегда одинаковое время?
...
Рейтинг: 0 / 0
производительность запросов и tempdb
    #38344652
energizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если этот запрос запустить одновоременно например 50запросов создания темповых таблиц, возрастает время 299mc, при этом ни ядра не высаживаются ни дисковая.
...
Рейтинг: 0 / 0
производительность запросов и tempdb
    #38345622
blzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
energizer1,

вангую блокировки на tempdb..sysobjects/sysindexes и прочее.
в отчете процедурки будет видно
Код: sql
1.
exec sp_object_stats '00:00:10', 5, 'tempdb'
...
Рейтинг: 0 / 0
производительность запросов и tempdb
    #38345823
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
energizer1White Owl спасибо за ответ, замеряю время создания вот таких темповых таблиц:
Код: sql
1.
2.
3.
create table #t (pkey numeric (18,0), name varchar(100))
if object_id('#t') is not null begin exec ('drop table #t') end
select 1 as result

Это конечно тоже можно измерять, но это бессмысленно.
Все равно что измерять расход бензина на основе "выехал из гаража, заехал обратно".

energizer1Каждый запуск выполняется с разным временем, а запрос тотже, это нормально или должно быть всегда одинаковое время?Да, разное время обработки это нормально. Кроме твоих экспериментов сервер делает еще что-то, машина на которой сервер стоит чем то параллельно занимается (хотя бы тем, что получает запросы из сети и отвечает на них)...
В общем разница между запросами в несколько микросекунд это вполне нормально и ожидаемо.
Вот если бы ты на таком кратком скрипте увидел время выполнения в несколько секунд - тогда это будет повод бить тревогу. А 0-16 микросекунд это вполне нормально.

Лучше возьми реальную хранимую процедуру и прогони ее через анализатор (Shift+F5). Намного полезнее будет.
...
Рейтинг: 0 / 0
производительность запросов и tempdb
    #38346621
energizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blzz, за 1 минуту вейтов было 200мс
White Owl, попробую через анализатор прогнать.
...
Рейтинг: 0 / 0
производительность запросов и tempdb
    #38347065
Nashville
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlЧто значит "с времянкой"? Их по разному можно использовать.

Самое эффективное это что-то в духе:
Код: sql
1.
2.
3.
4.
5.
6.
create table #tmp( .... )
insert into #tmp select ....
update #tmp set ....
update #tmp set ....
update #tmp set ....
select .... from #tmp ....




После версии 12.7 я бы не стал это утверждать со 100% уверенностью. Это уже скорее привычки опытных разработчиков.
...
Рейтинг: 0 / 0
производительность запросов и tempdb
    #38347310
energizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl
авторВ общем разница между запросами в несколько микросекунд это вполне нормально и ожидаемо.
Вот если бы ты на таком кратком скрипте увидел время выполнения в несколько секунд - тогда это будет повод бить тревогу. А 0-16 микросекунд это вполне нормально.
Хотелось бы уточнить я значения приводил в миллисекундах, а вы приводите в микросекундах. Хотелось бы уточнить, так как у меня получается при 20 потоках создания времянки:
первая секунда = 400милисекунд
после первой секунды 12-20милисекунд
...
Рейтинг: 0 / 0
производительность запросов и tempdb
    #38347730
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
energizer1Хотелось бы уточнить я значения приводил в миллисекундах, а вы приводите в микросекундах.Я привожу?! ... Ой, действительно я привожу.
Милли- конечно же, а не микро-. Прошу прощения.

Но все остальное что я писал без изменений.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / производительность запросов и tempdb
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]