powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Простите чайника: параллелизация (АSА 12)
25 сообщений из 35, страница 1 из 2
Простите чайника: параллелизация (АSА 12)
    #38096612
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите за несколько наивный вопрос: должна ли АSА распараллелить такой запрос:

select functionX(), id from table1

(в table1 более 30000 записей)

Можно ли АСА заставить? ;)

Я склонен думать, что паралелить такой запрос не будет ни одна база (ни Оракл, ни МS, ни др). И для распараллеливания надо переписать запрос например используя напр. union. Типa

select functionX(), id from table1 where id <10000
union all
select functionX(), id from table1 where id >=10000 and id <20000
union all
select functionX(), id from table1 where id >=20000
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38096728
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чуть поправлюсь - оригиналный запрос типа

select functionX(id),id from table1

functionX исполняется долго (>5сек). На сервере 2 cpu, ASA бeрет 40+ treads. загрузка CPU <5%...
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38096984
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Костя_1Я склонен думать, что паралелить такой запрос не будет ни одна база (ни Оракл, ни МS, ни др).
с чего бы это? сиквел вполне может такое изобразить - сканирование таблицы в несколько потоков
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38097043
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну алгоритм параллельности эмпирический, поэтому лчше оптимизатору прозрачно намекнуть на это, чем надеяться на чудо.
так что делайте через union all и то не факт что оно всегда будет параллелиться.
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38097254
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Костя_1,

Можно поподробнее про внутренности функции? Может там проблемы или есть возможность считать сразу для всех значений id?
Если механизм вычисления для каждого id однотипный, то проще написать отдельную процедуру, в которой вычислять значения сразу для всех нужных id (т.е. не на уровне каждой записи).
А потом уже из процедуры select
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38097510
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antandЕсли механизм вычисления для каждого id однотипный, то проще написать отдельную процедуру, в которой вычислять значения сразу для всех нужных id (т.е. не на уровне каждой записи).
А потом уже из процедуры selectА еще лучше будет сделать compute поле.
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38097553
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,

я в тайне надеюсь что там у автора в функции не 2х2 ,, а что то поинтереснее .. к тому же зависящее не только от исходной таблицы. Все же на каждое значение что то 5 сек происходит:)
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099165
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ggg_oldну алгоритм параллельности эмпирический, поэтому лчше оптимизатору прозрачно намекнуть на это, чем надеяться на чудо.
.

А как намекнуть (в АСА)?
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099171
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
antand,

внутренности процедуры еще досконально не анализировал (процедура не моя). Но кода там немного есть - точно не 2Х2 :)

сделать view - да, думал о такой вожмозности. Пока хочы понять - то что нет распаралеливания гльк кода или АСЫ.

Или вообще - проблема лицензионного кода - типа лицензия не позволяет использовать больше цпу
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099240
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
под намекнуть я имел ввиду код с юнионами из вашего первого сообщения.
Но так как аса имеет автоматический механизм формирования планов, то в зависимости от текущей нагрузки сервера не факт что план будет параллельным всегда.
Почитайте здесь: http://dcx.sybase.com/index.html#1201/en/dbusage/parallelism.html
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099276
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ggg_old,

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

select id, functio1(id) from table1
union all
select id, functio2(id) from table2

аса берет один цпу а потом когда идет fetching - загрузается другой цпу (на первом загрузка становится = 0)
functio2 - копия functio1 на таблице табле2

table2 копия таблицы table1
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099322
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ggg_old,

когда смотрю план запроса - вижу, что селект разделяется на 4 паралельные ветви (я 'того и хочу).

select

DT DT DT DT

получается - АСА его распараллеливает , но почему-то выполняет только на одном цпу?
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099360
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скажу сразу, я не спец по этому вопросу, но будет лучше, если вы запостите на форум полный план. Может у вас в параметрах сервере жестко задано ограничение в один поток на задачу. Надо смотреть.
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099367
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще, что у вас за сервер, что за дисковый массив? может у вас один диск, так что толку от множества процессоров не будет, т.е. все заткнется на дисковых операциях.
и еще, вы читали инфу по ссылкечто я дал? ALTER DATABASE CALIBRATE PARALLEL READ делали?
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099383
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ALTER DATABASE CALIBRATE PARALLEL READ делал, по ссылке - читал ;-)
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099386
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
запостить план попробую (не так просто - в реальном случае много процедур и сделать план не легко)
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099387
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вы запостите план тестового запроса, такого как вы приводили с юнионами.
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099435
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чтобы исключить диски, я сделал другое.

create function emu () returns bigint
begin
declare i BIGINT ;
declare i2 BIGINT ;
SET i = -3000000;
WHILE i <= 3000000 LOOP
SET i = i + 1;
SET i2 = -3000000;
WHILE i <= 10000000 LOOP
SET i2 = i2 + 1;
END LOOP;
END LOOP;
return i
end

go

create function emu2 () returns bigint
begin
declare i BIGINT ;
declare i2 BIGINT ;
SET i = -3000000;
WHILE i <= 3000000 LOOP
SET i = i + 1;
SET i2 = -3000000;
WHILE i <= 10000000 LOOP
SET i2 = i2 + 1;
END LOOP;
END LOOP;
return i
end

go

далее. запустил

select emu()
union
select emu2();

загружен только один core ;-( может глупо - но хотелось бы загрузки 2 core...

план прицепил. так понимаю - оптимизатор параллелит, но выполнение идет на одном коре.

тоже если запустить
select emu()
select emu2()
go


аса запускается так:
dbsrv12 -gn80 -gtc 8 -gnl 80 -c 700 demo.db

демо.дб - демо база от аса 12.0.1
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099445
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
plan
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099448
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попытка добавить план
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099454
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Костя_1,
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099455
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Костя_1,
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099456
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Костя_1,
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099457
Костя_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Костя_1,
...
Рейтинг: 0 / 0
Простите чайника: параллелизация (АSА 12)
    #38099567
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чему у вас равен параметр сервера: max_query_tasks http://dcx.sybase.com/index.html#1201/en/dbadmin/dboptions-s-5481804.html

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

Если же вам надо сделать именно то, что вы сделали, т.е. внутри хранимки запустить два независимых блока кода параллельно, то можно попробовать другой гарантированно работающий финт - запустить обе функции через trigger event. Тогда они сработают параллельно, и надо будет только засинхронизировать момент их окончания и потом слить. Вот эта статья талантливого и офигенного инженера Брека Картера вам будет архиинтересной и в тему: http://sqlanywhere.blogspot.com/2012/12/intra-procedure-parallelism_5.html
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Простите чайника: параллелизация (АSА 12)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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