powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как бороться с блокировками в ASE 12.5.0.3
42 сообщений из 42, показаны все 2 страниц
Как бороться с блокировками в ASE 12.5.0.3
    #32516901
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стабильная ситуация всех заблокировал 29 две минуты все отдыхают.
29 ничего сложного не делает, он запустил процедуру и должен
модифицировать несколько записей в разных таблицах.
Отдельно такая процедура выполняется моментально, но как видно не всегда.
Как бороться с блокировками?

На сервере кроме ASE ничего нет.
Все пользовательские обращения к базе через хранимые процедуры.
В процедурах частенько используется CREATE TABLE #name_table( ...

Система: Microsoft Windows Server 2003
Сервер: Xeon(TM) CPU 2.80 ГГц, ОЗУ 2.00 ГБ

Размер базы данных: ak_2004 - 2 GB = (1 GB data + 1 GB Log)
Data Spase Usage
Data (17.4%) 173.54 MB
Indexes (12.8%) 128.43 MB
Unused (4.9%) 49.39 MB
Unreserved (64.9%) 648.65 MB

Options:
Check - Allow select into/bulk copy
Check - Checkpoint on recovery
Check - Free space accounting

dump transaction akv_2004 to @path -- каждые 20 минут.

Размер tempdb 603 Mb = (3Mb Data and Log + 300 Data + 300 Log)
Options:
Check - Allow select into/bulk copy
Check - Truncate log on checkpoint
Check - Checkpoint on recovery
Check - Free space accounting

SELECT @@version
Adaptive Server Enterprise/12.5.0.3/EBF 11449 ESD#4/P/NT (IX86)/OS
4.0/rel12503/1939/32-bit/OPT/Sat Sep 20 22:28:57 2003

sp_cacheconfig 'default data cache'
default data cache Active Default 700.00 Mb 700.00 Mb

sp_configure 'procedure cache size'
procedure cache size 3271 67488 32000 32000 memory pages(2k) dynamic

sp_configure "max memory"
max memory 33792 1536000 768000 768000 memory pages(2k) dynamic

sp_configure "total logical memory"
total logical memory 33792 852942 426460 426471 memory pages(2k) read-only

sp_configure "total physical memory"
total physical memory 0 852920 0 426460 memory pages(2k) read-only

sp_who
spid..status...........loginame...blk_spid....dbname.....cmd
17....recv sleep.....zaitsev........0.........ak_2004......AWAITING COMMAND
19....lock sleep......maxdrouj...29........ak_2004......DROP TABLE
21....recv sleep.....arapov........0.........ak_2004......AWAITING COMMAND
29....sleeping........chehova......0.........tempdb.......CREATE TABLE
31....running.........sa..............0.........master........SELECT
36....recv sleep.....zaitsev........0........ak_2004.......AWAITING COMMAND
38....lock sleep.....antonov.....29.........ak_2004.......DROP TABLE
40....recv sleep.....grigo...........0........ak_2004.......AWAITING COMMAND
43....lock sleep.....tihonovp....29.........tempdb........CREATE TABLE
44....recv sleep.....piskunov....0..........ak_2004.......AWAITING COMMAND
45....recv sleep.....topchiev....0..........ak_2004.......AWAITING COMMAND
53....lock sleep.....okureva.....29.........tempdb........CREATE TABLE
54....recv sleep.....fedchko.....0..........ak_2004.......AWAITING COMMAND
57....recv sleep.....sheky........0..........ak_2004.......AWAITING COMMAND
62....recv sleep.....lugaay.......0..........ak_2004.......AWAITING COMMAND
64....lock sleep.....beljva........29.........ak_2004.......DROP TABLE

Как бороться с блокировками?
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32516962
Mladov Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скорее всего блокируются служебные таблицы в tempdb.
На каком-то форуме надыбал полезную ХП. Выполни в БД sybsystemproc.
Простой sp_lock непонятные данные дает, а этот вроде ничего.
Выполни в момент блокировки sp_dba_locks и посмотри, какие таблицы заблокированы.

/*************************************************/
create proc sp_dba_locks
@spid int = null
as
select l.fid,
l.spid,
loginame=convert(char(12), suser_name(sp1.suid)),
locktype = v1.name,
"table" = object_name(l.id,l.dbid),
l.page,
dbname = db_name(l.dbid),
l.class,
context=v2.name
from master..syslocks l,
master..spt_values v1,
master..spt_values v2,
master..sysprocesses sp1
where l.type = v1.number
and v1.type = "L"
and (l.context+2048) = v2.number
and v2.type = "L2"
and (l.spid = @spid or l.fid = @spid or @spid is null)
and sp1.spid=l.spid
order by l.fid, l.spid, l.dbname, l.id, locktype, l.page

/*************************************************/

Могу порекомендовать во всех ХП поставить create table #<name> в начало процедуры, а drop table #<name> в самый конец ХП.
Еще можно посоветовать использовать не create table... insert, а select into и insert into. Для временных таблиц - самое оно. Выполняется быстрее, чем create table-insert.
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32516974
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Выполни в момент блокировки sp_dba_locks и посмотри, какие таблицы заблокированы.
Допустим, я отловил момент и нашел системные таблицы, которые
блокируются, а что с ними делать?

Код: plaintext
во всех ХП поставить create table #<name> в начало процедуры, а drop table #<name> в самый конец ХП.
Всюду так и сделано.

Код: plaintext
использовать не create table... insert, а select into и insert into. 
Переписывать больно много :(
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32517094
immutable
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно изменить уровень блокировки для пользовательских таблиц,
перестроить индексы
(например, у тебя кластерный индекс по identity полю, блокируется последняя
страница, с которой все работают и т.д.)
Конкретики не хватает.


Владимир
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32517101
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уровень блокировки я менял, это приводит к ошибкам логики :(
А конкретнее - всегда вешается на операции CREATE TABLE в tempdb
это видно по sh_who
Все остальные случаи проходят на ура, значит где-то здесь нужно капать....
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32517110
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня было подобное, правда на ASA. В итоге победил подправив клиентскую программу на посылку commit после завершения ХП. Никаких изменений в базе эти ХП у меня не делали, просто сложные выборки через временные таблицы.
Кстати, может помочь и вставка коммита в конец самой процедуры, после drop table #t.
Третий метод борьбы - клиентская программа может работать в режиме connect->one_request->disconnect :)
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32517427
Mladov Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
Допустим, я отловил момент и нашел системные таблицы, которые 
блокируются, а что с ними делать?
Вполне возможно, что идет блокировка не системных таблиц, а последней страницы транз. лога.
Лучше все-таки посмотри, что блокируется, потому, как 29 у тебя создает таблицу в tempdb, а блокируются также и те, кто делает что-то в ak_2004.

Если блокировки идут из-за тр. лога, то придется менять на select into, т.к. она в тр. лог не пишется.
Если все-таки блокируются системные таблицы (sysobjects, например), то скорее всего придется переписывать ХП. Вообще-то, лучше покажи ХП, которую выполняет 29, и рез-т работы sp_dba_locks в момент работы ХП.

Как вариант можно поиграться параметрами ASE, в названии которых присутствует lock или spinlock. Но при этом _обязательно_ читать administrator guide и perfomance and tuning guide по значениям этих параметров. Иначе можно такого наизменять... 8)))

Код: plaintext
Уровень блокировки я менял, это приводит к ошибкам логики
В смысле?
Мне, например, помогло изменение уровня блокировок на некоторых (на наиболее используемых, а их процентов 30-40) таблицах с datapages на datarow. Правда, пришлось увеличивать число блокировок и поковырять некоторые параметры, ответственные за блокировки, но жить стало легче.

Вот еще что - у тебя create table часом не внутри транзакции выполняется?
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32517455
immutable
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, можно сделать разделяемую псевдовременную таблицу в tempdb(и поместить её в model, чтобы она пересоздавалась при restart'е).
Пользователей разделять по host_id (например сделать view которая будет показывать данные только текущей сессии).
Тогда блокировки системных таблиц не будет, но нужно будет править код.

Запусти sp_lock или более user friendly аналог во время блокировки - тогда
можно будет говорить конкретнее.



2 Mladov Alexey:
А зачем серверу блокировать журнал транзакций?



Владимир
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32517461
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
В итоге победил подправив клиентскую программу на посылку commit после завершения ХП
Удивительное рядом :) у меня тоже .of_commit () стоит после вызова
процедуры, но мне кажется дело не в этом.


Код: plaintext
 29  у тебя создает таблицу в tempdb, а блокируются также и те, кто делает что-то в ak_2004.

Блокируются те кто делает CREATE TABLE #<...> или DROP TABLE #<...>
Это временные таблицы и как я понимаю создаются они на tempdb,
а удаляется, почему-то, на ak_2004. ???

Кроме временных таблиц пользователи таблицы не создают и не удаляют,
а блокируется именно эта операция, значит тормозит работу создание или
удалением временных таблиц.
64....lock sleep.....beljva........29.........ak_2004....... DROP TABLE

Как с этим бороться? или я не там копаю...
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32518083
Mladov Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 immutable: А как же иначе??? А если _одновременно_ пишется лог нескольких пользователей?

Насколько мне известно (может меня поправят, если я неправ) в ASE работа с тр. логом организована примерно так: каждый пользователь (коннект) имеет свой лог-буфер; его размер по умолчанию 512 байт(если не путаю); Все изменения в транзакции накапливаются в этом буфере; после заполнения буфера он сбрасывается на диск (т.е. вносятся изменения в последнюю страницу тр. лога), в момент записи происходит блокировка последней страницы тр. лога, после записи блокировка снимается.
Если лог-буфер маленький (размер средней транзакции больше буфера), то сброс буфера на диск происходит часто, что при активности пользователей ведет к постоянным блокировкам последней страницы тр. лога и высокой конкуренции за доступ к ней. Чтобы этого избежать, надо увеличить размер лог-буфера (параметр user log cache size). Максимальный размер лог-буфера, который был запрошен, можно посмотреть, запустив sp_sysmon <интервал>, где <интервал> - интервал времени в формате 'hh:mm:ss', за который собирать статистику (минут на 5-10 в момент пиковых нагрузок). Если макс. размер user log cache равен установленному, то надо увеличить user log cache size. Затем посмотреть снова. У меня user log cache size равен 8192, а максимальный размер по данным sp_sysmon 7 тыс с небольшим.

2 Badger Ты все-таки помотри, какие таблицы лочатся.
И покажи ХП. Не всю (если большая или засекреченная), а хотя бы основной алгоритм - begin tran? create table, drop table...

Еще раз повторюсь: у тебя create table часом не внутри транзакции выполняется?
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32518150
immutable
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На время записи буфера это понятно,
но не на несколько минут.

Владимир
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32518704
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По многочисленным просьбам привожу текст процедуры, которая всех
залочила, и список заблокированных таблиц.
Процедура "ask_f_deal" запускается всеми пользователями чаще других
она хорошо отлажена, в части производительности, и работает быстро.
Но один два раза в час происходит подвешивание всего сервера на
2-3 минуты, что ни есть хорошо.....

sp_who
go

fid.....spid.....status.....loginame.....origname.....hostname.....blk_spid.....dbname.....cmd.....block_xloid
0.....2.....sleeping.........[NULL].....[NULL]....................0.........master.....NETWORK.HANDLER......0
0.....3.....sleeping.........[NULL].....[NULL]....................0.........master.....NETWORK.HANDLER......0
0.....4.....sleeping.........[NULL].....[NULL]....................0.........master.....DEADLOCK.TUNE........0
0.....5.....sleeping.........[NULL].....[NULL]....................0.........master.....MIRROR.HANDLER.......0
0.....6.....sleeping.........[NULL].....[NULL]....................0.........master.....SHUTDOWN.HANDLER.....0
0.....7.....sleeping.........[NULL].....[NULL]....................0.........master.....ASTC.HANDLER.........0
0.....8.....sleeping.........[NULL].....[NULL]....................0.........tempdb.....CHECKPOINT.SLEEP.....0
0.....9.....sleeping.........[NULL].....[NULL]....................0.........master.....HK.WASH..............0
0.....10.....sleeping.........[NULL].....[NULL]....................0.........master.....HK.GC................0
0.....11.....sleeping.........[NULL].....[NULL]....................0.........master.....HK.CHORES............0
0.....12.....sleeping.........[NULL].....[NULL]....................0.........master.....DTC.COMMIT.SVC.......0
0.....18.....sleeping.........beljkova.....beljkova.....BELJKOVA.......0.........tempdb.....CREATE.TABLE.........0
0.....19.....recv.sleep.......zaitsev.....zaitsev.....ZOLOTAREV......0.........akv_2004.....AWAITING.COMMAND.....0
0.....23.....recv.sleep.......chehova.....chehova.....CONVERSBAN.....0.........akv_2004.....AWAITING.COMMAND.....0
0.....25.....recv.sleep.......shekersky.....shekersky.....SHEKERSKY2.....0.........akv_2004.....AWAITING.COMMAND.....0
0.....30.....recv.sleep.......topchiev.....topchiev.....TOPCHIEV.......0.........akv_2004.....AWAITING.COMMAND.....0
0.....34.....lock.sleep.......zaitsev.....zaitsev.....ZOLOTAREV......18........tempdb.....CREATE.TABLE.........0
0.....36.....lock.sleep.......sa.....sa.....DRUJININ.......18........akv_2004.....EXECUTE..............0
0.....37.....recv.sleep.......luganskay.....luganskay.....CONVERSBAN.....0.........akv_2004.....AWAITING.COMMAND.....0
0.....42.....recv.sleep.......abramova.....abramova.....CONVERSBAN.....0.........akv_2004.....AWAITING.COMMAND.....0
0.....46.....lock.sleep.......fedchenko.....fedchenko.....CONVERSBAN.....18........tempdb.....CREATE.TABLE.........0
0.....48.....lock.sleep.......maxdrouj.....maxdrouj.....DRUJININ.......18........tempdb.....CREATE.TABLE.........0
0.....49.....lock.sleep.......antonov.....antonov.....ANTONOV......18........tempdb.....CREATE.TABLE.........0
0.....53.....lock.sleep.......tihonovp.....tihonovp.....TIHONOVP.......18........tempdb.....CREATE.TABLE.........0
0.....57.....recv.sleep.......sa.....sa.....MANDRAKE.......0.........master.....AWAITING.COMMAND.....0
0.....61.....running..........sa.....sa.....ANTONOV_A......0.........akv_2004.....SELECT...............0
0.....63.....recv.sleep.......levina.....levina.....LEVINA.........0.........akv_2004.....AWAITING.COMMAND.....0
.............................................


sp_dba_locks
go
fid.....spid.....loginame.....locktype.....table.....page.....dbname.....class.....context.....
0.....18.....beljkova.....Ex_page.....sysobjects.....3.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key.....
0.....18.....beljkova.....Ex_page.....sysobjects.....104.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key.....
0.....18.....beljkova.....Ex_table.....sysobjects.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....18.....beljkova.....Ex_page.....sysindexes.....29.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key.....
0.....18.....beljkova.....Ex_table.....sysindexes.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....18.....beljkova.....Ex_page.....syscolumns.....40.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key.....
0.....18.....beljkova.....Ex_page.....syscolumns.....323.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key.....
0.....18.....beljkova.....Ex_page.....syscolumns.....324.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....18.....beljkova.....Ex_page.....syscolumns.....325.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....18.....beljkova.....Ex_page.....syscolumns.....326.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....18.....beljkova.....Ex_table-blk.....syscolumns.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....18.....beljkova.....Sh_table.....systypes.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....18.....beljkova.....Ex_page.....sysprocedures.....121.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key.....
0.....18.....beljkova.....Ex_page.....sysprocedures.....129.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key.....
0.....18.....beljkova.....Ex_page.....sysprocedures.....130.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....18.....beljkova.....Ex_table.....sysprocedures.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....18.....beljkova.....Ex_page.....syscomments.....145.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key.....
0.....18.....beljkova.....Ex_table-blk.....syscomments.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....18.....beljkova.....Ex_intent.....sysdepends.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....18.....beljkova.....Ex_intent.....systabstats.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....18.....beljkova.....Ex_row.....systabstats.....443.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....18.....beljkova.....Ex_table.....#f_deal_temp_01000180010283263.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....18.....beljkova.....Ex_table....._f_deal_te_f_clie_729280942.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....36.....sa.....Sh_intent.....systabstats.....0.....akv_2004.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....36.....sa.....Sh_intent.....sysstatistics.....0.....akv_2004.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....
0.....61.....sa.....Sh_intent.....spt_values.....0.....master.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES.....




CREATE.PROCEDURE.dbo.ask_f_deal;1
(
....@c_membertype_1.........int.........=.NULL,
....@c_membertype_2.........int.........=.NULL,
....@c_membertype_3.........int.........=.NULL,
....@c_membertype_4.........int.........=.NULL,
....@c_inout_1..............int.........=.NULL,
....@c_inout_2..............int.........=.NULL,
....@c_inout_3..............int.........=.NULL,
....@c_sumkind..............int.........=.NULL,
....@f_deal.................int.........=.NULL,
....@dtmake_1...............datetime....=.NULL,
....@dtmake_2...............datetime....=.NULL,
....@date_time_11...........datetime....=.NULL,
....@date_time_12...........datetime....=.NULL,
....@date_time_21...........datetime....=.NULL,
....@date_time_22...........datetime....=.NULL,
....@date_time_31...........datetime....=.NULL,
....@date_time_32...........datetime....=.NULL,
....@date_time_41...........datetime....=.NULL,
....@date_time_42...........datetime....=.NULL,
....@date_time_51...........datetime....=.NULL,
....@date_time_52...........datetime....=.NULL,
....@check_c_classificator..int.........=.NULL,
....@check_c_market.........int.........=.NULL,
....@check_f_client_1.......int.........=.NULL,
....@check_f_client_2.......int.........=.NULL,
....@check_f_instr..........int.........=.NULL,
....@check_f_portf..........int.........=.NULL,
....@check_l_currencyuser...int.........=.NULL,
....@c_market...............int.........=.NULL,
....@c_dealstatus...........int.........=.NULL,
....@f_user.................int.........=.NULL,
....@f_client12.............int.........=.NULL,
....@c_clienttype...........int.........=.NULL,
....@broker.................int.........=.NULL,
....@svich..................int.........=.NULL,
....@commission.............int.........=.NULL,
....@f_client_4.............int.........=.NULL,
....@f_client_3.............int.........=.NULL,
....@check_date_1or2........int.........=.NULL,
....@date_time_1or2.........datetime....=.NULL,
....@c_currency_1...........int.........=.NULL,
....@c_currency_2...........int.........=.NULL,
....@c_currency_12..........int.........=.NULL,
....@number.................varchar(20).=.NULL,
....@f_instr................int.........=.NULL,
....@c_order................int.........=.NULL,
....@f_client_2.............int.........=.NULL,
....@finans.................int.........=.NULL,
....@check_f_mean...........int.........=.NULL,
....@c_jurtype..............int.........=.NULL,
....@c_settype..............int.........=.NULL,
....@c_class_cancel.........int.........=.NULL,
....@c_clientkind...........int.........=.NULL,
....@c_clientgroup..........int.........=.NULL,
....@check_srok.............int.........=.NULL,
....@srok...................int.........=.NULL,
....@c_market_mbk...........int.........=.NULL,
....@c_market_forex.........int.........=.NULL,
....@c_market_netting.......int.........=.NULL,
....@c_market_journal.......int.........=.NULL,
....@c_market_pay...........int.........=.NULL,
....@c_market_note..........int.........=.NULL,
....@c_currency_national....int.........=.NULL,
....@c_dogtype_100..........int.........=.NULL,
....@c_dogtype_200..........int.........=.NULL,
....@zero_portf.............int.........=.NULL
)
AS
BEGIN
/************************************************************************\
*...Процедура:..ask_f_deal
*
*....Описание:..Получение.записей.из.таблицы.f_deal.(реестры.сделок)
*
*.....История:.16.07.2003 -.ООО.'Аквилон'
*
*...Аргументы:..@c_membertype_1.........-.тип.участника:.инициатор
*...............@c_membertype_2.........-.тип.участника:.контрагент
*...............@c_membertype_3.........-.тип.участника:.свич
*...............@c_membertype_4.........-.тип.участника:.брокер
*...............@c_inout_1..............-.номер.суммы.1
*...............@c_inout_2..............-.номер.суммы.2
*...............@c_inout_3..............-.номер.суммы.3
*...............@c_sumkind..............-.положительная.сумма
*...............@f_deal.................-.сделка
*...............@dtmake_1...............-.начальная.дата.создания
*...............@dtmake_2...............-.конечная.дата.создания
*...............@date_time_11...........-.начальная.дата.валютирования.1
*...............@date_time_12...........-.конечная.дата.валютирования.1
*...............@date_time_21...........-.начальная.дата.валютирования.2
*...............@date_time_22...........-.конечная.дата.валютирования.2
*...............@date_time_31...........-.начальная.дата.договора.3
*...............@date_time_32...........-.конечная.дата.договора.3
*...............@date_time_41...........-.Фактическая.поставка.ЦБ.с.4
*...............@date_time_42...........-.Фактическая.поставка.ЦБ.по.4
*...............@date_time_51...........-.Фактическая.оплата.ЦБ.с.5
*...............@date_time_52...........-.Фактическая.оплата.ЦБ.по.5
*...............@check_c_classificator..-.запрос.по.набору.типов.сделок
*...............@check_c_market.........-.запрос.по.набору.рвнков
*...............@check_f_client_1.......-.запрос.по.набору.инициаторов
*...............@check_f_client_2.......-.запрос.по.набору.контрагентов
*...............@check_f_instr..........-.запрос.по.набору.инструментов
*...............@check_l_currencyuser...-.запрос.по.набору.пар.валют
*...............@c_market...............-.рынок
*...............@c_dealstatus...........-.статус.сделки
*...............@f_user.................-.пользователь
*...............@f_client12.............-.участник
*...............@c_clienttype...........-.тип.контрагента
*...............@broker.................-.брокер.Да/Нет
*...............@svich..................-.свич.Да/Нет
*...............@commission.............-.Тип.отправленного.сообщения
*...............@f_client_4.............-.брокер.(контрагент)
*...............@f_client_3.............-.свич.(контрагент)
*...............@check_date_1or2........-.запрос.по.дате.валютирования.1,2
*...............@date_time_1or2.........-.дата.валютирования.1,2
*...............@c_currency_1...........-.валюта.1
*...............@c_currency_2...........-.валюта.2
*...............@c_currency_12..........-.валюта.1,2
*...............@number.................-.номер.сделки.или.идентификатор
*...............@f_instr................-.инструмент
*...............@c_order................-.условия.расчетов
*...............@finans.................-.предоплата
*...............@check_f_mean...........-.запрос.по.набору.значений.категорий
*...............@c_jurtype..............-.тип.связи
*...............@c_settype..............-.набор
*...............@c_clientkind...........-.вид.клиента
*...............@c_clientgroup..........-.группа.клиента
*...............@check_srok.............-.запрос.по.сроку.(знак)
*...............@srok...................-.срок.(число)
*...............@c_market_mbk...........-.Рынок.МБК
*...............@c_market_forex.........-.Рынок.Форекс
*...............@c_market_netting.......-.Рынок.Неттинг
*...............@c_market_journal.......-.Рынок.Журнал
*...............@c_market_pay...........-.Рынок.Платеж
*...............@c_market_note..........-.Рынок.ЦБ
*...............@c_currency_national....-.Национальная.валюта
*...............@c_dogtype_100..........-.договор.по.сделке
*...............@c_dogtype_200..........-.заявка.на.сделку
*
*..Возвращает:..f_deal..............-.идентификатор.сделки
*...............f_deal_reference....-.идентификатор.связанной.сделки
*...............c_jurtype...........-.тип.связи
*...............c_market............-.рынок
*...............c_classificator.....-.классификатор
*...............c_class_name........-.название.классификатора
*...............c_dealstatus........-.статус.сделки
*...............f_path..............-.путь.сделки
*...............number..............-.номер.сделки
*...............number_jur..........-.номер.сделки.журнал
*...............descr...............-.примечание
*...............rollover............-.флаг.ролловера
*...............comission...........-.флаг.комиссии.для.брокера
*-----.f_sum.-.первая.сумма.сделки.--------------------------------------------------
*...............f_sum_1.............-.идентификатор
*...............f_sumtype_1............-.тип.суммы
*...............c_currency_1........-.валюта
*...............currency_iso_1......-.код.валюты
*...............date_time_1.........-.дата.платежа
*...............value_1.................-.сумма
*-----.f_member.-.первый.участник.сделки.--------------------------------------------
*...............f_member_1..........-.идентификатор
*...............c_membertype_1......-.тип.участника
*...............f_client_1..........-.контрагент
*...............code_1..............-.код
*...............rtscode_1...........-.код.ММВБ
*...............rsbcode_1...........-.код.в.Автоматизированной.Банковской.Системе
*...............firstname_1.........-.название
*...............f_portf_1...........-.портфель
*...............f_portf_code_1......-.название.портфеля
*-----.f_sum.-.вторая.сумма.сделки.--------------------------------------------------
*...............f_sum_2.............-.идентификатор
*...............f_sumtype_2.........-.тип.суммы
*...............c_currency_2........-.валюта
*...............currency_iso_2......-.код.валюты
*...............date_time_2.........-.дата.платежа
*...............value_2.............-.сумма
*-----.f_member.-.второй.участник.сделки.--------------------------------------------
*...............f_member_2..........-.идентификатор
*...............c_membertype_2......-.тип.участника
*...............f_client_2..........-.контрагент
*...............code_2..............-.код
*...............rtscode_2...........-.код.ММВБ
*...............rsbcode_2...........-.код.в.Автоматизированной.Банковской.Системе
*...............firstname_2.........-.название
*...............f_portf_2...........-.портфель
*...............f_portf_code_2......-.название.портфеля
*-----.f_sum.-.третья.сумма.сделки.--------------------------------------------------
*...............f_sum_3.............-.идентификатор
*...............f_sumtype_3.........-.тип.суммы
*...............c_currency_3........-.валюта
*...............currency_iso_3......-.код.валюты
*...............date_time_3.........-.дата.платежа
*...............value_3.............-.сумма
*-----.f_member.-.третий.участник.сделки.--------------------------------------------
*...............f_member_3..........-.идентификатор
*...............c_membertype_3......-.тип.участника
*...............f_client_3..........-.контрагент
*...............code_3..............-.код
*...............rtscode_3...........-.код.ММВБ
*...............rsbcode_3...........-.код.в.Автоматизированной.Банковской.Системе
*...............firstname_3.........-.название.свича.(контрагента)
*-----.f_member.-.четвертый.участник.сделки.-----------------------------------------
*...............f_member_4..........-.идентификатор
*...............c_membertype_4......-.тип.участника
*...............f_client_4..........-.контрагент
*...............code_4..............-.код
*...............rtscode_4...........-.код.ММВБ
*...............rsbcode_4...........-.код.в.Автоматизированной.Банковской.Системе
*...............firstname_4.........-.название.брокера.(посредника)
*-----.ввод.сделки.-----------------------------------------------------------------
*...............f_user_1............-.идентификатор.пользователя
*...............usermake_1..........-.имя.пользователя
*...............userdescr_1.........-.ФИО.пользователя
*...............dt_make_1...........-.дата.ввода.сделки
*-----.последняя.модификация.сделки.------------------------------------------------
*...............f_user_2............-.идентификатор.пользователя
*...............usermodify_2........-.имя.пользователя
*...............userdescr_2.........-.ФИО.пользователя
*...............dt_modify_2.........-.дата.модификации
*-----.f_rate.-.курс/ставка.--------------------------------------------------------
*...............f_rate..............-.идентификатор.ставки.сделки
*...............rate................-.курс/ставка.сделки
*...............real_rate...........-.курс/ставка.сделки
*...............revers..............-.флаг.обратного.курса
*...............finans..............-.флаг.предоплаты
*-----.дополнительные.поля.---------------------------------------------------------
*...............market_name.........-.название.рынка
*...............c_opertype..........-.типы.переходов
*...............c_metod.............-.методы.начисления
*...............c_sumkind...........-.положительная.сумма
*-----.корр.счета.------------------------------------------------------------------
*...............f_account_1.........-.счет.для.1-й.суммы
*...............f_account_2.........-.счет.для.2-й.суммы
*...............f_account_3.........-.счет.для.3-й.суммы
*-----.позиции.---------------------------------------------------------------------
*...............f_pos_11............-.идентификатор
*...............f_pos_12............-.идентификатор
*...............f_pos_13............-.идентификатор
*...............f_pos_21............-.идентификатор
*...............f_pos_22............-.идентификатор
*...............f_pos_23............-.идентификатор
*-----.неттинг/rollover.------------------------------------------------------------
*...............netting_value_1.....-.включена.в.неттинг.1-я.сумма
*...............netting_value_2.....-.включена.в.неттинг.2-я.сумма
*...............rollover_value_1....-.включена.в.rollover.1-я.сумма
*...............rollover_value_2....-.включена.в.rollover.1-я.сумма
*-----.журналы.---------------------------------------------------------------------
*...............journal_l_jurnal....-.идентификатор.связи.с.журналом
*...............journal_f_deal......-.сделка.журнала
*...............journal_f_d_f_deal..-.сделка,.вошедшая.в.журнал
*...............journal_add.........-.флаг=1,.если.сделка.вошла.в.журнал
*...............f_instr_1...........-.инструмент
*...............f_issue_1...........-.выпуск
*...............f_instr_code_1......-.код.инструмента.и.выпуска
*...............do_dognum_1.........-.номер.договора
*...............do_date_time_1......-.дата.договора
*...............do_dogform_name_1...-.форма.договора
*...............do_descr_1..........-.описание.договора
*...............do_dognum_2.........-.номер.заявки
*...............do_date_time_2......-.дата.заявки
*...............do_dogform_name_2...-.форма.заявки
*...............do_descr_2..........-.описание.заявки
*...............rate_pay............-.курс.расчетов
*...............st_date_pay_1.......-.дата.расчетов
*...............st_date_begin_1.....-.дата.начала.векселя.(не.используется)
*...............st_date_end_1.......-.дата.погашения.векселя.(не.используется)
*...............fs_date_pay_1.......-.дата.поставки
*...............f_pricetype.........-.тип.цены
*...............f_pricetype_name....-.название.типа.цены
*...............f_client12..........-.запрос.по.участнику
*...............c_currency_12.......-.запрос.по.валюте.1,2
*...............rate_pay............-.курс.расчетов
*...............selectrow...........-.выделение.строки
*
\************************************************************************/

....DECLARE.@selectrow..........int
....DECLARE.@row_count..........int
....DECLARE.@f_user_id..........int
....DECLARE.@c_sumkind_minus....int
....DECLARE.@c_usergroup........int
....DECLARE.@c_category.........int
....DECLARE.@f_mean.............int
....DECLARE.@f_client...........int
....DECLARE.@number_test........char(20)
....DECLARE.@number_acc.........char(20)
....DECLARE.@f_account..........int
....DECLARE.@c_settype_13.......int
....DECLARE.@c_sumstock_1.......int
....DECLARE.@c_sumstock_2.......int
....DECLARE.@c_sumstock_3.......int
....DECLARE.@c_order_1..........int
....DECLARE.@c_order_2..........int
....DECLARE.@c_order_3..........int
....DECLARE.@c_market_stock.....int
....DECLARE.@c_market_bond......int
....DECLARE.@c_market_bill......int
....DECLARE.@c_market_depo_bond.int
....DECLARE.@c_market_depo_bill.int
....DECLARE.@c_market_depo_pay..int
....DECLARE.@c_conftype_53......int
....DECLARE.@c_conftype_54......int

..../*.Глобальные.константы.*/
....SELECT.@c_sumkind_minus.....=.2
....SELECT.@c_settype_13........=.13
....SELECT.@c_order_1...........=.1
....SELECT.@c_order_2...........=.2
....SELECT.@c_order_3...........=.3
....SELECT.@c_sumstock_1........=.1
....SELECT.@c_sumstock_2........=.2
....SELECT.@c_sumstock_3........=.3
....SELECT.@c_market_stock......=.6
....SELECT.@c_market_bond.......=.7
....SELECT.@c_market_bill.......=.8
....SELECT.@c_market_depo_bond..=.10
....SELECT.@c_market_depo_bill..=.11
....SELECT.@c_market_depo_pay...=.12
....SELECT.@c_conftype_53.......=.53
....SELECT.@c_conftype_54.......=.54


/*-----.f_user_id.-.пользователь.и.его.группа.-------------------------------------*/

....SELECT
............@f_user_id......=.f_user,
............@c_usergroup....=.c_usergroup,
............@f_client.......=.f_client
......FROM
............f_user
.....WHERE
............name.=.suser_name()

/*--.Временные.таблицы.-------------------------------------------------------------*/
....CREATE.TABLE.#f_deal_account
....(
........f_deal..............int.............NULL
)

..../*.Создание.временной.таблицы.сделок.*/
....CREATE.TABLE.#f_deal_temp
....(
/*-----f_deal.-.сделка.-------------------------------------------------------------*/
........f_deal..............int.............NULL,
........f_deal_reference....int.............NULL,
........c_jurtype...........int.............NULL,
........c_market............int.............NULL,
........c_classificator.....int.............NULL,
........c_classif_name......varchar(30).....NULL,
........c_dealstatus........int.............NULL,
........f_path..............int.............NULL,
........number..............varchar(20).....NULL,
........number_jur..........varchar(20).....NULL,
........descr...............varchar(100)....NULL,
........rollover............int.............NULL,
........commission..........int.............NULL,
/*-----f_sum.-.первая.сумма.сделки.-------------------------------------------------*/
........f_sum_1.............int.............NULL,
........f_sumtype_1.........int.............NULL,
........c_currency_1........int.............NULL,
........currency_iso_1......varchar(5)......NULL,
........date_time_1.........datetime........NULL,
........st_date_pay_1.......datetime........NULL,
........value_1.............decimal(18,6)...NULL,
/*-----f_member.-.первый.участник.сделки.-------------------------------------------*/
........f_member_1..........int.............NULL,
........c_membertype_1......int.............NULL,
........f_client_1..........int.............NULL,
........c_clienttype_1......int.............NULL,
........code_1..............varchar(6)......NULL,
........rtscode_1...........varchar(6)......NULL,
........rsbcode_1...........varchar(6)......NULL,
........firstname_1.........varchar(20).....NULL,
........f_portf_1...........int.............NULL,
........f_portf_code_1......varchar(6)......NULL,
/*-----f_sum.-.вторая.сумма.сделки.-------------------------------------------------*/
........f_sum_2.............int.............NULL,
........f_sumtype_2.........int.............NULL,
........c_currency_2........int.............NULL,
........currency_iso_2......varchar(5)......NULL,
........date_time_2.........datetime........NULL,
........value_2.............decimal(18,6)...NULL,
/*-----f_member.-.второй.участник.сделки.-------------------------------------------*/
........f_member_2..........int.............NULL,
........c_membertype_2......int.............NULL,
........f_client_2..........int.............NULL,
........c_clienttype_2......int.............NULL,
........c_clientgroup_2.....int.............NULL,
........code_2..............varchar(6)......NULL,
........rtscode_2...........varchar(6)......NULL,
........rsbcode_2...........varchar(6)......NULL,
........firstname_2.........varchar(20).....NULL,
........f_portf_2...........int.............NULL,
........f_portf_code_2......varchar(6)......NULL,
/*-----f_sum.-.третья.сумма.сделки.-------------------------------------------------*/
........f_sum_3.............int.............NULL,
........f_sumtype_3.........int.............NULL,
........c_currency_3........int.............NULL,
........currency_iso_3......varchar(5)......NULL,
........date_time_3.........datetime........NULL,
........value_3.............decimal(18,6)...NULL,
/*-----f_member.-.третий.участник.сделки.-------------------------------------------*/
........f_member_3..........int.............NULL,
........c_membertype_3......int.............NULL,
........f_client_3..........int.............NULL,
........c_clienttype_3......int.............NULL,
........code_3..............varchar(6)......NULL,
........rtscode_3...........varchar(6)......NULL,
........rsbcode_3...........varchar(6)......NULL,
........firstname_3.........varchar(20).....NULL,
/*-----f_member.-.четвертый.участник.сделки.-------------------------------------------*/
........f_member_4..........int.............NULL,
........c_membertype_4......int.............NULL,
........f_client_4..........int.............NULL,
........c_clienttype_4......int.............NULL,
........code_4..............varchar(6)......NULL,
........rtscode_4...........varchar(6)......NULL,
........rsbcode_4...........varchar(6)......NULL,
........firstname_4.........varchar(20).....NULL,
/*-----создал.----------------------------------------------------------------------*/
........f_user_1............int.............NULL,
........usermake_1..........varchar(30).....NULL,
........userdescr_1.........varchar(100)....NULL,
........dt_make_1...........datetime........NULL,
/*-----последние.изтенения.сделал.--------------------------------------------------*/
........f_user_2............int.............NULL,
........usermodify_2........varchar(30).....NULL,
........userdescr_2.........varchar(100)....NULL,
........dt_modify_2.........datetime........NULL,
/*-----дополнительные.поля.---------------------------------------------------------*/
........c_currency_sum......int.............NULL,
........f_rate..............int.............NULL,
........rate................decimal(18,6)...NULL,
........real_rate...........decimal(18,6)...NULL,
........revers..............int.............NULL,
........finans..............int.............NULL,
........market_name.........varchar(30).....NULL,
........c_opertype..........int.............NULL,
........c_metod.............int.............NULL,
........c_sumkind...........int.............NULL,
........f_account_1.........int.............NULL,
........f_account_2.........int.............NULL,
........f_account_3.........int.............NULL,
........f_pos_11............int.............NULL,
........f_pos_12............int.............NULL,
........f_pos_13............int.............NULL,
........f_pos_21............int.............NULL,
........f_pos_22............int.............NULL,
........f_pos_23............int.............NULL,
/*...не.возвращаемые.поля............*/
........netting_value_1.....int.............NULL,
........netting_value_2.....int.............NULL,
........rollover_value_1....int.............NULL,
........rollover_value_2....int.............NULL,
........journal_l_jurnal....int.............NULL,
........journal_f_deal......int.............NULL,
........journal_f_d_f_deal..int.............NULL,
........journal_add.........int.............NULL,
........f_mean..............int.............NULL,
........selectrow...........int.............NULL,
........textcolor...........int.............NULL,
........c_membertype........int.............NULL,
........srok................int.............NULL,
........fx_dt_make..........datetime........NULL,
........fx_max_date.........datetime........NULL,
/*-----ценные.бумаги.--------------------------------------------------*/
........f_instr_1...........int.............NULL,
........f_issue_1...........int.............NULL,
........f_instr_code_1......varchar(15).....NULL,
........f_term..............int.............NULL,
........c_order.............int.............NULL,
........do_dognum_1.........varchar(20).....NULL,
........do_date_time_1......datetime........NULL,
........do_c_dogform_1......int.............NULL,
........do_dogform_name_1...varchar(20).....NULL,
........do_descr_1..........varchar(100)....NULL,
........do_dognum_2.........varchar(20).....NULL,
........do_date_time_2......datetime........NULL,
........do_c_dogform_2......int.............NULL,
........do_dogform_name_2...varchar(20).....NULL,
........do_descr_2..........varchar(100)....NULL,
........st_date_begin_1.....datetime........NULL,
........st_date_end_1.......datetime........NULL,
........fs_date_pay_1.......datetime........NULL,
........f_pricetype.........int.............NULL,
........f_pricetype_name....varchar(3)......NULL,
........rate_pay............decimal(18,6)...NULL,
........date_pay............datetime........NULL,
........date_delivery.......datetime........NULL,
........date_min............datetime........NULL,
........fp_client_1.........int.............NULL,
........fp_client_2.........int.............NULL,
........f_client12..........int.............default.0,
........swift_telex.........int.............default.3
....)


..../*.Проверка.параметров.*/
....If..@dtmake_1...........IS.NULL.OR
........@dtmake_2...........IS.NULL.OR
........@c_membertype_1.....IS.NULL.OR
........@c_membertype_2.....IS.NULL.OR
........@c_membertype_3.....IS.NULL.OR
........@c_membertype_4.....IS.NULL.OR
........@c_sumkind..........IS.NULL

....BEGIN
........Goto.err
....END

..../*.Увеличиваем.дату.на.один.день.*/
....SELECT..@dtmake_2.=.DATEADD(DAY,.1,.@dtmake_2)

/*----------------------------------------------------------------------------------*/
/*-----.ПОЛУЧЕНИЕ.ВСЕХ.ВОЗМОЖНЫХ.СДЕЛОК.(разными.способами)-------------------------*/
/*----------------------------------------------------------------------------------*/
........IF.@check_date_1or2.>.0
........BEGIN
............IF.@check_date_1or2.=.1...../*.=.*/
............BEGIN
................INSERT.INTO.#f_deal_temp
................(
........................f_deal,
........................c_market,
........................c_classificator,
........................c_dealstatus,
........................f_path,
........................f_user_1,
........................number,
........................descr,
........................dt_make_1,
........................fx_dt_make,
........................usermodify_2,
........................dt_modify_2
................)
................SELECT.DISTINCT
........................fd.f_deal,
........................fd.c_market,
........................fd.c_classificator,
........................fd.c_dealstatus,
........................fd.f_path,
........................fd.f_user,
........................fd.number,
........................fd.descr,
........................fd.dt_make,
........................fd.dt_make,
........................fd.user_modify,
........................fd.dt_modify
..................FROM
........................f_sum.....fs,
........................f_sumtype.fst,
........................f_deal....fd
.................WHERE
........................fs.date_time.=.@date_time_1or2.............AND
........................fs.f_sumtype.=.fst.f_sumtype...............AND
........................fst.c_inout..IN.(.@c_inout_1,.@c_inout_2.).AND
........................fs.f_deal....=.fd.f_deal...................AND
........................fd.dt_make..>=.@dtmake_1...................AND
........................fd.dt_make..<..@dtmake_2



............END
............ELSE.IF.@check_date_1or2.=.2...../*.>.*/
............BEGIN
................INSERT.INTO.#f_deal_temp
................(
........................f_deal,
........................c_market,
........................c_classificator,
........................c_dealstatus,
........................f_path,
........................f_user_1,
........................number,
........................descr,
........................dt_make_1,
........................fx_dt_make,
........................usermodify_2,
........................dt_modify_2
................)
................SELECT.DISTINCT
........................fd.f_deal,
........................fd.c_market,
........................fd.c_classificator,
........................fd.c_dealstatus,
........................fd.f_path,
........................fd.f_user,
........................fd.number,
........................fd.descr,
........................fd.dt_make,
........................fd.dt_make,
........................fd.user_modify,
........................fd.dt_modify
..................FROM
........................f_sum.....fs,
........................f_sumtype.fst,
........................f_deal....fd
.................WHERE
........................fs.date_time.>.@date_time_1or2.............AND
........................fs.f_sumtype.=.fst.f_sumtype...............AND
........................fst.c_inout..IN.(.@c_inout_1,.@c_inout_2.).AND
........................fs.f_deal....=.fd.f_deal...................AND
........................fd.dt_make..>=.@dtmake_1...................AND
........................fd.dt_make..<..@dtmake_2

............END
............ELSE.IF.@check_date_1or2.=.3...../*.<.*/
............BEGIN
................INSERT.INTO.#f_deal_temp
................(
........................f_deal,
........................c_market,
........................c_classificator,
........................c_dealstatus,
........................f_path,
........................f_user_1,
........................number,
........................descr,
........................dt_make_1,
........................fx_dt_make,
........................usermodify_2,
........................dt_modify_2
................)
................SELECT.DISTINCT
........................fd.f_deal,
........................fd.c_market,
........................fd.c_classificator,
........................fd.c_dealstatus,
........................fd.f_path,
........................fd.f_user,
........................fd.number,
........................fd.descr,
........................fd.dt_make,
........................fd.dt_make,
........................fd.user_modify,
........................fd.dt_modify
..................FROM
........................f_sum.....fs,
........................f_sumtype.fst,
........................f_deal....fd
.................WHERE
........................fs.date_time.<.@date_time_1or2.............AND
........................fs.f_sumtype.=.fst.f_sumtype...............AND
........................fst.c_inout..IN.(.@c_inout_1,.@c_inout_2.).AND
........................fs.f_deal....=.fd.f_deal...................AND
........................fd.dt_make..>=.@dtmake_1...................AND
........................fd.dt_make..<..@dtmake_2
............END
........END
........ELSE.IF.@f_client12.IS.NOT.NULL

BEGIN
................INSERT.INTO.#f_deal_temp
................(
........................f_deal,
........................c_market,
........................c_classificator,
........................c_dealstatus,
........................f_path,
........................f_user_1,
........................number,
........................descr,
........................dt_make_1,
........................fx_dt_make,
........................usermodify_2,
........................dt_modify_2
................)
................SELECT.DISTINCT
........................fd.f_deal,
........................fd.c_market,
........................fd.c_classificator,
........................fd.c_dealstatus,
........................fd.f_path,
........................fd.f_user,
........................fd.number,
........................fd.descr,
........................fd.dt_make,
........................fd.dt_make,
........................fd.user_modify,
........................fd.dt_modify
..................FROM
........................f_member..fm,
........................f_deal....fd
.................WHERE
........................fm.f_client.=.@f_client12..................AND
........................fm.c_membertype.IN.(.@c_membertype_1,.@c_membertype_2.).AND
........................fm.f_deal....=.fd.f_deal...................AND
........................fd.dt_make..>=.@dtmake_1...................AND
........................fd.dt_make..<..@dtmake_2

........END
........ELSE.IF.@f_instr.IS.NOT.NULL

BEGIN
................INSERT.INTO.#f_deal_temp
................(
........................f_deal,
........................c_market,
........................c_classificator,
........................c_dealstatus,
........................f_path,
........................f_user_1,
........................number,
........................descr,
........................dt_make_1,
........................fx_dt_make,
........................usermodify_2,
........................dt_modify_2
................)
................SELECT.DISTINCT
........................fd.f_deal,
........................fd.c_market,
........................fd.c_classificator,
........................fd.c_dealstatus,
........................fd.f_path,
........................fd.f_user,
........................fd.number,
........................fd.descr,
........................fd.dt_make,
........................fd.dt_make,
........................fd.user_modify,
........................fd.dt_modify
..................FROM
........................f_stock...fs,
........................f_deal....fd
.................WHERE
........................fs.f_deal....=.fd.f_deal...................AND
........................fs.f_instr...=.@f_instr....................AND
........................fd.dt_make..>=.@dtmake_1...................AND
........................fd.dt_make..<..@dtmake_2

........END
........ELSE.IF.@date_time_11.IS.NOT.NULL.OR.@date_time_12.IS.NOT.NULL

BEGIN

................INSERT.INTO.#f_deal_temp
................(
........................f_deal,
........................c_market,
........................c_classificator,
........................c_dealstatus,
........................f_path,
........................f_user_1,
........................number,
........................descr,
........................dt_make_1,
........................fx_dt_make,
........................usermodify_2,
........................dt_modify_2
................)
................SELECT.DISTINCT
........................fd.f_deal,
........................fd.c_market,
........................fd.c_classificator,
........................fd.c_dealstatus,
........................fd.f_path,
........................fd.f_user,
........................fd.number,
........................fd.descr,
........................fd.dt_make,
........................fd.dt_make,
........................fd.user_modify,
........................fd.dt_modify
..................FROM
........................f_sum.....fs,
........................f_sumtype.st,
........................f_deal....fd
.................WHERE
........................fd.dt_make......>=.@dtmake_1................AND
........................fd.dt_make......<..@dtmake_2................AND
........................fd.f_deal.......=..fs.f_deal................AND
........................fd.c_market.....=..st.c_market..............AND
........................fs.f_sumtype....=..st.f_sumtype.............AND
........................st.c_inout......=..@c_inout_1...............AND
........................(.fs.date_time..>=.@date_time_11....OR.@date_time_11.is.null.)..AND
........................(.fs.date_time..<=.@date_time_12....OR.@date_time_12.is.null.)

........END
........ELSE.IF.@date_time_21.IS.NOT.NULL.OR.@date_time_22.IS.NOT.NULL

BEGIN

................INSERT.INTO.#f_deal_temp
................(
........................f_deal,
........................c_market,
........................c_classificator,
........................c_dealstatus,
........................f_path,
........................f_user_1,
........................number,
........................descr,
........................dt_make_1,
........................fx_dt_make,
........................usermodify_2,
........................dt_modify_2
................)
................SELECT.DISTINCT
........................fd.f_deal,
........................fd.c_market,
........................fd.c_classificator,
........................fd.c_dealstatus,
........................fd.f_path,
........................fd.f_user,
........................fd.number,
........................fd.descr,
........................fd.dt_make,
........................fd.dt_make,
........................fd.user_modify,
........................fd.dt_modify
..................FROM
........................f_sum.....fs,
........................f_sumtype.st,
........................f_deal....fd
.................WHERE
........................fd.dt_make......>=.@dtmake_1................AND
........................fd.dt_make......<..@dtmake_2................AND
........................fd.f_deal.......=..fs.f_deal................AND
........................fd.c_market.....=..st.c_market..............AND
........................fs.f_sumtype....=..st.f_sumtype.............AND
........................st.c_inout......=..@c_inout_2...............AND
........................(.fs.date_time..>=.@date_time_21....OR.@date_time_21.is.null.)..AND
........................(.fs.date_time..<=.@date_time_22....OR.@date_time_22.is.null.)

........END
........ELSE
........BEGIN
............INSERT.INTO.#f_deal_temp
............(
....................f_deal,
....................c_market,
....................c_classificator,
....................c_dealstatus,
....................f_path,
....................f_user_1,
....................number,
....................descr,
....................dt_make_1,
....................fx_dt_make,
....................usermodify_2,
....................dt_modify_2
............)
............SELECT
....................fd.f_deal,
....................fd.c_market,
....................fd.c_classificator,
....................fd.c_dealstatus,
....................fd.f_path,
....................fd.f_user,
....................fd.number,
....................fd.descr,
....................fd.dt_make,
....................fd.dt_make,
....................fd.user_modify,
....................fd.dt_modify
..............FROM
....................f_deal..........fd
.............WHERE
....................fd.dt_make......>=.@dtmake_1................AND
....................fd.dt_make......<..@dtmake_2
..........ORDER.BY
....................fd.f_deal

........END

/*-----.номер.сделки.или.идентификатор.или.счет.------------------------------------*/

....IF.DATALENGTH(RTRIM.(@number)).>.1
....BEGIN
........SELECT..@number_test.=.SUBSTRING(@number,1,DATALENGTH(@number).-.2)
........SELECT..@number_acc..=.SUBSTRING(@number,1,DATALENGTH(@number).-.3)

......../*.Проверка.на.наличие.окончание.'id'.-.начало.соответствует.индентификатору.сделки.*/
........IF..NOT.PATINDEX("%id",@number.).=.0.and
............NOT.(.@number_test.LIKE.'%[:-я]%'.OR.@number_test.LIKE.'%[!-/]%'.)
........BEGIN
............SELECT.@f_deal.=.CONVERT(int,.SUBSTRING(@number,1,DATALENGTH(@number).-.2)),
...................@number.=.NULL



IF.@f_deal.>.0
............BEGIN
................DELETE.FROM.#f_deal_temp
............END
........END
......../*.Проверка.на.окончание.'acc'.начало.соответствует.счету.в.сделке.*/
........ELSE.IF..NOT.PATINDEX("%acc",@number.).=.0.and
............NOT.(.@number_acc.LIKE.'%[:-я]%'.OR.@number_acc.LIKE.'%[!-/]%'.)
........BEGIN
............SELECT.@f_account.=.CONVERT(int,.SUBSTRING(@number,1,DATALENGTH(@number).-.3)),
...................@number.=.NULL



IF.@f_account.>.0
............BEGIN
................/*.Получаем.список.сделок.с.указанным.счетом.*/
................INSERT.INTO.#f_deal_account
................(
........................f_deal
................)
................SELECT..DISTINCT
........................fs.f_deal
..................FROM
........................#f_deal_temp....fd,
........................f_sum...........fs
.................WHERE
........................fd.f_deal.......=.fs.f_deal.AND
........................fs.f_account....=.@f_account

................/*.Удаляем.сделки.не.соответствующие.указанному.счету.*/
................DELETE.FROM
........................#f_deal_temp
.................WHERE
........................#f_deal_temp.f_deal.NOT.IN.(
....................................................SELECT
............................................................f_deal
....................................................FROM
............................................................#f_deal_account
....................................................)


............END
........END
........ELSE.IF..NOT.PATINDEX("NULLacc",@number.).=.0
........BEGIN
............SELECT..@f_account..=.NULL,
....................@number.....=.NULL


/*.Получаем.список.сделок.с.указанным.счетом.*/
................INSERT.INTO.#f_deal_account
................(
........................f_deal
................)
................SELECT..DISTINCT
........................fs.f_deal
..................FROM
........................#f_deal_temp....fd,
........................f_sum...........fs
.................WHERE
........................fd.f_deal.......=.fs.f_deal.AND
........................fs.f_account....IS.NULL.....AND
........................fs.f_sumtype....IN.(
............................................SELECT
....................................................st.f_sumtype
..............................................FROM
....................................................c_market..cm,
....................................................f_sumtype.st
.............................................WHERE
....................................................cm.c_market.=.st.c_market.AND
....................................................cm.c_market.IN.(1,2,5,6,7,8,9,10,11,12,13)
............................................)
................/*.Удаляем.сделки.не.соответствующие.указанному.счету.*/
................DELETE.FROM
........................#f_deal_temp
.................WHERE
........................#f_deal_temp.f_deal.NOT.IN.(
....................................................SELECT
............................................................f_deal
....................................................FROM
............................................................#f_deal_account
....................................................)
........END
....END

/*-----.ДОБАВЛЕНИЕ.сделки.по.данному.ID.--------------------------------------------*/
....IF.@f_deal.IS.NOT.NULL

BEGIN
........INSERT.INTO.#f_deal_temp
........(
................f_deal,
................c_market,
................c_classificator,
................c_dealstatus,
................f_path,
................f_user_1,
................number,
................descr,
................dt_make_1,
................fx_dt_make,
................usermodify_2,
................dt_modify_2
........)
........SELECT
................fd.f_deal,
................fd.c_market,
................fd.c_classificator,
................fd.c_dealstatus,
................fd.f_path,
................fd.f_user,
................fd.number,
................fd.descr,
................fd.dt_make,
................fd.dt_make,
................fd.user_modify,
................fd.dt_modify
..........FROM
................f_deal..........fd
.........WHERE
................fd.f_deal...........=.@f_deal

....END

/*-----.Удаление.сделок.с.запрещенными.для.пользователя.статусами.----------------*/

....DELETE
............#f_deal_temp
.....WHERE
............#f_deal_temp.c_dealstatus.NOT.IN.(.SELECT
.......................................................lm.c_d_c_dealstatus
.................................................FROM
.......................................................l_movewin.........lm
................................................WHERE
.......................................................#f_deal_temp.f_path.=.lm.f_path..AND
.......................................................lm.c_usergroup......=.@c_usergroup
.............................................)


/*-----.Удаление.сделки.по.маске.номера.-------------------------------------------*/

....IF.DATALENGTH(RTRIM.(@number)).>.0
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................number.NOT.LIKE..@number

....END

/*----------------------------------------------------------------------------------*/
/*------------.УДАЛЕНИЕ.СДЕЛОК.ПОПАДАЮЩИХ.ПОД.ФИЛЬТР.-------------------------------*/
/*----------------------------------------------------------------------------------*/

/*-----.рынок.----------------------------------------------------------------------*/

....IF.@c_market.IS.NOT.NULL

BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................NOT.(@c_market.=.c_market)
....END

..../*.Наборы.по.рынкам.*/
....IF.@check_c_market.IS.NOT.NULL.AND.@check_c_market.=.1
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................#f_deal_temp.c_market.NOT.IN.(...SELECT.DISTINCT
........................................................lm.c_market
...................................................FROM
........................................................l_marketuser.....lm
..................................................WHERE
........................................................lm.c_market........=.#f_deal_temp.c_market.....and
........................................................lm.f_user..........=.@f_user_id................and
........................................................lm.c_settype.......=.@c_settype
.................................................)
....END

..../*.Запрос.для.журнала.сделок.*/
....IF.@check_c_market.IS.NOT.NULL.AND.@check_c_market.=.-1
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................#f_deal_temp.c_market.NOT.IN.(...SELECT.DISTINCT
........................................................lm.c_market
...................................................FROM
........................................................l_marketuser.....lm
..................................................WHERE
........................................................lm.c_market........=.#f_deal_temp.c_market.....and
........................................................lm.f_user..........=.@f_user_id................and
........................................................lm.c_settype.......=.@c_settype_13
.................................................)
....END


/*-----.статус.---------------------------------------------------------------------*/

....IF.@c_dealstatus.IS.NOT.NULL

BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................NOT.(@c_dealstatus.=.c_dealstatus)
....END

/*-----.УДАЛЕНИЕ.типы.сделки.-------------------------------------------------------*/

....IF.@check_c_classificator.=.1
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................#f_deal_temp.c_classificator.NOT.IN.(SELECT.DISTINCT
............................................................lc.c_classificator
.......................................................FROM
............................................................l_classuser.....lc
......................................................WHERE
............................................................lc.c_classificator.=.#f_deal_temp.c_classificator...and
............................................................lc.f_user..........=.@f_user_id.....................and
............................................................lc.c_settype.......=.@c_settype
.....................................................)
....END

/*-----.Покупка/привлечиние.--------------------------------------------------------*/
....IF.@date_time_11.IS.NOT.NULL..OR.@date_time_12.IS.NOT.NULL

BEGIN
........IF..@date_time_11.is.not.null

BEGIN
............DELETE
....................#f_deal_temp
..............FROM
....................f_sum.......fs,
....................f_sumtype...st
.............WHERE
....................#f_deal_temp.f_deal.............=.fs.f_deal.................and
....................fs.date_time....................<..@date_time_11............and
....................fs.f_sumtype....................=..st.f_sumtype.............and
....................st.c_market.....................=..#f_deal_temp.c_market....and
....................st.c_inout......................=..@c_inout_1
........END

........IF.@date_time_12.is.not.null

BEGIN
............DELETE
....................#f_deal_temp
..............FROM
....................f_sum.......fs,
....................f_sumtype...st
.............WHERE
....................#f_deal_temp.f_deal.............=.fs.f_deal.................and
....................fs.date_time....................>..@date_time_12............and
....................fs.f_sumtype....................=..st.f_sumtype.............and
....................st.c_market.....................=..#f_deal_temp.c_market....and
....................st.c_inout......................=..@c_inout_1
........END

....END

/*-----.Продажа/Размещение.---------------------------------------------------------*/

....IF.@date_time_21.IS.NOT.NULL.OR.@date_time_22.IS.NOT.NULL

BEGIN
........IF.@date_time_21.is.not.null

BEGIN
............DELETE
....................#f_deal_temp
..............FROM
....................f_sum.......fs,
....................f_sumtype...st
.............WHERE
....................#f_deal_temp.f_deal.............=..fs.f_deal................and
....................fs.date_time....................<..@date_time_21............and
....................fs.f_sumtype....................=..st.f_sumtype.............and
....................st.c_market.....................=..#f_deal_temp.c_market....and
....................st.c_inout......................=..@c_inout_2
........END

........IF.@date_time_22.is.not.null

BEGIN

............DELETE
....................#f_deal_temp
..............FROM
....................f_sum.......fs,
....................f_sumtype...st
.............WHERE
....................#f_deal_temp.f_deal.............=.fs.f_deal.................and
....................fs.date_time....................>..@date_time_22............and
....................fs.f_sumtype....................=..st.f_sumtype.............and
....................st.c_market.....................=..#f_deal_temp.c_market....and
....................st.c_inout......................=..@c_inout_2
........END

........IF.@date_time_11.IS.NULL.AND.@date_time_12.IS.NULL

BEGIN

............DELETE
....................#f_deal_temp
..............FROM
....................f_sum.......fs,
....................f_sumtype...st
.............WHERE
....................#f_deal_temp.f_deal.............=..fs.f_deal................and
....................fs.f_sumtype....................=..st.f_sumtype.............and
....................st.c_market.....................=..#f_deal_temp.c_market....and
....................st.c_inout......................=..@c_inout_1...............and
....................st.c_market.....................in.(.@c_market_netting,
.........................................................@c_market_journal,
.........................................................@c_market_pay
........................................................)
........END
....END
/*-----.Дата.договора.---------------------------------------------------------*/

....IF.(.@date_time_31.IS.NOT.NULL).OR.(@date_time_32.IS.NOT.NULL)
....BEGIN

........DELETE
................#f_deal_temp
..........FROM
................f_dogovor...fd
.........WHERE
................#f_deal_temp.f_deal.............=.fd.f_deal.................and.(
.............(..@date_time_31...................is.not.null.................and
................fd.date_time....................<..@date_time_31........)...or
.............(..@date_time_32...................is.not.null.................and
................fd.date_time....................>..@date_time_32........).....)

....END

/*-----.Дата.поставки.--------------------------------------------------------*/

....IF.@date_time_41.IS.NOT.NULL.OR.@date_time_42.IS.NOT.NULL

BEGIN
........DELETE
................#f_deal_temp
..........FROM
................f_stock......fs,
................f_stocktype..st
.........WHERE
................#f_deal_temp.f_deal.............=.fs.f_deal.................and.(
.............(..@date_time_41...................is.not.null.................and
................fs.date_pay.....................<..@date_time_41............and
................fs.f_stocktype..................=..st.f_stocktype...........and
................st.c_market.....................=..#f_deal_temp.c_market....and
................st.c_inout......................=..@c_inout_1.........).....or
.............(..@date_time_42...................is.not.null.................and
................fs.date_pay.....................>..@date_time_42............and
................fs.f_stocktype..................=..st.f_stocktype...........and
................st.c_market.....................=..#f_deal_temp.c_market....and
................st.c_inout......................=..@c_inout_1.........).........)


........DELETE
................#f_deal_temp
..........FROM
................f_sum.......fs,
................f_sumtype...st
.........WHERE
................#f_deal_temp.f_deal.............=..fs.f_deal................and
................fs.f_sumtype....................=..st.f_sumtype.............and
................st.c_market.....................=..#f_deal_temp.c_market....and
................st.c_inout......................=..@c_inout_1...............and
................@date_time_11...................IS.NULL.....................and
................@date_time_12...................IS.NULL.....................and
................@date_time_51...................IS.NULL.....................and
................@date_time_52...................IS.NULL.....................and
................st.c_market.....................in.(.@c_market_netting,
.....................................................@c_market_journal,
.....................................................@c_market_pay,
.....................................................@c_market_forex,
.....................................................@c_market_mbk
....................................................)
....END

/*-----.Дата.оплаты.---------------------------------------------------------*/

....IF.@date_time_51.IS.NOT.NULL.OR.@date_time_52.IS.NOT.NULL

BEGIN

........DELETE
................#f_deal_temp
..........FROM
................f_sum.......fs,
................f_sumtype...st
.........WHERE
................#f_deal_temp.f_deal.............=.fs.f_deal...............and.(
.............(..@date_time_51...................is.not.null.................and
................fs.date_pay.....................<..@date_time_51............and
................fs.f_sumtype....................=..st.f_sumtype.............and
................st.c_market.....................=..#f_deal_temp.c_market....and
................st.c_inout......................=..@c_inout_2...........)...or
.............(..@date_time_52...................is.not.null.................and
................fs.date_pay.....................>..@date_time_52............and
................fs.f_sumtype....................=..st.f_sumtype.............and
................st.c_market.....................=..#f_deal_temp.c_market....and
................st.c_inout......................=..@c_inout_2...........).....)


........DELETE
................#f_deal_temp
..........FROM
................f_sum.......fs,
................f_sumtype...st
.........WHERE
................#f_deal_temp.f_deal.............=..fs.f_deal................and
................fs.f_sumtype....................=..st.f_sumtype.............and
................st.c_market.....................=..#f_deal_temp.c_market....and
................st.c_inout......................=..@c_inout_1...............and
................@date_time_11...................IS.NULL.....................and
................@date_time_12...................IS.NULL.....................and
................@date_time_41...................IS.NULL.....................and
................@date_time_42...................IS.NULL.....................and
................st.c_market.....................in.(.@c_market_netting,
.....................................................@c_market_journal,
.....................................................@c_market_pay,
.....................................................@c_market_forex,
.....................................................@c_market_mbk
....................................................)
....END


/*-----.Запрос.по.пользователю.-------------------------------------------------------*/

....IF.@f_user.IS.NOT.NULL

BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................NOT.@f_user.=.f_user_1
....END
/*----------------------------------------------------------------------------------*/
/*------------.ЗАПОЛНЕНИЕ.ПОЛЕЙ.СДЕЛКИ.---------------------------------------------*/
/*----------------------------------------------------------------------------------*/

/*------------.первая.сторона.сделки.(Инициатор).----------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.f_member_1.........=.fm.f_member,
............#f_deal_temp.c_membertype_1.....=.fm.c_membertype,
............#f_deal_temp.f_client_1.........=.fm.f_client,
............#f_deal_temp.f_portf_1..........=.fm.f_portf
......FROM
............f_member.......fm
.....WHERE
............#f_deal_temp.f_deal.............=.fm.f_deal.................and
............fm.c_membertype.................=.@c_membertype_1

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.f_portf_code_1.....=.fp.name
......FROM
............f_portf.fp
.....WHERE
............#f_deal_temp.f_portf_1..........=.fp.f_portf....AND
............(
................fp.name.NOT.LIKE.'00%'.OR.@zero_portf.=.1
............)

/*------------.вторая.сторона.сделки.(Контрагент).----------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.f_member_2.........=.fm.f_member,
............#f_deal_temp.c_membertype_2.....=.fm.c_membertype,
............#f_deal_temp.f_client_2.........=.fm.f_client,
............#f_deal_temp.f_portf_2..........=.fm.f_portf
......FROM
............f_member....fm
.....WHERE
............#f_deal_temp.f_deal.............=.fm.f_deal.................and
............fm.c_membertype.................=.@c_membertype_2

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.f_portf_code_2.....=.fp.name
......FROM
............f_portf.fp
.....WHERE
............#f_deal_temp.f_portf_2..........=.fp.f_portf....AND
............(
................fp.name.NOT.LIKE.'00%'.OR.@zero_portf.=.1
............)

..../*.Запрос.по.клиенту.портфеля.*/
....IF.@f_client_4.>.0
....BEGIN

......../*.Проставить.клиента.портфеля.*/
........UPDATE
................#f_deal_temp
...........SET
................fp_client_1.=.lp.f_client
..........FROM
................l_portfclient.lp
.........WHERE
................lp.f_portf......=.#f_deal_temp.f_portf_1..AND
................lp.c_accmemtype.=.1

........UPDATE
................#f_deal_temp
...........SET
................fp_client_2.=.lp.f_client
..........FROM
................l_portfclient.lp
.........WHERE
................lp.f_portf......=.#f_deal_temp.f_portf_2..AND
................lp.c_accmemtype.=.1

........DELETE
................#f_deal_temp
.........WHERE
................(
....................fp_client_1.!=.@f_client_4.OR
....................fp_client_1.IS.NULL


).AND
................(
....................fp_client_2.!=.@f_client_4.OR
....................fp_client_2.IS.NULL


)

....END

/*-----.УДАЛЕНИЕ.портфелей.----------------------------------------------------------*/

....IF.@check_f_portf.=.1
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................#f_deal_temp.f_portf_1......not.in.(SELECT.DISTINCT
............................................................f_portf
......................................................FROM
............................................................l_portfuser...lp
.....................................................WHERE
............................................................lp.f_portf........=.#f_deal_temp.f_portf_1..and
............................................................lp.f_user.........=.@f_user_id..............and
............................................................lp.c_settype......=.@c_settype
....................................................)
................and
................#f_deal_temp.f_portf_2......not.in.(SELECT.DISTINCT
............................................................f_portf
......................................................FROM
............................................................l_portfuser...lp
.....................................................WHERE
............................................................lp.f_portf........=.#f_deal_temp.f_portf_2..and
............................................................lp.f_user.........=.@f_user_id..............and
............................................................lp.c_settype......=.@c_settype
....................................................)
....END

....IF.@check_f_portf.=.-1
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................#f_deal_temp.f_portf_1.........in..(SELECT.DISTINCT
............................................................f_portf
......................................................FROM
............................................................l_portfuser...lp
.....................................................WHERE
............................................................lp.f_portf........=.#f_deal_temp.f_portf_1..and
............................................................lp.f_user.........=.@f_user_id..............and
............................................................lp.c_settype......=.@c_settype
....................................................)
................or
................#f_deal_temp.f_portf_2.........in..(SELECT.DISTINCT
............................................................f_portf
......................................................FROM
............................................................l_portfuser...lp
.....................................................WHERE
............................................................lp.f_portf........=.#f_deal_temp.f_portf_2..and
............................................................lp.f_user.........=.@f_user_id..............and
............................................................lp.c_settype......=.@c_settype
....................................................)
....END

/*-----.УДАЛЕНИЕ.участник.1.или.2.----------------------------------------------------*/

....IF.@f_client12.IS.NOT.NULL

BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................NOT.(#f_deal_temp.f_client_1.=.@f_client12).AND
................NOT.(#f_deal_temp.f_client_2.=.@f_client12)
....END

/*-----.УДАЛЕНИЕ.контрагент.----------------------------------------------------------*/

....IF.not.@f_client_2.=.0.AND.@f_client_2.IS.NOT.NULL

BEGIN
........IF.@f_client_2.>.0
........BEGIN

............DELETE
....................#f_deal_temp
.............WHERE
....................NOT.(#f_deal_temp.f_client_1.=.ABS.(@f_client_2)).AND
....................NOT.(#f_deal_temp.f_client_2.=.ABS.(@f_client_2))

........END
........ELSE.IF.@f_client_2.<.0
........BEGIN

............DELETE
....................#f_deal_temp
.............WHERE
....................#f_deal_temp.f_client_1.=.ABS.(@f_client_2).OR
....................#f_deal_temp.f_client_2.=.ABS.(@f_client_2)

........END

....END

/*----------------.Удаление.сделок.с.запрещенными.статусами.----------------------*/

..../*.Получить.тип.участника.сделки.*/
....UPDATE
............#f_deal_temp
.......SET
............c_membertype.=.fm.c_membertype
......FROM
............f_member.fm
.....WHERE
............#f_deal_temp.f_deal.=.fm.f_deal....AND
............fm.f_client.........=.@f_client

/*-----.Не.соответствие.статусу.---------------------------------------------------*/

....IF.@f_deal.IS.NULL

BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................#f_deal_temp.c_dealstatus.NOT.IN.(.SELECT.DISTINCT
..........................................................lm.c_dealstatus
.....................................................FROM
..........................................................l_movewin.......lm
....................................................WHERE
..........................................................lm.f_path.........=.#f_deal_temp.f_path...........AND
..........................................................lm.c_membertype...=.#f_deal_temp.c_membertype.....AND
..........................................................lm.c_usergroup....=.@c_usergroup
....................................................)..AND
................#f_deal_temp.c_membertype.IS.NOT.NULL

END

/*-----.ставка.по.сделке.-----------------------------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.f_rate.............=.fr.f_rate,
............#f_deal_temp.rate...............=.fr.rate,
............#f_deal_temp.real_rate..........=.fr.real_rate,
............#f_deal_temp.revers.............=.fr.revers,
............#f_deal_temp.finans.............=.fr.finans,
............#f_deal_temp.rollover...........=.fr.rollover,
............#f_deal_temp.commission.........=.fr.commission,
............#f_deal_temp.f_pricetype........=.fr.f_pricetype
......FROM
............f_rate......fr
....WHERE
............#f_deal_temp.f_deal.............=.fr.f_deal

/*-----.Курс.и.порядок.расчетов.-------------------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............f_term...........=.ft.f_term,
............c_order..........=.ft.c_order,
............rate_pay.........=.ft.rate
......FROM
............f_term......ft
.....WHERE
............#f_deal_temp.f_deal.....=.ft.f_deal

/*-----.Очередность.------------------------------------------------------------*/

....IF.@c_order.IS.NOT.NULL

BEGIN

........DELETE
................#f_deal_temp
.........WHERE
................NOT.(c_order.=.@c_order).OR
................c_order.IS.NULL


END

/*-----.УДАЛЕНИЕ.Рыночная.-------------------------------------------------------*/

....IF.@finans.IS.NOT.NULL

BEGIN

........DELETE
................#f_deal_temp
.........WHERE
................NOT.(finans.=.@finans).OR
................finans.IS.NULL


END

/*-----.УДАЛЕНИЕ.Типы.сообщений.--------------------------------------------------*/
....IF.@commission.IS.NOT.NULL

BEGIN
........UPDATE
................#f_deal_temp
...........SET
................swift_telex.=.2./*.TELEX.*/
..........FROM
................l_clientrecv.lc
.........WHERE
................lc.f_client.=.#f_deal_temp.f_client_2.....AND
................lc.c_telex..IS.NOT.NULL


UPDATE
................#f_deal_temp
...........SET
................swift_telex.=.1./*.SWIFT.*/
..........FROM
................l_clientrecv.lc
.........WHERE
................lc.f_client.=.#f_deal_temp.f_client_2.....AND
................lc.c_swift..IS.NOT.NULL


/*.Проставляем.наличие.ключа.у.МБК.*/
........UPDATE
................#f_deal_temp
...........SET
................swift_telex.=.(#f_deal_temp.swift_telex.*.-1)
..........FROM
................f_conf..fc
.........WHERE
................#f_deal_temp.f_deal.........=.fc.f_deal.........AND
................#f_deal_temp.swift_telex....=.ABS.(@commission).AND
................fc.c_conftype...............=.@c_conftype_53....AND
................fc.account..................IS.NOT.NULL


/*.Проставляем.наличие.ключа.у.ForEx.*/
........UPDATE
................#f_deal_temp
...........SET
................swift_telex.=.(#f_deal_temp.swift_telex.*.-1)
..........FROM
................f_conf..fc
.........WHERE
................#f_deal_temp.f_deal.........=.fc.f_deal.........AND
................#f_deal_temp.swift_telex....=.ABS.(@commission).AND
................fc.c_conftype...............=.@c_conftype_54....AND
................fc.account..................IS.NOT.NULL


/*.Удаление.не.соответствующих.*/
........DELETE
................#f_deal_temp
.........WHERE
................NOT.swift_telex.=.@commission
....END

/*------------.третья.сторона.сделки.(Свич).-----------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.f_member_3.........=.fm.f_member,
............#f_deal_temp.c_membertype_3.....=.fm.c_membertype,
............#f_deal_temp.f_client_3.........=.fm.f_client
......FROM
............f_member..fm
.....WHERE
............#f_deal_temp.f_deal.............=.fm.f_deal.................and
............fm.c_membertype.................=.@c_membertype_3...........and
............fm.f_client.....................IS.NOT.NULL

/*------------.четвертая.сторона.сделки.(брокер).-----------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.f_member_4.........=.fm.f_member,
............#f_deal_temp.c_membertype_4.....=.fm.c_membertype,
............#f_deal_temp.f_client_4.........=.fm.f_client
......FROM
............f_member..fm
.....WHERE
............#f_deal_temp.f_deal.............=.fm.f_deal.................and
............fm.c_membertype.................=.@c_membertype_4...........and
............fm.f_client.....................IS.NOT.NULL

/*-----.УДАЛЕНИЕ.свич.ДА.-----------------------------------------------------------*/

....IF.(@svich.=.1)
....BEGIN
........DELETE
................#f_deal_temp
..........FROM
................f_member...fm
.........WHERE
................#f_deal_temp.f_deal.........=.fm.f_deal................AND
................#f_deal_temp.f_client_3.....IS.NULL

END

/*-----.УДАЛЕНИЕ.свич.НЕТ.----------------------------------------------------------*/

....IF.(@svich.=.0)
....BEGIN
........DELETE
................#f_deal_temp
..........FROM
................f_member...fm
.........WHERE
................#f_deal_temp.f_deal.........=.fm.f_deal.............AND
................#f_deal_temp.f_client_3.....>.0
....END

/*-----.УДАЛЕНИЕ.свич.(контрагент).-----------------------------------------------*/

....IF.(@f_client_3.IS.NOT.NULL)
....BEGIN
........DELETE
................#f_deal_temp
..........FROM
................f_member...fm
.........WHERE
................#f_deal_temp.f_deal.............=..fm.f_deal.........and
................(#f_deal_temp.f_client_3.is.null.....................or
................not.(#f_deal_temp.f_client_3....=.@f_client_3))
....END

/*-----.УДАЛЕНИЕ.набор.инициаторов.--------------------------------------------------*/

....IF.@check_f_client_1.=.1
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................#f_deal_temp.f_client_1.NOT.IN.(SELECT.DISTINCT
........................................................lm.f_client
..................................................FROM
........................................................l_memuser........lm
.................................................WHERE
........................................................#f_deal_temp.f_client_1.....=.lm.f_client...........and
........................................................#f_deal_temp.c_membertype_1.=.lm.c_membertype.......and
........................................................lm.f_user.=.@f_user_id..............................and
........................................................lm.c_settype.=.@c_settype
................................................)
....................................................AND
................#f_deal_temp.f_client_2.NOT.IN.(SELECT.DISTINCT
........................................................lm.f_client
..................................................FROM
........................................................l_memuser........lm
.................................................WHERE
........................................................#f_deal_temp.f_client_2.....=.lm.f_client...........and
........................................................#f_deal_temp.c_membertype_1.=.lm.c_membertype.......and
........................................................lm.f_user.=.@f_user_id..............................and
........................................................lm.c_settype.=.@c_settype
................................................)

....END

....IF.@check_f_client_1.=.-1
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................#f_deal_temp.f_client_1.IN.(SELECT.DISTINCT
........................................................lm.f_client
..................................................FROM
........................................................l_memuser........lm
.................................................WHERE
........................................................#f_deal_temp.f_client_1.....=.lm.f_client...........and
........................................................#f_deal_temp.c_membertype_1.=.lm.c_membertype.......and
........................................................lm.f_user.=.@f_user_id..............................and
........................................................lm.c_settype.=.@c_settype
...........................................)
................................................AND
................#f_deal_temp.f_client_2.IN.(SELECT.DISTINCT
........................................................lm.f_client
..................................................FROM
........................................................l_memuser........lm
.................................................WHERE
........................................................#f_deal_temp.f_client_2.....=.lm.f_client...........and
........................................................#f_deal_temp.c_membertype_1.=.lm.c_membertype.......and
........................................................lm.f_user.=.@f_user_id..............................and
........................................................lm.c_settype.=.@c_settype
...........................................)


....END

/*-----.УДАЛЕНИЕ.набор.контрагентов.-------------------------------------------------*/

....IF.@check_f_client_2.=.1
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................#f_deal_temp.f_client_2.NOT.IN.(SELECT.DISTINCT
........................................................lm.f_client
..................................................FROM
........................................................l_memuser.......lm
..................................................WHERE
........................................................#f_deal_temp.f_client_2.....=.lm.f_client...........and
........................................................#f_deal_temp.c_membertype_2.=.lm.c_membertype.......and
........................................................lm.f_user...................=.@f_user_id............and
........................................................lm.c_settype................=.@c_settype
................................................)
....END

....IF.@check_f_client_2.=.-1
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................#f_deal_temp.f_client_2.IN.(SELECT.DISTINCT
........................................................lm.f_client
..................................................FROM
........................................................l_memuser.......lm
..................................................WHERE
........................................................#f_deal_temp.f_client_2.....=.lm.f_client...........and
........................................................#f_deal_temp.c_membertype_2.=.lm.c_membertype.......and
........................................................lm.f_user...................=.@f_user_id............and
........................................................lm.c_settype................=.@c_settype
................................................)
....END

/*------------.первая.сторона.сделки.-----------------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.code_1.............=.fc.code,
............#f_deal_temp.rtscode_1..........=.fc.rtscode,
............#f_deal_temp.rsbcode_1..........=.fc.rsbcode,
............#f_deal_temp.c_clienttype_1.....=.fc.c_clienttype,
............#f_deal_temp.firstname_1........=.fc.firstname
......FROM
............f_client........fc
.....WHERE
............#f_deal_temp.f_client_1.........=.fc.f_client

/*------------.вторая.сторона.сделки.-----------------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.code_2.............=.fc.code,
............#f_deal_temp.rtscode_2..........=.fc.rtscode,
............#f_deal_temp.rsbcode_2..........=.fc.rsbcode,
............#f_deal_temp.c_clienttype_2.....=.fc.c_clienttype,
............#f_deal_temp.c_clientgroup_2....=.fc.c_clientgroup,
............#f_deal_temp.firstname_2........=.fc.firstname
......FROM
............f_client........fc
.....WHERE
............#f_deal_temp.f_client_2.........=.fc.f_client

/*------------.третья.сторона.сделки.-----------------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.code_3.............=.fc.code,
............#f_deal_temp.rtscode_3..........=.fc.rtscode,
............#f_deal_temp.rsbcode_3..........=.fc.rsbcode,
............#f_deal_temp.c_clienttype_3.....=.fc.c_clienttype,
............#f_deal_temp.firstname_3........=.fc.firstname
......FROM
............f_client........fc
.....WHERE
............#f_deal_temp.f_client_3.........=.fc.f_client

/*------------.четвертая.сторона.сделки.---------------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.code_4.............=.fc.code,
............#f_deal_temp.rtscode_4..........=.fc.rtscode,
............#f_deal_temp.rsbcode_4..........=.fc.rsbcode,
............#f_deal_temp.c_clienttype_4.....=.fc.c_clienttype
......FROM
............f_client........fc
.....WHERE
............#f_deal_temp.f_client_4.........=.fc.f_client

/*-----.УДАЛЕНИЕ.тип,вид,группа.контрагента.-----------------------------------------*/

....IF(@c_clienttype.IS.NOT.NULL)
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................NOT.(c_clienttype_2.=.@c_clienttype)
....END

..../*.Удаление.по.виду.клиента.*/
....IF(@c_clientkind.IS.NOT.NULL)
....BEGIN
........DELETE
................#f_deal_temp
..........FROM
................f_client.fc
.........WHERE
................#f_deal_temp.f_client_2.=.fc.f_client.AND
................NOT.fc.c_clientkind.=.@c_clientkind
....END

..../*.Удаление.по.группе.клиента.*/
....IF.@c_clientgroup.IS.NOT.NULL

BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................NOT.c_clientgroup_2.=.@c_clientgroup
....END

/*------------.первая.сумма.по.сделке.и.id.валюты.----------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.f_sum_1............=.fs.f_sum,
............#f_deal_temp.f_sumtype_1........=.st.f_sumtype,
............#f_deal_temp.f_account_1........=.fs.f_account,
............#f_deal_temp.value_1............=.CASE.fs.c_sumkind
....................................................WHEN.@c_sumkind.........THEN.fs.value
....................................................WHEN.@c_sumkind_minus...THEN.(-fs.value)
....................................................ELSE.........................NULL


END,
............#f_deal_temp.date_time_1........=.fs.date_time,
............#f_deal_temp.fs_date_pay_1......=.fs.date_pay,
............#f_deal_temp.c_currency_1.......=.fs.c_currency
......FROM
............f_sum.......fs,
............f_sumtype...st
.....WHERE
............#f_deal_temp.f_deal.....=.fs.f_deal..................and
............#f_deal_temp.c_market...=.st.c_market................and
............fs.f_sumtype............=.st.f_sumtype...............and
............st.c_inout..............=.@c_inout_1

/*------------.поля.по.ценной.бумаге.-----------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.f_instr_1..........=.fs.f_instr,
............#f_deal_temp.f_issue_1..........=.fs.f_issue,
............#f_deal_temp.date_time_1........=.fs.date_time,
............#f_deal_temp.st_date_pay_1......=.fs.date_pay,
............#f_deal_temp.st_date_begin_1....=.fs.date_begin,
............#f_deal_temp.st_date_end_1......=.fs.date_end,
............#f_deal_temp.value_3............=.#f_deal_temp.value_1,
............#f_deal_temp.c_currency_3.......=.#f_deal_temp.c_currency_1,
............#f_deal_temp.value_1............=.CASE.fs.c_sumkind
....................................................WHEN.@c_sumkind.........THEN.fs.value
....................................................WHEN.@c_sumkind_minus...THEN.(-fs.value)
....................................................ELSE.........................NULL

END
......FROM
............f_stock.........fs,
............f_stocktype.....st
.....WHERE
............#f_deal_temp.f_deal.....=.fs.f_deal......and
............#f_deal_temp.c_market...=.st.c_market....and
............fs.f_stocktype..........=.st.f_stocktype.and
............st.c_inout..............=.@c_inout_1


/*------------.Получаем.номер.журнала.и.дату.---------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............number_jur..=.fd.number.+.'.'.+.Convert.(varchar(10).,.fd.dt_make,.4.).+.'.'.+.Convert.(varchar(10),.fd.f_deal).+.'id'
......FROM
............l_jurnal....lj,
............f_deal......fd
.....WHERE
............NOT.(.#f_deal_temp.c_market.=.@c_market_journal.)....and
............#f_deal_temp.f_deal.........=.lj.f_d_f_deal..........and
............fd.f_deal...................=.lj.f_deal

/*------------.Получаем.количество.сделок.в.журнале.-------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.value_1....=.(.SELECT
................................................COUNT(lj.f_deal)
..........................................FROM
...............................................l_jurnal........lj
.........................................WHERE
...............................................#f_deal_temp.f_deal......=.lj.f_deal
......................................)
.....WHERE
...........#f_deal_temp.c_market....=.@c_market_journal

/*------------.Удаление.по.заданному.инструменту.-----------------------------------*/

....IF.@f_instr.IS.NOT.NULL

BEGIN

........DELETE
................#f_deal_temp
.........WHERE
................NOT.#f_deal_temp.f_instr_1.=.@f_instr..OR
................#f_deal_temp.f_instr_1.IS.NULL


END


....IF.@check_f_instr.=.1
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................#f_deal_temp.f_instr_1.IS.NULL.OR
................#f_deal_temp.f_instr_1.not.in.(SELECT.DISTINCT
........................................................f_instr
..................................................FROM
........................................................l_instruser...lp
.................................................WHERE
........................................................lp.f_user.........=.@f_user_id.and
........................................................lp.c_settype......=.@c_settype
................................................)
....END

....IF.@check_f_instr.=.-1
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................#f_deal_temp.f_instr_1......in.(SELECT.DISTINCT
........................................................f_instr
..................................................FROM
........................................................l_instruser...lp
.................................................WHERE
........................................................lp.f_user.........=.@f_user_id.and
........................................................lp.c_settype......=.@c_settype
................................................)
....END


/*------------.Договор.и.заявка.по.сделке.с.ЦБ.-------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.do_c_dogform_1.....=.fd.c_dogform,
............#f_deal_temp.do_dognum_1........=.fd.dognum,
............#f_deal_temp.do_date_time_1.....=.fd.date_time,
............#f_deal_temp.do_descr_1.........=.fd.descr
......FROM
............f_dogovor.fd
.....WHERE
............#f_deal_temp.f_deal....=.fd.f_deal......and
............fd.c_dogtype...........=.@c_dogtype_100.and
............#f_deal_temp.f_instr_1.IS.NOT.NULL



UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.do_dogform_name_1.......=.cd.name
......FROM
............c_dogform.cd
.....WHERE
............#f_deal_temp.do_c_dogform_1....=.cd.c_dogform.and
............#f_deal_temp.do_c_dogform_1....IS.NOT.NULL



UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.do_c_dogform_2.....=.fd.c_dogform,
............#f_deal_temp.do_dognum_2........=.fd.dognum,
............#f_deal_temp.do_date_time_2.....=.fd.date_time,
............#f_deal_temp.do_descr_2.........=.fd.descr
......FROM
............f_dogovor.fd
.....WHERE
............#f_deal_temp.f_deal....=.fd.f_deal......and
............fd.c_dogtype...........=.@c_dogtype_200.and
............#f_deal_temp.c_market.>=.@c_market_stock./*.f_instr_1.IS.NOT.NULL.*/

..../*.Заполняем.в.пустой.комментарий.Условия.расчетов.*/
....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.do_descr_2.=.CASE.ft1.c_order
........................................WHEN.@c_order_1....THEN.'пП.'.+
............................................Convert.(varchar(4),.ft2.days).+.'-П,'.+
............................................Convert.(varchar(4),.ft1.days).+.'-О'
........................................WHEN.@c_order_2....THEN.'пО.'.+
............................................Convert.(varchar(4),.ft2.days).+.'-П,'.+
............................................Convert.(varchar(4),.ft1.days).+.'-О'
........................................WHEN.@c_order_3....THEN.'DVP.'.+
............................................Convert.(varchar(4),.ft2.days)
........................................ELSE....................'??.'
......................................END
......FROM
............f_term....ft1,
............f_term....ft2
.....WHERE
............#f_deal_temp.f_deal.....=.ft1.f_deal........and
............#f_deal_temp.f_deal.....=.ft2.f_deal........and
............ft1.c_sumstock..........=.@c_sumstock_1.....and
............ft2.c_sumstock..........=.@c_sumstock_2.....and
............#f_deal_temp.do_descr_2...IS.NULL...........and
............#f_deal_temp.f_instr_1....IS.NOT.NULL



UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.do_dogform_name_2.......=.cd.name
......FROM
............c_dogform.cd
.....WHERE
............#f_deal_temp.do_c_dogform_2....=.cd.c_dogform.and
............#f_deal_temp.do_c_dogform_2....IS.NOT.NULL

/*------------.вторая.сумма.по.сделке.и.краткое.(id).валюты.------------------------*/

....UPDATE
............#f_deal_temp
......SET
............#f_deal_temp.f_sum_2............=.fs.f_sum,
............#f_deal_temp.f_sumtype_2........=.st.f_sumtype,
............#f_deal_temp.f_account_2........=.fs.f_account,
............#f_deal_temp.value_2............=.CASE.fs.c_sumkind
....................................................WHEN.@c_sumkind.........THEN.fs.value
....................................................WHEN.@c_sumkind_minus...THEN.(-fs.value)
....................................................ELSE....NULL


END,
............#f_deal_temp.date_time_2........=.fs.date_time,
............#f_deal_temp.c_currency_2.......=.fs.c_currency
......FROM
............f_sum.......fs,
............f_sumtype...st
.....WHERE
............#f_deal_temp.f_deal....=.fs.f_deal.................and
............#f_deal_temp.c_market..=.st.c_market...............and
............fs.f_sumtype...........=.st.f_sumtype..............and
............st.c_inout.............=.@c_inout_2


..../*.Для.поручений.ДЕПО.сумма_2.=.номинал.*.цену.залога.*/
....UPDATE
............#f_deal_temp
.......SET
............value_2.=.CONVERT(decimal(18,6),.value_1.*.rate./.100.0)
.....WHERE
............c_market.IN.(@c_market_depo_bond,.@c_market_depo_bill)


..../*.Для.облигаций.нужно.умножить.на.номинал.*/
....UPDATE
............#f_deal_temp
.......SET
............value_2.=.CONVERT(decimal(18,6),.value_2.*.fi.value)
......FROM
............f_issue.fi
.....WHERE
............#f_deal_temp.f_issue_1.=.fi.f_issue.............AND
............#f_deal_temp.c_market..=.@c_market_depo_bond

/*-----.Для.депо.платежа,.пустые.счета.заполняем.l_dealacc.--------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.f_account_2....=.ld.f_account
......FROM
............l_dealacc...ld,
............f_sum.......fs
.....WHERE
............#f_deal_temp.f_deal.........=.fs.f_deal.............and
............#f_deal_temp.f_deal.........=.ld.f_deal.............and
............#f_deal_temp.c_market.......=.@c_market_depo_pay....and
............#f_deal_temp.f_account_1....IS.NULL.................and
............#f_deal_temp.f_account_2....IS.NULL.................and
............fs.c_sumkind................=.ld.c_sumkind..........and
............fs.f_account................IS.NULL.................and
............ld.f_account................IS.NOT.NULL

/*------------.третья.сумма.по.сделке.(%%.или.НКД).--------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.f_sum_3............=.fs.f_sum,
............#f_deal_temp.f_sumtype_3........=.st.f_sumtype,
............#f_deal_temp.f_account_3........=.fs.f_account,
............#f_deal_temp.value_2.=.(.#f_deal_temp.value_2.+.IsNull..(
....................................CASE.fs.c_sumkind
........................................WHEN.@c_sumkind.........THEN.fs.value
........................................WHEN.@c_sumkind_minus...THEN.(-fs.value)
........................................ELSE.........................NULL

END.,.0.0.......................)
...................................)
......FROM
............f_sum.......fs,
............f_sumtype...st
.....WHERE
............#f_deal_temp.f_deal.....=.fs.f_deal..................and
............#f_deal_temp.c_market...=.st.c_market................and
............fs.f_sumtype............=.st.f_sumtype...............and
............st.c_inout..............=.@c_inout_3


/*-----.Покупка/привлечиние.--------------------------------------------------------*/

....IF.@date_time_11.IS.NOT.NULL..OR.@date_time_12.IS.NOT.NULL

BEGIN
........DELETE
................#f_deal_temp
.........WHERE
..............(.@date_time_11...................is.not.null.................and
................#f_deal_temp.date_time_1........<..@date_time_11..........).or
..............(.@date_time_12...................is.not.null.................and
................#f_deal_temp.date_time_1........>..@date_time_12..........)
....END


/*-----.Дата.1.или.2.Неттинг.----------------------------------------------------*/

....IF.@check_date_1or2.>.0
....BEGIN

........IF.@check_date_1or2.=.1........./*.=.*/
........BEGIN

............DELETE
....................#f_deal_temp
.............WHERE
....................#f_deal_temp.date_time_2.IS.NULL................AND
....................NOT.#f_deal_temp.date_time_1.=.@date_time_1or2

............DELETE
....................#f_deal_temp
.............WHERE
....................NOT.#f_deal_temp.date_time_1.=.@date_time_1or2...AND
....................NOT.#f_deal_temp.date_time_2.=.@date_time_1or2


........END
........ELSE.IF.@check_date_1or2.=.2..../*.>.*/
........BEGIN

............DELETE
....................#f_deal_temp
.............WHERE
....................#f_deal_temp.date_time_2.IS.NULL................AND
....................#f_deal_temp.date_time_1.<.@date_time_1or2

............DELETE
....................#f_deal_temp
.............WHERE
....................#f_deal_temp.date_time_1.<.@date_time_1or2......AND
....................#f_deal_temp.date_time_2.<.@date_time_1or2

........END
........ELSE.IF.@check_date_1or2.=.3..../*.<.*/
........BEGIN

............DELETE
....................#f_deal_temp
.............WHERE
....................#f_deal_temp.date_time_2.IS.NULL................AND
....................#f_deal_temp.date_time_1.>.@date_time_1or2

............DELETE
....................#f_deal_temp
.............WHERE
....................#f_deal_temp.date_time_1.>.@date_time_1or2......AND
....................#f_deal_temp.date_time_2.>.@date_time_1or2

........END


....END

/*-----.УДАЛЕНИЕ.валюта.1.-------------------------------------------------------*/

....IF(@c_currency_1.IS.NOT.NULL)
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................NOT.#f_deal_temp.c_currency_1.=.@c_currency_1...OR
................#f_deal_temp.c_currency_1.....IS.NULL


END

/*-----.УДАЛЕНИЕ.валюта.2.-------------------------------------------------------*/

....IF(@c_currency_2.IS.NOT.NULL)
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................NOT.#f_deal_temp.c_currency_2.=.@c_currency_2...OR
................#f_deal_temp.c_currency_2.......IS.NULL

END

/*-----.УДАЛЕНИЕ.валюта.1.или.2.--------------------------------------------------*/

....IF(@c_currency_12.IS.NOT.NULL)
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................((not.#f_deal_temp.c_currency_1.=.@c_currency_12).and
................(not.#f_deal_temp.c_currency_2.=.@c_currency_12)).or
................#f_deal_temp.c_currency_1.is.null.................or
................#f_deal_temp.c_currency_2.is.null

END

/*------------.iso.валюты.1.или.код.инструмента.-------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.currency_iso_1...=.cc.iso
......FROM
............c_currency......cc
.....WHERE
............#f_deal_temp.c_currency_1.......=.cc.c_currency


....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.currency_iso_1...=.fi.code
......FROM
............f_instr.fi
.....WHERE
............#f_deal_temp.f_instr_1........=.fi.f_instr..and
............#f_deal_temp.f_instr_1........IS.NOT.NULL


/*------------.тип.цены.-----------------------------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.f_pricetype_name...=.fp.name
......FROM
............f_pricetype....fp
.....WHERE
............#f_deal_temp.f_pricetype......=..fp.f_pricetype

/*------------.(iso).валюты.2,3.----------------------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.currency_iso_2...=.cc.iso
......FROM
............c_currency......cc
.....WHERE
............#f_deal_temp.c_currency_2.......=.cc.c_currency


....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.currency_iso_3...=.cc.iso
......FROM
............c_currency......cc
.....WHERE
............#f_deal_temp.c_currency_3.......=.cc.c_currency

....UPDATE
............#f_deal_temp
.......SET
............currency_iso_3...=.currency_iso_2
.....WHERE
............currency_iso_3.IS.NULL

/*------------.Код.инструмента.1.+.номер.выпуска.------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.f_instr_code_1...=.fi.code
......FROM
............f_instr.fi
.....WHERE
............#f_deal_temp.f_instr_1........=.fi.f_instr..and
............#f_deal_temp.f_instr_1........IS.NOT.NULL



UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.f_instr_code_1...=.#f_deal_temp.f_instr_code_1.+.'.'.+.fis.name
......FROM
............f_issue.fis
.....WHERE
............#f_deal_temp.f_issue_1........=.fis.f_issue..and
............#f_deal_temp.f_issue_1........IS.NOT.NULL

/*-----.выделенные.поля.------------------------------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.c_sumkind..........=.@c_sumkind,
............#f_deal_temp.c_currency_sum.....=.#f_deal_temp.c_currency_1.*.1000.+.#f_deal_temp.c_currency_2,
............#f_deal_temp.netting_value_1....=.0,
............#f_deal_temp.netting_value_2....=.0,
............#f_deal_temp.journal_f_deal.....=.0,
............#f_deal_temp.journal_add........=.0,
............#f_deal_temp.selectrow..........=.0

/*-----.УДАЛЕНИЕ.валюты.------------------------------------------------------------*/

....IF(@check_l_currencyuser.=.1)
....BEGIN
........DELETE
................#f_deal_temp
.........WHERE
................#f_deal_temp.c_currency_sum.not.in.(SELECT.DISTINCT
............................................................lc.c_currency.*.1000.+.lc.c_c_c_currency
......................................................FROM
............................................................l_currencyuser...lc
.....................................................WHERE
............................................................#f_deal_temp.c_currency_1.......=.lc.c_currency.........and
............................................................#f_deal_temp.c_currency_2.......=.lc.c_c_c_currency.....and
............................................................lc.c_c_c_currency...............is.not.null.............and
............................................................lc.f_user.......................=.@f_user_id............and
............................................................lc.c_settype.=.@c_settype
....................................................)
................and
................#f_deal_temp.c_currency_1...not.in.(SELECT.DISTINCT
............................................................lc.c_currency
......................................................FROM
............................................................l_currencyuser...lc
.....................................................WHERE
............................................................#f_deal_temp.c_currency_1.......=.lc.c_currency.........and
............................................................lc.c_c_c_currency...............is.null.................and
............................................................lc.f_user.......................=.@f_user_id............and
............................................................lc.c_settype....................=.@c_settype
...................................................)
....END


/*-----.УДАЛЕНИЕ.Категории.-------------------------------------------------------*/

....IF.@check_f_mean.IS.NOT.NULL

BEGIN

......../*.Кол-во.записей.в.запросе.*/
........SELECT
...............@f_mean.=.count(*)
..........FROM
...............l_meanuser..lu
.........WHERE
...............lu.f_user.....=.@f_user_id.AND
...............lu.c_settype..=.@c_settype


........IF.@f_mean.>.0
........BEGIN

............/*.Курсор.по.категориям.*/
............DECLARE.cursorb_category.CURSOR.FOR
............SELECT.DISTINCT
....................c_category
..............FROM
....................l_meanuser
.............WHERE
....................f_user.=.@f_user_id.AND
....................c_settype.=.@c_settype


............/*.Открытие.курсора.*/
............OPEN.cursorb_category

............FETCH.cursorb_category.INTO
....................@c_category

............WHILE.@@sqlstatus.=.0
............BEGIN

................/*.Обнуление.значений.категорий.*/
................UPDATE
........................#f_deal_temp
...................SET
........................f_mean.=.NULL



/*.Проставить.значения.текущей.категории.*/
................UPDATE
........................#f_deal_temp
...................SET
........................#f_deal_temp.f_mean.=.lm.f_mean
..................FROM
........................l_meandeal......lm
.................WHERE
........................lm.f_deal.....=.#f_deal_temp.f_deal.......AND
........................lm.c_category.=.@c_category


................/*.Удалить.сделки.с.другими.значениями.категорий.*/
................DELETE
........................#f_deal_temp
.................WHERE
........................#f_deal_temp.f_mean.IS.NOT.NULL.AND
........................#f_deal_temp.f_mean.NOT.IN.(SELECT
..........................................................lu.f_mean
......................................................FROM
...........................................................l_meanuser..lu
.....................................................WHERE
...........................................................lu.f_user.....=.@f_user_id....AND
...........................................................lu.c_settype..=.@c_settype....AND
...........................................................lu.c_category.=.@c_category...AND
...........................................................lu.f_mean.....IS.NOT.NULL

)

................/*.Кол-во.пустых.записей.в.запросе.*/
................SELECT
.......................@f_mean.=.count(*)
..................FROM
.......................l_meanuser..lu
.................WHERE
.......................lu.f_user.....=.@f_user_id...AND
.......................lu.c_settype..=.@c_settype...AND
.......................lu.c_category.=.@c_category..AND
.......................lu.f_mean.....=.NULL



IF.@f_mean.=.0
................BEGIN
....................DELETE
............................#f_deal_temp
.....................WHERE
............................#f_deal_temp.f_mean.IS.NULL


END


................FETCH.cursorb_category.INTO
....................@c_category

............END

............CLOSE.cursorb_category
............DEALLOCATE.CURSOR.cursorb_category

........END
....END

/*-----.название.рынка.-------------------------------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.market_name........=.cm.name
......FROM
............c_market....cm
.....WHERE
............#f_deal_temp.c_market...........=.cm.c_market

..../*.SWAP.*/
....UPDATE
............#f_deal_temp
.......SET
............market_name.=.market_name.+.'-S'
.....WHERE
............c_market.=.@c_market_forex...AND
............rollover.=.1

/*------------.тип.сделки.----------------------------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.c_classif_name.....=.cc.name,
............#f_deal_temp.textcolor..........=.cc.textcolor
......FROM
............c_classificator........cc
.....WHERE
............#f_deal_temp.c_classificator....=.cc.c_classificator

/*------------.имя.автора.сделки.---------------------------------------------------*/

....UPDATE
............#f_deal_temp
.......SET
............#f_deal_temp.usermake_1..=..fu.name.+.'.'.+
........................................CONVERT(varchar,.dt_make_1,.111).+.'.'.+
........................................CONVERT(varchar,.dt_make_1,.111)
......FROM
............f_user........fu
.....WHERE
............#f_deal_temp.f_user_1....=.fu.f_user

/*-----.подсветка.первой.суммы.если.она.вошла.в.неттинг.----------------------------*/

....UPDATE..#f_deal_temp
.......SET
............netting_value_1.=.ld.l_dealsum
......FROM
............l_dealsum...ld,
............f_deal......fd
.....WHERE
............#f_deal_temp.f_sum_1............=.ld.f_sum..........and
............fd.f_deal.......................=.ld.f_deal.........and
............not.fd.c_classificator..........=.@c_class_cancel

/*-----.подсветка.второй.суммы.если.она.вошла.в.неттинг.---------------------------*/

....UPDATE..#f_deal_temp
.......SET
............netting_value_2.=.ld.l_dealsum
......FROM
............l_dealsum...ld,
............f_deal......fd
.....WHERE
............#f_deal_temp.f_sum_2............=.ld.f_sum..........and
............fd.f_deal.......................=.ld.f_deal.........and
............not.fd.c_classificator..........=.@c_class_cancel

/*-----.подсветка.первой.суммы.если.она.вошла.в.ролловер.---------------------------*/

....UPDATE..#f_deal_temp
.......SET
............rollover_value_1.=.lr.l_rollsum
......FROM
............l_rollsum...lr
.....WHERE
............#f_deal_temp.f_sum_1........=.lr.f_sum..............AND
............lr.f_deal...................IS.NOT.NULL

/*-----.подсветка.второй.суммы.если.она.вошла.в.ролловер.--------------------------*/

....UPDATE..#f_deal_temp
.......SET
............rollover_value_2.=.lr.l_rollsum
......FROM
............l_rollsum...lr
.....WHERE
............#f_deal_temp.f_sum_2........=.lr.f_sum..............AND
............lr.f_deal...................IS.NOT.NULL

/*-----.флаг.1.сделки.если.она.вошла.в.таблицу.ccылок.журнала.(l_jurnal).-----------*/

....UPDATE..#f_deal_temp
.......SET
............journal_add.=.1
......FROM
............l_jurnal....lj
.....WHERE
............lj.c_jurtype...............=.@c_jurtype.....and
............#f_deal_temp.f_deal........=.lj.f_d_f_deal

/*-----.ID.сделки.если.она.вошла.в.сделку.журнал.-----------------------------------*/

....UPDATE.#f_deal_temp
.......SET
............journal_l_jurnal....=.lj.l_jurnal,
............journal_f_deal......=.lj.f_deal,
............journal_f_d_f_deal..=.lj.f_d_f_deal
......FROM
............l_jurnal....lj
.....WHERE
............#f_deal_temp.f_deal........=.lj.f_d_f_deal..and
............lj.c_jurtype...............=.@c_jurtype.....and
............lj.f_d_f_deal..............is.not.null

/*-----последние.изменения.сделал.--------------------------------------------------*/

....UPDATE..#f_deal_temp
.......SET
............#f_deal_temp.f_user_2.......=.fu.f_user
......FROM
............f_user....fu
.....WHERE
............#f_deal_temp.usermodify_2...=.fu.name

..../*.Срок.*/
....IF.@check_srok.>.0
....BEGIN

......../*.Проставим.срок.=.0.для.всех,.кроме.Форекс.и.МБК.*/
........UPDATE
................#f_deal_temp
...........SET
................srok.=.0
.........WHERE
................NOT.c_market.=.@c_market_mbk.AND
................NOT.c_market.=.@c_market_forex

......../*.Проставим.сроки.для.ЦБ.*/
........UPDATE
................#f_deal_temp
...........SET
................date_pay......=.ISNULL(.fs_date_pay_1,.date_time_2.),
................date_delivery.=.ISNULL(.st_date_pay_1,.date_time_1.)
.........WHERE
................c_market.IN.(.@c_market_stock,.@c_market_bond,.@c_market_bill.)

......../*.MIN(.дата.поставки,.дата.оплаты.).*/
........UPDATE
................#f_deal_temp
...........SET
................date_min.=.CASE
................................WHEN.date_pay.<.date_delivery.THEN.date_pay
................................ELSE.date_delivery
...........................END
.........WHERE
................c_market.IN.(.@c_market_stock,.@c_market_bond,.@c_market_bill.)

........UPDATE
................#f_deal_temp
...........SET
................srok.=.DATEDIFF(.dd,.do_date_time_1,.date_min.)
.........WHERE
................c_market.IN.(.@c_market_stock,.@c_market_bond,.@c_market_bill.)

......../*.Корректировка.для.учета.выходных.дней.*/
........UPDATE
................#f_deal_temp
...........SET
................srok.=.srok.-.(
................................SELECT
........................................COUNT(.*.)
..................................FROM
........................................f_holiday.fh
.................................WHERE
........................................fh.date_time.BETWEEN.#f_deal_temp.do_date_time_1.and.#f_deal_temp.date_min.AND
........................................c_currency.=.@c_currency_national
..............................)
..........WHERE
................c_market.IN.(.@c_market_stock,.@c_market_bond,.@c_market_bill.).AND
................srok.!=.0

......../*.Для.МБК.*/
........UPDATE
................#f_deal_temp
...........SET
................srok.=.datediff(.dd,.date_time_1,.date_time_2.)
.........WHERE
................c_market.=.@c_market_mbk

......../*.Для.ForEx.*/

......../*.Установить.дату.создания.как.дату.перехода.статуса.(.fx_dt_make.-.заполняется.выше.).*/
........UPDATE..#f_deal_temp
...........SET
................fx_dt_make.=.(.SELECT
........................................max(fo.date_time)
.................................FROM
........................................f_oper..fo
................................WHERE
........................................#f_deal_temp.f_deal.=.fo.f_deal.....and
........................................fo.f_move..in.(select
................................................................f_move
.........................................................from
................................................................f_move
........................................................where
................................................................c_dealstatus.=.2000.....and
.............................................................c_d_c_dealstatus.=.3000
......................................................)
...........................)
.........WHERE
................c_market.=.@c_market_forex.AND
................NOT.#f_deal_temp.c_classificator.IN(.2,.3.)

......../*.Выбрать.максимальную.дату.валютирования.*/
........UPDATE
................#f_deal_temp
...........SET
................fx_max_date.=.CASE
....................................WHEN.date_time_2.>.date_time_1.THEN.date_time_2
....................................ELSE.date_time_1
..............................END
.........WHERE
................c_market.=.@c_market_forex

......../*.дата.валютирования.должны.быть.рабочим.днем.*/
........WHILE.EXISTS(
........................SELECT
................................1
..........................FROM
................................#f_deal_temp
.........................WHERE
................................c_market.=.@c_market_forex.AND
................................fx_max_date.IN.(
........................................SELECT
................................................date_time
..........................................FROM
................................................f_holiday
.........................................WHERE
................................................f_holiday.c_currency.=.@c_currency_national
...................................................)
....................)
........BEGIN
............UPDATE
....................#f_deal_temp
...............SET
....................fx_max_date.=.dateadd(.dd,.1,.fx_max_date.)
.............WHERE
....................c_market.=.@c_market_forex.AND
....................fx_max_date.IN.(
........................................SELECT
................................................date_time
..........................................FROM
................................................f_holiday
.........................................WHERE
................................................f_holiday.c_currency.=.@c_currency_national
......................................)
........END

......../*.Проставим.срок.*/
........UPDATE
................#f_deal_temp
...........SET
................srok.=.datediff(.dd,.fx_dt_make,.fx_max_date.)
.........WHERE
................c_market.=.@c_market_forex

......../*
............Вычесть.из.сроков.выходные.дни.(сроки.считаются.по.базовой.валюте.)
............Для.сделок.Today.этого.делать.не.нужно
........*/
........UPDATE
................#f_deal_temp
...........SET
................srok.=.srok.-.(
................................SELECT
........................................COUNT(.*.)
..................................FROM
........................................f_holiday.fh
.................................WHERE
........................................fh.date_time.BETWEEN.#f_deal_temp.fx_dt_make.and.#f_deal_temp.fx_max_date.AND
........................................c_currency.=.@c_currency_national
..............................)
..........WHERE
................c_market.=.@c_market_forex.AND
................NOT.srok.=.0


........IF.@check_srok.=.1...../*.=.*/
........BEGIN
............DELETE
....................#f_deal_temp
.............WHERE
....................NOT.srok.=.@srok

........END
........ELSE.IF.@check_srok.=.2...../*.>.*/
........BEGIN
............DELETE
....................#f_deal_temp
.............WHERE
....................NOT.srok.>.@srok
........END
........ELSE.IF.@check_srok.=.3...../*.<.*/
........BEGIN
............DELETE
....................#f_deal_temp
.............WHERE
....................NOT.srok.<.@srok
........END

....END


..../*.Запрос.по.инициатору.*/
....IF.@f_client12.>.0
....BEGIN

......../*.Запрос.по.клиенту.портфеля.*/
........IF.@f_client_4.>.0
........BEGIN

............UPDATE
....................#f_deal_temp
...............SET
....................f_client12.=.f_client_2
.............WHERE
....................f_client_2.=.@f_client12....AND
....................(
........................(
............................f_client_2.=.f_client_1.....AND
............................fp_client_2.=.@f_client_4
........................).OR
........................NOT.f_client_2.=.f_client_1

....................)
........END
........ELSE
........BEGIN
............UPDATE
....................#f_deal_temp
...............SET
....................f_client12.=.f_client_2
.............WHERE
....................f_client_2.=.@f_client12
........END
....END
....ELSE
....BEGIN

......../*.Запрос.по.клиенту.портфеля.*/
........IF.@f_client_4.>.0
........BEGIN
............UPDATE
....................#f_deal_temp
...............SET
....................f_client12.=.f_client_2
.............WHERE
....................fp_client_2.=.@f_client_4

........END
....END

/*-----.возвращаемые.поля.----------------------------------------------------------*/
err:

....SELECT
............f_deal,
............f_deal_reference,
............c_jurtype,
............c_market,
............c_classificator,
............c_classif_name,
............textcolor,
............c_dealstatus,
............f_path,
............number,
............number_jur,
............descr,
............rollover,
............commission,
/*-----f_sum.-.первая.сумма.сделки.-------------------------------------------------*/
............f_sum_1,
............f_sumtype_1,
............c_currency_1,
............currency_iso_1,
............date_time_1,
............value_1,
/*-----f_member.-.первый.участник.сделки.-------------------------------------------*/
............f_member_1,
............c_membertype_1,
............f_client_1,
............code_1,
............rtscode_1,
............rsbcode_1,
............firstname_1,
............f_portf_1,
............f_portf_code_1,
/*-----f_sum.-.вторая.сумма.сделки.-------------------------------------------------*/
............f_sum_2,
............f_sumtype_2,
............c_currency_2,
............currency_iso_2,
............date_time_2,
............value_2,
/*-----f_member.-.второй.участник.сделки.-------------------------------------------*/
............f_member_2,
............c_membertype_2,
............f_client_2,
............code_2,
............rtscode_2,
............rsbcode_2,
............firstname_2,
............f_portf_2,
............f_portf_code_2,
/*-----f_sum.-.третья.сумма.сделки.-------------------------------------------------*/
............f_sum_3,
............f_sumtype_3,
............c_currency_3,
............currency_iso_3,
............date_time_3,
............value_3,
/*-----f_member.-.третий.участник.сделки.-------------------------------------------*/
............f_member_3,
............c_membertype_3,
............f_client_3,
............code_3,
............rtscode_3,
............rsbcode_3,
............firstname_3,
/*-----f_member.-.четвертый.участник.сделки.----------------------------------------*/
............f_member_4,
............c_membertype_4,
............f_client_4,
............code_4,
............rtscode_4,
............rsbcode_4,
............firstname_4,
/*-----создал.----------------------------------------------------------------------*/
............f_user_1,
............usermake_1,
............userdescr_1,
............dt_make_1,
/*-----последние.изменения.сделал.--------------------------------------------------*/
............f_user_2,
............usermodify_2,
............userdescr_2,
............dt_modify_2,
/*-----дополнительные.поля.---------------------------------------------------------*/
............f_rate,
............rate,
............real_rate,
............revers,
............finans,
............market_name,
............c_opertype,
............c_metod,
............c_sumkind,
............f_account_1,
............f_account_2,
............f_account_3,
............f_pos_11,
............f_pos_12,
............f_pos_13,
............f_pos_21,
............f_pos_22,
............f_pos_23,
/*-----не.возвращаемые.поля.--------------------------------------------------------*/
............netting_value_1,
............netting_value_2,
............rollover_value_1,
............rollover_value_2,
............journal_l_jurnal,
............journal_f_deal,
............journal_f_d_f_deal,
............journal_add,
............f_instr_1,
............f_issue_1,
............f_instr_code_1,
............do_dognum_1,
............do_date_time_1,
............do_dogform_name_1,
............do_descr_1,
............do_dognum_2,
............do_date_time_2,
............do_dogform_name_2,
............do_descr_2,
............st_date_pay_1,
............st_date_begin_1,
............st_date_end_1,
............fs_date_pay_1,
............f_pricetype,
............f_pricetype_name,
............f_client12,
............@c_currency_12......c_currency_12,
............rate_pay,
............selectrow
......FROM
............#f_deal_temp
..ORDER.BY
............f_deal

..../*.Удаление.временной.таблицы.*/
....DROP.TABLE.#f_deal_account
....DROP.TABLE.#f_deal_temp

..../*.Проставим.время.работы.процедуры.*/


END
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32518832
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После запуска:
sp_sysmon '00:10:00'
go
Сервер ASE через несколько минут вошел в глубокий штопор и умер так,
что пришлось его перезапускать компьютер на котором он работал.

Последнее что он выдал перед смертью на запуск sp_who было:

Failed to allocate disk space for a work table in database 'tempdb'.
You may be able to free up space by using the DUMP TRANsaction command,
or you may want to extend the size of the database by using the
ALTER DATABASE command.

Дальше, что было я думаю рассказывать не стоит, через это проходили все :)
Телефон расплавился, начальство пришло лично, .....

Что еще попробовать? Как бороться с блокировками?
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32519011
_Sania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Размер tempdb 603 Mb = (3Mb Data and Log + 300 Data + 300 Log)
Увеличить лог до 600Мб, вынести его на отдельный девайс.

>Check - Truncate log on checkpoint
Убрать, поставить порог примерно на 200Мб свободного места, а в нем
dump tran tempdb with no_log.
(можно просто поправит sp_tresholdaction в sybsystemprocs и поменять расположение последнего порога для tempdb)

Желательно сделать отдельный кэш для tempdb.
Если стартует несколько ядер, то можно поиграться с партициями кэшей.

В подобной ситуации может оказаться виноват не тот процесс, который всех блокирует. Посмотри повнимательней, что делает 31-й процесс в первом примере и 61-й во втором. Часто подобная ситуация возникает когда какой-либо процесс проводит операции с большим объемом ввода-вывода в tempdb (например update больших временных таблиц), при этом все процессы, создающие временные таблицы выстраиваются в очередь и все жутко тормозит.
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32519172
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Посмотри повнимательней, что делает  31 -й процесс 
в первом примере и  61 -й во втором.

31 в первом и 61 во втором это я, - кто запускает sh_who,

а в остальном все очень похоже на правду. Действительно
начинает тормозить если пользователь запросил операции с
большим объемом ввода-вывода, в tempdb (например update
больших временных таблиц). - Прямо в яблочко.

А если таких, в один момент пара, тройка, то база висит 100% две и более
минуты. Можно постараться, как вчера, и вообще завалить базу. :(

Код: plaintext
Желательно сделать отдельный кэш для tempdb.
Это как сделать, а всю tempdb в кэш засунуть можно?

Сегодня на работу меня не пустят, но в понедельник обязательно все
это проделаю.
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32519251
_Sania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Это как сделать, а всю tempdb в кэш засунуть можно?
Как обычно, создаешь кэш:
sp_cacheconfig "имя_кэша", "размер_кэша"
перезагружаемся.

При создании кэша лучше явно указать еденицу измерения, т.е. если 50МБ, то надо писать
sp_cacheconfig "имя_кэша", "50M"

Всю tempdb засунуть кэш конечно можно (в предельном варианте делают виртуальный диск в ОЗУ и кладут tempdb туда, но видеть такое не приходилось), но обычно столько свободной ОЗУ нет, да это и не эффективно, в твоем случае хватит 100-150Мб. Примерно 30-40 Мб можно отвести под 16Кб пул.
sp_poolconfig "имя_кэша", "30M", "16K", "2K"

После этого надо привязать новый кэш к tempdb, это можно сделать в Central, папка Caches, выбираем кэш Properties->Cache Bindings

или sp_bindcache "имя_кэша","имя_базы"

После окончаний всех операций с кэшами и tempdb сервак лучше перезагрузить еще раз.
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32519871
Mladov Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
После запуска:
sp_sysmon '00:10:00'
go
Сервер ASE через несколько минут вошел в глубокий штопор и умер так,
что пришлось его перезапускать компьютер на котором он работал.

Последнее что он выдал перед смертью на запуск sp_who было:

Failed to allocate disk space for a work table in database 'tempdb'. 
You may be able to free up space by using the DUMP TRANsaction command, 
or you may want to extend the size of the database by using the 
ALTER DATABASE command.
А вот это странно...
Можно попробовать не на 10 минут, а хотя бы на 1-2...
Также могу посоветовать (у самого так работает) для tempdb не делать разных девайсов для лога и данных... У меня две базы 2 и 3.5 Гб, и tempdb недавно только сделал 1Гб, до этого было 512Мб...

То, что блокировки висят 2 минуты на апдейтах/делитах больших объемов данных - это вполне нормально, если сервер не очень мощный, а данных и юзеров, одновременно пытающихся что-то делать, много.
Процессор один? Если один процессор на 16 активных пользователей ,то это не очень хорошо...
Могу посоветовать сделать индекс(ы) на временной таблице #f_deal_temp по всем ключевым/используемым в связях полям. Если данных в таблицу насасывается много, то при операциях идет сканирование всей таблицы. Как следствие, идет интенсивный ввод/вывод + загрузка процессора. Индексы могут уменьшить время операций, число операций ввода/вывода - как следствие, должно уменьшиться время ожидания остальных процессов в блокировке.

RAID стоит какой? Сколько и каких дисков? Как загружена дисовая подсистема? (Хотя бы просто посмотри - сильно винтами шуршит?) Какая при этом загрузка проца?

2_Sania
Код: plaintext
1.
2.
Всю tempdb засунуть кэш конечно можно (в предельном варианте делают виртуальный диск в ОЗУ и кладут tempdb туда, но видеть такое не приходилось), но обычно столько свободной ОЗУ нет, да это и не эффективно, в твоем случае хватит  100 -150Мб. Примерно  30 - 40  Мб можно отвести под 16Кб пул.
sp_poolconfig "имя_кэша", "30M", "16K", "2K"
В общем согласен, но есть сомнения по поводу необходимости 16К-пула.
У меня, например, при создании 16К-пула (от 8 до 300 Мб пробовал) начинался жуткий ввод/вывод (винтами постоянно шуршал) и любой select выполнялся раза в 4 дольше... ASE 12.0, правда...
Вот 4К-пул, мегов на 150 - дело хорошее.
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32519980
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
>Check - Truncate log on checkpoint
Убрать, поставить порог примерно на 200Мб свободного места, а в нем 
dump tran tempdb with no_log.
(можно просто поправит sp_tresholdaction в sybsystemprocs и поменять расположение последнего порога для tempdb)

Стал перечитывать внимательнее, появился вопрос.
А как поставить порог на 200Мб для tempdb ?

sp_addthreshold tempdb, logsegment, 200, prc_dumptransaction
Это правильно?

Или лучше указать свою процедуру например?
sp_addthreshold tempdb, logsegment, 200, prc_dumptransaction
Но тогда почему ASE выдает ошибку:
This threshold is too close to one or more existing thresholds. Thresholds must be no closer than 128 pages to each other.

Если на tempdb процедура создана:
CREATE PROCEDURE prc_dumptransaction
@dbname varchar(30),
@segmentname varchar(30),
@spase_left int,
@status int
AS
DUMP TRANSACTION tempdb with no_log
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32519995
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
sp_addthreshold tempdb, logsegment,  200 , prc_dumptransaction
Это правильно?
Вместо prc_dumptransaction должно было стоять sp_thresholdaction
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32520057
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
RAID стоит какой? Сколько и каких дисков? Как загружена дисовая подсистема? (Хотя бы просто посмотри - сильно винтами шуршит?) Какая при этом загрузка проца?

Да я это упустил:
RAID - 5 пять винчестетов
Процессоров 2
Дискового простанства 135 Gb
Процессор в критические моменты занят на 60 - 80%%
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32520079
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось
sp_sysmon '00:10:00'
go

DBCC.execution.completed..If.DBCC.printed.error.messages,.contact.a.user.with.System.Administrator.(SA).role.
===============================================================================
......Sybase.Adaptive.Server.Enterprise.System.Performance.Report
===============================================================================

Server.Version:........Adaptive.Server.Enterprise/12.5.0.3/EBF.11449.ESD#4/P/NT
Server.Name:...........Server.is.Unnamed
Run.Date:..............May.17,.2004
Statistics.Cleared.at:.12:26:16
Statistics.Sampled.at:.12:31:16
Sample.Interval:.......00:05:00

===============================================================================

Kernel.Utilization
------------------

..Your.Runnable.Process.Search.Count.is.set.to.2000
..and.I/O.Polling.Process.Count.is.set.to.10

..Engine.Busy.Utilization........CPU.Busy...I/O.Busy.......Idle
..------------------------.......--------...--------...--------
....Engine.0........................0.0.%......0.0.%....100.0.%

..CPU.Yields.by.Engine............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Engine.0.........................32.0.........274.3........9599.....100.0.%

..Network.Checks
....Non-Blocking....................659.7........5654.3......197901......91.2.%
....Blocking.........................64.0.........548.5.......19198.......8.8.%
..-------------------------..------------..------------..----------
..Total.Network.I/O.Checks..........723.7........6202.8......217099
..Avg.Net.I/Os.per.Check..............n/a...........n/a.....0.00000.......n/a

..Disk.I/O.Checks
....Total.Disk.I/O.Checks...........691.7........5928.6......207500.......n/a
....Checks.Returning.I/O..............0.0...........0.0...........0.......0.0.%


===============================================================================

Worker.Process.Management
-------------------------
..................................per.sec......per.xact.......count..%.of.total
.............................------------..------------..----------..----------
.Worker.Process.Requests
...Total.Requests.....................0.0...........0.0...........0.......n/a

.Worker.Process.Usage
...Total.Used.........................0.0...........0.0...........0.......n/a
...Max.Ever.Used.During.Sample........0.0...........0.0...........0.......n/a

.Memory.Requests.for.Worker.Processes
...Total.Requests.....................0.0...........0.0...........0.......n/a


===============================================================================

Parallel.Query.Management
-------------------------

..Parallel.Query.Usage............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.Parallel.Queries..............0.0...........0.0...........0.......n/a

..Merge.Lock.Requests.............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.#.of.Requests.................0.0...........0.0...........0.......n/a

..Sort.Buffer.Waits...............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.#.of.Waits....................0.0...........0.0...........0.......n/a

===============================================================================

Task.Management...................per.sec......per.xact.......count..%.of.total
---------------------------..------------..------------..----------..----------

..Connections.Opened..................0.0...........0.0...........0.......n/a

..Task.Context.Switches.by.Engine
....Engine.0..........................0.6...........5.0.........175.....100.0.%

..Task.Context.Switches.Due.To:
....Voluntary.Yields..................0.3...........2.1..........75......42.9.%
....Cache.Search.Misses...............0.0...........0.0...........0.......0.0.%
....System.Disk.Writes................0.0...........0.0...........0.......0.0.%
....I/O.Pacing........................0.0...........0.0...........0.......0.0.%
....Logical.Lock.Contention...........0.0...........0.0...........0.......0.0.%
....Address.Lock.Contention...........0.0...........0.0...........0.......0.0.%
....Latch.Contention..................0.0...........0.0...........0.......0.0.%
....Log.Semaphore.Contention..........0.0...........0.0...........0.......0.0.%
....PLC.Lock.Contention...............0.0...........0.0...........0.......0.0.%
....Group.Commit.Sleeps...............0.0...........0.0...........0.......0.0.%
....Last.Log.Page.Writes..............0.0...........0.0...........0.......0.0.%
....Modify.Conflicts..................0.0...........0.0...........0.......0.0.%
....I/O.Device.Contention.............0.0...........0.0...........0.......0.0.%
....Network.Packet.Received...........0.0...........0.0...........0.......0.0.%
....Network.Packet.Sent...............0.0...........0.0...........0.......0.0.%
....Other.Causes......................0.3...........2.9.........100......57.1.%


===============================================================================

Application.Management
----------------------

..Application.Statistics.Summary.(All.Applications)
..-------------------------------------------------
..Priority.Changes................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....To.High.Priority..................0.0...........0.0...........0.......0.0.%
....To.Medium.Priority................0.1...........0.4..........15......50.0.%
....To.Low.Priority...................0.1...........0.4..........15......50.0.%
..-------------------------..------------..------------..----------
..Total.Priority.Changes..............0.1...........0.9..........30

..Allotted.Slices.Exhausted.......per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....High.Priority.....................0.0...........0.0...........0.......0.0.%
....Medium.Priority...................0.0...........0.0...........1.....100.0.%
....Low.Priority......................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------
..Total.Slices.Exhausted..............0.0...........0.0...........1

..Skipped.Tasks.By.Engine.........per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.Engine.Skips..................0.0...........0.0...........0.......n/a

..Engine.Scope.Changes................0.0...........0.0...........0.......n/a

===============================================================================

ESP.Management....................per.sec......per.xact.......count..%.of.total
---------------------------..------------..------------..----------..----------
..ESP.Requests........................0.0...........0.0...........0.......n/a
===============================================================================

Housekeeper.Task.Activity
-------------------------
..................................per.sec......per.xact.......count..%.of.total
.............................------------..------------..----------
Buffer.Cache.Washes
..Clean..............................0.5...........3.9.........135......99.3.%
..Dirty..............................0.0...........0.0...........1.......0.7.%
.............................------------..------------..----------
Total.Washes.........................0.5...........3.9.........136

Garbage.Collections..................0.2...........1.7..........60.......n/a
Pages.Processed.in.GC................0.0...........0.0...........0.......n/a

Statistics.Updates...................0.0...........0.2...........6.......n/a

===============================================================================

Monitor.Access.to.Executing.SQL
-------------------------------
..................................per.sec......per.xact.......count..%.of.total
.............................------------..------------..----------..----------
.Waits.on.Execution.Plans............0.0...........0.0...........0.......n/a
.Number.of.SQL.Text.Overflows........0.0...........0.0...........0.......n/a
.Maximum.SQL.Text.Requested..........n/a...........n/a...........0.......n/a
..(since.beginning.of.sample)


===============================================================================

Transaction.Profile
-------------------

..Transaction.Summary.............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Committed.Xacts...................0.1...........n/a..........35.....n/a

..Transaction.Detail..............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Total.Rows.Affected...............0.0...........0.0...........0.......n/a

===============================================================================

Transaction.Management
----------------------

..ULC.Flushes.to.Xact.Log.........per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....by.Full.ULC.......................0.0...........0.0...........0.......0.0.%
....by.End.Transaction................0.0...........0.0...........0.......0.0.%
....by.Change.of.Database.............0.0...........0.0...........0.......0.0.%
....by.Single.Log.Record..............0.0...........0.0...........0.......0.0.%
....by.Other..........................0.1...........1.0..........35.....100.0.%
..-------------------------..------------..------------..----------
..Total.ULC.Flushes...................0.1...........1.0..........35

..ULC.Log.Records.....................0.0...........0.0...........0.......n/a
..Max.ULC.Size.During.Sample..........n/a...........n/a...........0.......n/a

..ULC.Semaphore.Requests
....Granted...........................0.5...........4.0.........140.....100.0.%
....Waited............................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------
..Total.ULC.Semaphore.Req.............0.5...........4.0.........140

..Log.Semaphore.Requests
....Granted...........................0.1...........1.0..........35.....100.0.%
....Waited............................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------
..Total.Log.Semaphore.Req.............0.1...........1.0..........35

..Transaction.Log.Writes..............0.0...........0.0...........0.......n/a
..Transaction.Log.Alloc...............0.0...........0.0...........0.......n/a

===============================================================================

Index.Management
----------------

..Nonclustered.Maintenance........per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Ins/Upd.Requiring.Maint...........0.0...........0.0...........0.......n/a
......#.of.NC.Ndx.Maint...............0.0...........0.0...........0.......n/a

....Deletes.Requiring.Maint...........0.0...........0.0...........0.......n/a
......#.of.NC.Ndx.Maint...............0.0...........0.0...........0.......n/a

....RID.Upd.from.Clust.Split..........0.0...........0.0...........0.......n/a
......#.of.NC.Ndx.Maint...............0.0...........0.0...........0.......n/a

....Upd/Del.DOL.Req.Maint.............0.0...........0.0...........0.......n/a
......#.of.DOL.Ndx.Maint..............0.0...........0.0...........0.......n/a

..Page.Splits.........................0.0...........0.0...........0.......n/a

..Page.Shrinks........................0.0...........0.0...........0.......n/a

..Index.Scans.....................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Total.Scans.......................0.0...........0.0...........0.......n/a

===============================================================================

Metadata.Cache.Management
-------------------------

..Metadata.Cache.Summary.........per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------

..Open.Object.Usage
....Active............................n/a...........n/a..........35.......n/a
....Max.Ever.Used.Since.Boot..........n/a...........n/a..........35.......n/a
....Free..............................n/a...........n/a.........465.......n/a
....Reuse.Requests
......Succeeded.......................n/a...........n/a...........0.......n/a
......Failed..........................n/a...........n/a...........0.......n/a

..Open.Index.Usage
....Active............................n/a...........n/a..........12.......n/a
....Max.Ever.Used.Since.Boot..........n/a...........n/a..........12.......n/a
....Free..............................n/a...........n/a.........488.......n/a
....Reuse.Requests
......Succeeded.......................n/a...........n/a...........0.......n/a
......Failed..........................n/a...........n/a...........0.......n/a

..Open.Database.Usage
....Active............................n/a...........n/a...........8.......n/a
....Max.Ever.Used.Since.Boot..........n/a...........n/a...........8.......n/a
....Free..............................n/a...........n/a...........4.......n/a
....Reuse.Requests
......Succeeded.......................n/a...........n/a...........0.......n/a
......Failed..........................n/a...........n/a...........0.......n/a

..Object.Manager.Spinlock.Contention..n/a...........n/a..........n/a......0.0.%

..Object.Spinlock.Contention..........n/a...........n/a..........n/a......0.0.%

..Index.Spinlock.Contention...........n/a...........n/a..........n/a......0.0.%

..Hash.Spinlock.Contention............n/a...........n/a..........n/a......0.0.%

===============================================================================

Lock.Management
---------------

..Lock.Summary....................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.Lock.Requests.................0.1...........1.0..........35.......n/a
..Avg.Lock.Contention.................0.0...........0.0...........0.......0.0.%
..Deadlock.Percentage.................0.0...........0.0...........0.......0.0.%

..Lock.Detail.....................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------

..Table.Lock.Hashtable
....Lookups...........................0.0...........0.0...........0.......n/a
....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.%

..Exclusive.Table
....Total.EX-Table.Requests...........0.0...........0.0...........0.......n/a

..Shared.Table
....Total.SH-Table.Requests...........0.0...........0.0...........0.......n/a

..Exclusive.Intent
....Total.EX-Intent.Requests..........0.0...........0.0...........0.......n/a

..Shared.Intent
....Total.SH-Intent.Requests..........0.0...........0.0...........0.......n/a

..Page.&.Row.Lock.HashTable
....Lookups...........................0.0...........0.0...........0.......n/a
....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.%

..Exclusive.Page
....Total.EX-Page.Requests............0.0...........0.0...........0.......n/a

..Update.Page
....Total.UP-Page.Requests............0.0...........0.0...........0.......n/a

..Shared.Page
....Total.SH-Page.Requests............0.0...........0.0...........0.......n/a

..Exclusive.Row
....Total.EX-Row.Requests.............0.0...........0.0...........0.......n/a

..Update.Row
....Total.UP-Row.Requests.............0.0...........0.0...........0.......n/a

..Shared.Row
....Total.SH-Row.Requests.............0.0...........0.0...........0.......n/a

..Next-Key
....Total.Next-Key.Requests...........0.0...........0.0...........0.......n/a

..Address.Lock.Hashtable
....Lookups...........................0.1...........1.0..........35.......n/a
....Avg.Chain.Length..................n/a...........n/a.....0.00000.......n/a
....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.%

..Exclusive.Address
....Granted...........................0.1...........1.0..........35.....100.0.%
....Waited............................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------..----------
..Total.EX-Address.Requests...........0.1...........1.0..........35.....100.0.%

..Shared.Address
....Total.SH-Address.Requests.........0.0...........0.0...........0.......n/a

..Last.Page.Locks.on.Heaps
....Total.Last.Pg.Locks...............0.0...........0.0...........0.......n/a

..Deadlocks.by.Lock.Type..........per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.Deadlocks.....................0.0...........0.0...........0.......n/a


..Deadlock.Detection
....Deadlock.Searches.................0.0...........0.0...........0.......n/a


..Lock.Promotions
....Total.Lock.Promotions.............0.0...........0.0...........0.......n/a


..Lock.Timeouts.by.Lock.Type......per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.Timeouts......................0.0...........0.0...........0.......n/a


===============================================================================

Data.Cache.Management
---------------------

..Cache.Statistics.Summary.(All.Caches)
..-------------------------------------
..................................per.sec......per.xact.......count..%.of.total
.............................------------..------------..----------..----------

....Cache.Search.Summary
......................................0.0...........0.0...........0.......n/a

....Cache.Turnover
......Buffers.Grabbed.................0.0...........0.0...........0.......n/a

....Cache.Strategy.Summary
......................................0.0...........0.0...........0.......n/a

....Large.I/O.Usage
......................................0.0...........0.0...........0.......n/a

....Large.I/O.Effectiveness
......Pages.by.Lrg.I/O.Cached.........0.0...........0.0...........0.......n/a

....Asynchronous.Prefetch.Activity
......................................0.0...........0.0...........0.......n/a

....Other.Asynchronous.Prefetch.Statistics
......APFs.Used.......................0.0...........0.0...........0.......n/a
......APF.Waits.for.I/O...............0.0...........0.0...........0.......n/a
......APF.Discards....................0.0...........0.0...........0.......n/a

....Dirty.Read.Behavior
......Page.Requests...................0.0...........0.0...........0.......n/a

-------------------------------------------------------------------------------
..Cache:.default.data.cache
..................................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.%

....Cache.Searches
......Total.Cache.Searches............0.0...........0.0...........0.......n/a
..-------------------------..------------..------------..----------
....Total.Cache.Searches..............0.0...........0.0...........0

....Pool.Turnover.....................0.0...........0.0...........0.......n/a

....Buffer.Wash.Behavior
......Statistics.Not.Available.-.No.Buffers.Entered.Wash.Section.Yet

....Cache.Strategy
......Statistics.Not.Available.-.No.Buffers.Displaced.Yet

....Large.I/O.Usage
......Total.Large.I/O.Requests........0.0...........0.0...........0.......n/a

....Large.I/O.Detail
......No.Large.Pool(s).In.This.Cache

....Dirty.Read.Behavior
.......Page.Requests...............0.0...........0.0...........0.......n/a

===============================================================================

Procedure.Cache.Management........per.sec......per.xact.......count..%.of.total
---------------------------..------------..------------..----------..----------
..Procedure.Requests..................0.0...........0.0...........0.......n/a


===============================================================================

Memory.Management.................per.sec......per.xact.......count..%.of.total
---------------------------..------------..------------..----------..----------
..Pages.Allocated.....................0.1...........1.1..........37.......n/a
..Pages.Released......................0.1...........1.1..........37.......n/a

===============================================================================

Recovery.Management
-------------------

..Checkpoints.....................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.Checkpoints...................0.0...........0.0...........0.......n/a

===============================================================================

Disk.I/O.Management
-------------------

..Max.Outstanding.I/Os............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Server............................n/a...........n/a...........0.......n/a
....Engine.0..........................n/a...........n/a...........0.......n/a


..I/Os.Delayed.by
....Disk.I/O.Structures...............n/a...........n/a...........0.......n/a
....Server.Config.Limit...............n/a...........n/a...........0.......n/a
....Engine.Config.Limit...............n/a...........n/a...........0.......n/a
....Operating.System.Limit............n/a...........n/a...........0.......n/a


..Total.Requested.Disk.I/Os...........0.0...........0.0...........0

..Completed.Disk.I/O's
....Total.Completed.I/Os..............0.0...........0.0...........0.......n/a
..-------------------------..------------..------------..----------
..Total.Completed.I/Os................0.0...........0.0...........0


..Device.Activity.Detail
..----------------------

....No.Disk.I/O.in.Given.Sample.Period



===============================================================================

Network.I/O.Management
----------------------

..Total.Network.I/O.Requests..........0.0...........0.0...........0.......n/a


..Total.TDS.Packets.Received......per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.TDS.Packets.Rec'd.............0.0...........0.0...........0.......n/a


..Total.Bytes.Received............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.Bytes.Rec'd...................0.0...........0.0...........0.......n/a


..-----------------------------------------------------------------------------

..Total.TDS.Packets.Sent..........per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.TDS.Packets.Sent..............0.0...........0.0...........0.......n/a


..Total.Bytes.Sent................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.Bytes.Sent....................0.0...........0.0...........0.......n/a


===============================.End.of.Report.=================================
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32520459
Mladov Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А ты во время загрузки sp_sysmon дергал? а то что-то не так как-то...

А почему у тебя ASE'у только один процессор отведен?
Если процов 2, то и работать оба должны. 8)

sp_configure 'max online engines',2
sp_configure 'min online engines',2

HyperTreading включен? Если да, то

sp_configure 'max online engines',4
sp_configure 'min online engines',3
После вышеописанного надо сервер перегружать.

рейд аппаратный?
IMHO, лучше из пяти дисков сделать следующее - четыре диска в 10 raid, а 5-й - в hot spare (в горячую замену).

Индексы не пробовал на #f_deal_temp создавать?
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32520462
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это сразу после перезапуска сервера:

sp_sysmon '00:10:00'
go

Но на первый взгляд работать лучше не стало :(


DBCC.execution.completed..If.DBCC.printed.error.messages,.contact.a.user.with.System.Administrator.(SA).role.
===============================================================================
......Sybase.Adaptive.Server.Enterprise.System.Performance.Report
===============================================================================

Server.Version:........Adaptive.Server.Enterprise/12.5.0.3/EBF.11449.ESD#4/P/NT
Server.Name:...........Server.is.Unnamed
Run.Date:..............May.17,.2004
Statistics.Cleared.at:.14:12:58
Statistics.Sampled.at:.14:22:58
Sample.Interval:.......00:10:00

===============================================================================

Kernel.Utilization
------------------

..Your.Runnable.Process.Search.Count.is.set.to.2000
..and.I/O.Polling.Process.Count.is.set.to.10

..Engine.Busy.Utilization........CPU.Busy...I/O.Busy.......Idle
..------------------------.......--------...--------...--------
....Engine.0........................1.5.%.....80.2.%.....18.3.%
....Engine.1........................3.2.%......4.8.%.....92.0.%
..------------------------.......--------...--------...--------
..Summary...........Total...........4.7.%.....85.0.%....110.3.%
..................Average...........2.4.%.....42.5.%.....55.1.%

..CPU.Yields.by.Engine............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Engine.0..........................6.2...........4.4........3716......17.2.%
....Engine.1.........................29.8..........21.1.......17874......82.8.%
..-------------------------..------------..------------..----------
..Total.CPU.Yields...................36.0..........25.5.......21590

..Network.Checks
....Non-Blocking.................618336.1......438536.3...371001683.....100.0.%
....Blocking.........................71.6..........50.8.......42982.......0.0.%
..-------------------------..------------..------------..----------
..Total.Network.I/O.Checks.......618407.8......438587.1...371044665
..Avg.Net.I/Os.per.Check..............n/a...........n/a.....0.00003.......n/a

..Disk.I/O.Checks
....Total.Disk.I/O.Checks........310912.9......220505.6...186547717.......n/a
....Checks.Returning.I/O.........307527.9......218104.9...184516719......98.9.%
....Avg.Disk.I/Os.Returned............n/a...........n/a.....0.00047.......n/a

..Tuning.Recommendations.for.Kernel.Utilization
..---------------------------------------------
..-.Consider.decreasing.the.'runnable.process.search.count'
....configuration.parameter.if.you.require.the.CPU's.on
....the.machine.to.be.used.for.other.applications.


===============================================================================

Worker.Process.Management
-------------------------
..................................per.sec......per.xact.......count..%.of.total
.............................------------..------------..----------..----------
.Worker.Process.Requests
...Total.Requests.....................0.0...........0.0...........0.......n/a

.Worker.Process.Usage
...Total.Used.........................0.0...........0.0...........0.......n/a
...Max.Ever.Used.During.Sample........0.0...........0.0...........0.......n/a

.Memory.Requests.for.Worker.Processes
...Total.Requests.....................0.0...........0.0...........0.......n/a


===============================================================================

Parallel.Query.Management
-------------------------

..Parallel.Query.Usage............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.Parallel.Queries..............0.0...........0.0...........0.......n/a

..Merge.Lock.Requests.............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.#.of.Requests.................0.0...........0.0...........0.......n/a

..Sort.Buffer.Waits...............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.#.of.Waits....................0.0...........0.0...........0.......n/a

===============================================================================

Task.Management...................per.sec......per.xact.......count..%.of.total
---------------------------..------------..------------..----------..----------

..Connections.Opened..................0.0...........0.0...........8.......n/a

..Task.Context.Switches.by.Engine
....Engine.0.........................21.4..........15.2.......12867......42.9.%
....Engine.1.........................28.6..........20.3.......17146......57.1.%
..-------------------------..------------..------------..----------
....Total.Task.Switches:.............50.0..........35.5.......30013

..Task.Context.Switches.Due.To:
....Voluntary.Yields..................1.5...........1.0.........878.......2.9.%
....Cache.Search.Misses...............9.1...........6.4........5434......18.1.%
....System.Disk.Writes................0.1...........0.0..........35.......0.1.%
....I/O.Pacing.......................13.0...........9.2........7783......25.9.%
....Logical.Lock.Contention...........0.0...........0.0...........8.......0.0.%
....Address.Lock.Contention...........0.0...........0.0...........0.......0.0.%
....Latch.Contention..................0.0...........0.0...........1.......0.0.%
....Log.Semaphore.Contention..........0.3...........0.2.........151.......0.5.%
....PLC.Lock.Contention...............0.0...........0.0...........0.......0.0.%
....Group.Commit.Sleeps...............3.6...........2.6........2183.......7.3.%
....Last.Log.Page.Writes..............0.0...........0.0..........23.......0.1.%
....Modify.Conflicts..................0.2...........0.1.........118.......0.4.%
....I/O.Device.Contention.............0.0...........0.0...........0.......0.0.%
....Network.Packet.Received...........1.9...........1.4........1150.......3.8.%
....Network.Packet.Sent..............14.2..........10.1........8522......28.4.%
....Other.Causes......................6.2...........4.4........3727......12.4.%


===============================================================================

Application.Management
----------------------

..Application.Statistics.Summary.(All.Applications)
..-------------------------------------------------
..Priority.Changes................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....To.High.Priority..................0.3...........0.2.........166......13.9.%
....To.Medium.Priority................1.0...........0.7.........600......50.3.%
....To.Low.Priority...................0.7...........0.5.........427......35.8.%
..-------------------------..------------..------------..----------
..Total.Priority.Changes..............2.0...........1.4........1193

..Allotted.Slices.Exhausted.......per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....High.Priority.....................0.0...........0.0...........0.......0.0.%
....Medium.Priority...................0.4...........0.3.........241.....100.0.%
....Low.Priority......................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------
..Total.Slices.Exhausted..............0.4...........0.3.........241

..Skipped.Tasks.By.Engine.........per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.Engine.Skips..................0.0...........0.0...........0.......n/a

..Engine.Scope.Changes................0.0...........0.0...........0.......n/a

===============================================================================

ESP.Management....................per.sec......per.xact.......count..%.of.total
---------------------------..------------..------------..----------..----------
..ESP.Requests........................0.0...........0.0...........0.......n/a
===============================================================================

Housekeeper.Task.Activity
-------------------------
..................................per.sec......per.xact.......count..%.of.total
.............................------------..------------..----------
Buffer.Cache.Washes
..Clean.............................26.3..........18.6.......15756......96.2.%
..Dirty..............................1.0...........0.7.........615.......3.8.%
.............................------------..------------..----------
Total.Washes........................27.3..........19.4.......16371

Garbage.Collections..................0.4...........0.3.........238.......n/a
Pages.Processed.in.GC................0.0...........0.0...........0.......n/a

Statistics.Updates...................0.2...........0.1.........106.......n/a

===============================================================================

Monitor.Access.to.Executing.SQL
-------------------------------
..................................per.sec......per.xact.......count..%.of.total
.............................------------..------------..----------..----------
.Waits.on.Execution.Plans............0.0...........0.0...........0.......n/a
.Number.of.SQL.Text.Overflows........0.0...........0.0...........0.......n/a
.Maximum.SQL.Text.Requested..........n/a...........n/a...........0.......n/a
..(since.beginning.of.sample)


===============================================================================

Transaction.Profile
-------------------

..Transaction.Summary.............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Committed.Xacts...................1.4...........n/a.........846.....n/a

..Transaction.Detail..............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Inserts
......APL.Heap.Table................188.0.........133.3......112794......98.2.%
......APL.Clustered.Table.............3.3...........2.4........2000.......1.7.%
......Data.Only.Lock.Table............0.1...........0.1..........85.......0.1.%
..-------------------------..------------..------------..----------..----------
....Total.Rows.Inserted.............191.5.........135.8......114879......26.2.%

....Updates
......APL.Deferred...................35.6..........25.3.......21371.......7.1.%
......APL.Direct.In-place............23.0..........16.3.......13819.......4.6.%
......APL.Direct.Cheap..............441.9.........313.4......265141......88.3.%
......APL.Direct.Expensive............0.0...........0.0...........0.......0.0.%
......DOL.Deferred....................0.0...........0.0...........0.......0.0.%
......DOL.Direct......................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------..----------
....Total.Rows.Updated..............500.6.........355.0......300331......68.4.%

....Data.Only.Locked.Updates
......Total.Rows.Updated..............0.0...........0.0...........0.......n/a
..-------------------------..------------..------------..----------..----------
....Total.DOL.Rows.Updated............0.0...........0.0...........0.......0.0.%

....Deletes
......APL.Deferred....................8.2...........5.8........4942......20.9.%
......APL.Direct.....................31.0..........22.0.......18579......78.7.%
......DOL.............................0.1...........0.1..........83.......0.4.%
..-------------------------..------------..------------..----------..----------
....Total.Rows.Deleted...............39.3..........27.9.......23604.......5.4.%
..=========================..============..============..==========
....Total.Rows.Affected.............731.4.........518.7......438814

===============================================================================

Transaction.Management
----------------------

..ULC.Flushes.to.Xact.Log.........per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....by.Full.ULC.....................166.4.........118.0.......99813......87.9.%
....by.End.Transaction................1.1...........0.8.........659.......0.6.%
....by.Change.of.Database.............0.0...........0.0...........5.......0.0.%
....by.Single.Log.Record.............21.4..........15.2.......12826......11.3.%
....by.Other..........................0.4...........0.3.........260.......0.2.%
..-------------------------..------------..------------..----------
..Total.ULC.Flushes.................189.3.........134.2......113563

..ULC.Log.Records..................1111.2.........788.1......666745.......n/a
..Max.ULC.Size.During.Sample..........n/a...........n/a........2048.......n/a

..ULC.Semaphore.Requests
....Granted........................2175.4........1542.9.....1305262.....100.0.%
....Waited............................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------
..Total.ULC.Semaphore.Req..........2175.4........1542.9.....1305262

..Log.Semaphore.Requests
....Granted.........................225.0.........159.6......135023......99.9.%
....Waited............................0.3...........0.2.........151.......0.1.%
..-------------------------..------------..------------..----------
..Total.Log.Semaphore.Req...........225.3.........159.8......135174

..Transaction.Log.Writes............120.1..........85.2.......72049.......n/a
..Transaction.Log.Alloc.............187.6.........133.0......112554.......n/a
..Avg.#.Writes.per.Log.Page...........n/a...........n/a.....0.64013.......n/a

..Tuning.Recommendations.for.Transaction.Management
..-------------------------------------------------
..-.Consider.increasing.the.'user.log.cache.size'
....configuration.parameter.

===============================================================================

Index.Management
----------------

..Nonclustered.Maintenance........per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Ins/Upd.Requiring.Maint...........0.2...........0.1.........102.......n/a
......#.of.NC.Ndx.Maint...............0.2...........0.1.........102.......n/a
......Avg.NC.Ndx.Maint./.Op...........n/a...........n/a.....1.00000.......n/a

....Deletes.Requiring.Maint...........0.2...........0.1..........98.......n/a
......#.of.NC.Ndx.Maint...............0.2...........0.1..........98.......n/a
......Avg.NC.Ndx.Maint./.Op...........n/a...........n/a.....1.00000.......n/a

....RID.Upd.from.Clust.Split..........0.0...........0.0...........0.......n/a
......#.of.NC.Ndx.Maint...............0.0...........0.0...........0.......n/a

....Upd/Del.DOL.Req.Maint.............0.1...........0.1..........83.......n/a
......#.of.DOL.Ndx.Maint..............0.1...........0.1..........83.......n/a
......Avg.DOL.Ndx.Maint./.Op..........n/a...........n/a.....1.00000.......n/a

..Page.Splits.........................0.0...........0.0...........0.......n/a

..Page.Shrinks........................0.0...........0.0...........0.......n/a

..Index.Scans.....................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Ascending.Scans.................866.1.........614.3......519680......99.4.%
....DOL.Ascending.Scans...............4.8...........3.4........2895.......0.6.%
....Descending.Scans..................0.3...........0.2.........195.......0.0.%
....DOL.Descending.Scans..............0.0...........0.0...........0.......0.0.%
.............................------------..------------..----------
....Total.Scans.....................871.3.........617.9......522770

===============================================================================

Metadata.Cache.Management
-------------------------

..Metadata.Cache.Summary.........per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------

..Open.Object.Usage
....Active............................n/a...........n/a.........197.......n/a
....Max.Ever.Used.Since.Boot..........n/a...........n/a.........197.......n/a
....Free..............................n/a...........n/a.........803.......n/a
....Reuse.Requests
......Succeeded.......................n/a...........n/a...........0.......n/a
......Failed..........................n/a...........n/a...........0.......n/a

..Open.Index.Usage
....Active............................n/a...........n/a.........313.......n/a
....Max.Ever.Used.Since.Boot..........n/a...........n/a.........313.......n/a
....Free..............................n/a...........n/a.........187.......n/a
....Reuse.Requests
......Succeeded.......................n/a...........n/a...........0.......n/a
......Failed..........................n/a...........n/a...........0.......n/a

..Open.Database.Usage
....Active............................n/a...........n/a...........7.......n/a
....Max.Ever.Used.Since.Boot..........n/a...........n/a...........7.......n/a
....Free..............................n/a...........n/a...........5.......n/a
....Reuse.Requests
......Succeeded.......................n/a...........n/a...........0.......n/a
......Failed..........................n/a...........n/a...........0.......n/a

..Object.Manager.Spinlock.Contention..n/a...........n/a.........n/a.......0.0.%

..Object.Spinlock.Contention..........n/a...........n/a.........n/a.......0.0.%

..Index.Spinlock.Contention...........n/a...........n/a.........n/a.......0.0.%

..Hash.Spinlock.Contention............n/a...........n/a.........n/a.......0.0.%

===============================================================================

Lock.Management
---------------

..Lock.Summary....................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.Lock.Requests..............4979.2........3531.4.....2987547.......n/a
..Avg.Lock.Contention.................0.0...........0.0...........8.......0.0.%
..Deadlock.Percentage.................0.0...........0.0...........0.......0.0.%

..Lock.Detail.....................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------

..Table.Lock.Hashtable
....Lookups..........................15.4..........10.9........9232.......n/a
....Avg.Chain.Length..................n/a...........n/a.....0.04528.......n/a
....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.%

..Exclusive.Table
....Granted...........................3.0...........2.1........1810......99.9.%
....Waited............................0.0...........0.0...........2.......0.1.%
..-------------------------..------------..------------..----------..----------
..Total.EX-Table.Requests.............3.0...........2.1........1812.......0.1.%

..Shared.Table
....Granted...........................0.4...........0.3.........263.....100.0.%
....Waited............................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------..----------
..Total.SH-Table.Requests.............0.4...........0.3.........263.......0.0.%

..Exclusive.Intent
....Granted...........................0.9...........0.6.........538......99.8.%
....Waited............................0.0...........0.0...........1.......0.2.%
..-------------------------..------------..------------..----------..----------
..Total.EX-Intent.Requests............0.9...........0.6.........539.......0.0.%

..Shared.Intent
....Granted..........................10.7...........7.6........6395.....100.0.%
....Waited............................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------..----------
..Total.SH-Intent.Requests...........10.7...........7.6........6395.......0.2.%

..Page.&.Row.Lock.HashTable
....Lookups........................3273.8........2321.8.....1964271.......n/a
....Avg.Chain.Length..................n/a...........n/a.....0.00021.......n/a
....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.%

..Exclusive.Page
....Granted...........................1.5...........1.1.........898......99.9.%
....Waited............................0.0...........0.0...........1.......0.1.%
..-------------------------..------------..------------..----------..----------
..Total.EX-Page.Requests..............1.5...........1.1.........899.......0.0.%

..Update.Page
....Granted...........................1.1...........0.8.........677.....100.0.%
....Waited............................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------..----------
..Total.UP-Page.Requests..............1.1...........0.8.........677.......0.0.%

..Shared.Page
....Granted........................3197.8........2268.0.....1918691.....100.0.%
....Waited............................0.0...........0.0...........4.......0.0.%
..-------------------------..------------..------------..----------..----------
..Total.SH-Page.Requests...........3197.8........2268.0.....1918695......64.2.%


..Exclusive.Row
....Granted...........................0.3...........0.2.........194.....100.0.%
....Waited............................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------..----------
..Total.EX-Row.Requests...............0.3...........0.2.........194.......0.0.%

..Update.Row
....Granted...........................0.1...........0.1..........83.....100.0.%
....Waited............................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------..----------
..Total.UP-Row.Requests...............0.1...........0.1..........83.......0.0.%

..Shared.Row
....Granted..........................65.3..........46.3.......39154.....100.0.%
....Waited............................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------..----------
..Total.SH-Row.Requests..............65.3..........46.3.......39154.......1.3.%


..Next-Key
....Total.Next-Key.Requests...........0.0...........0.0...........0.......n/a

..Address.Lock.Hashtable
....Lookups........................1698.1........1204.3.....1018837.......n/a
....Avg.Chain.Length..................n/a...........n/a.....0.00004.......n/a
....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.%

..Exclusive.Address
....Granted...........................0.6...........0.4.........335.....100.0.%
....Waited............................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------..----------
..Total.EX-Address.Requests...........0.6...........0.4.........335.......0.0.%

..Shared.Address
....Granted........................1697.5........1203.9.....1018501.....100.0.%
....Waited............................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------..----------
..Total.SH-Address.Requests........1697.5........1203.9.....1018501......34.1.%


..Last.Page.Locks.on.Heaps
....Granted.........................188.0.........133.3......112794.....100.0.%
....Waited............................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------..----------
..Total.Last.Pg.Locks...............188.0.........133.3......112794.....100.0.%


..Deadlocks.by.Lock.Type..........per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.Deadlocks.....................0.0...........0.0...........0.......n/a


..Deadlock.Detection
....Deadlock.Searches.................0.0...........0.0...........4.......n/a
....Searches.Skipped..................0.0...........0.0...........0.......0.0.%
....Avg.Deadlocks.per.Search..........n/a...........n/a.....0.00000.......n/a


..Lock.Promotions
....Total.Lock.Promotions.............0.0...........0.0...........0.......n/a


..Lock.Timeouts.by.Lock.Type......per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.Timeouts......................0.0...........0.0...........0.......n/a

..Tuning.Recommendations.for.Lock.Management
..------------------------------------------
..-.Consider.increasing.the.'deadlock.checking.period'.parameter
....by.50.ms.


===============================================================================

Data.Cache.Management
---------------------

..Cache.Statistics.Summary.(All.Caches)
..-------------------------------------
..................................per.sec......per.xact.......count..%.of.total
.............................------------..------------..----------..----------

....Cache.Search.Summary
......Total.Cache.Hits.............5392.9........3824.7.....3235735......95.9.%
......Total.Cache.Misses............228.7.........162.2......137243.......4.1.%
..-------------------------..------------..------------..----------
....Total.Cache.Searches...........5621.6........3987.0.....3372978

....Cache.Turnover
......Buffers.Grabbed................17.6..........12.5.......10547.......n/a
......Buffers.Grabbed.Dirty...........0.0...........0.0...........0.......0.0.%

....Cache.Strategy.Summary
......Cached.(LRU).Buffers.........5475.8........3883.5.....3285466.....100.0.%
......Discarded.(MRU).Buffers.........0.0...........0.0...........0.......0.0.%

....Large.I/O.Usage
......Large.I/Os.Performed............0.4...........0.3.........256.....100.0.%

......Large.I/Os.Denied.due.to
......Pool.<.Prefetch.Size............0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------
....Total.Large.I/O.Requests..........0.4...........0.3.........256

....Large.I/O.Effectiveness
......Pages.by.Lrg.I/O.Cached.........3.4...........2.4........2048.......n/a
......Pages.by.Lrg.I/O.Used...........0.0...........0.0...........0.......0.0.%

....Asynchronous.Prefetch.Activity
......APFs.Issued.....................8.1...........5.7........4857......11.0.%
......APFs.Denied.Due.To
........APF.I/O.Overloads.............0.0...........0.0...........0.......0.0.%
........APF.Limit.Overloads...........0.0...........0.0...........0.......0.0.%
........APF.Reused.Overloads..........0.0...........0.0...........0.......0.0.%
......APF.Buffers.Found.in.Cache
........With.Spinlock.Held............0.0...........0.0...........0.......0.0.%
........W/o.Spinlock.Held............65.5..........46.5.......39325......89.0.%
..-------------------------..------------..------------..----------
....Total.APFs.Requested.............73.6..........52.2.......44182

....Other.Asynchronous.Prefetch.Statistics
......APFs.Used.......................7.7...........5.5........4642.......n/a
......APF.Waits.for.I/O...............5.8...........4.1........3453.......n/a
......APF.Discards....................0.0...........0.0...........0.......n/a

....Dirty.Read.Behavior
......Page.Requests...................0.0...........0.0...........0.......n/a

-------------------------------------------------------------------------------
..Cache:.default.data.cache
..................................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.%

....Utilization.......................n/a...........n/a.........n/a......76.4.%

....Cache.Searches
......Cache.Hits...................4280.4........3035.8.....2568251......99.6.%
.........Found.in.Wash................5.3...........3.8........3199.......0.1.%
......Cache.Misses...................16.4..........11.6........9811.......0.4.%
..-------------------------..------------..------------..----------
....Total.Cache.Searches...........4296.8........3047.4.....2578062

....Pool.Turnover
......2..Kb.Pool
..........LRU.Buffer.Grab............16.3..........11.6........9784.....100.0.%
............Grabbed.Dirty.............0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------
....Total.Cache.Turnover.............16.3..........11.6........9784

....Buffer.Wash.Behavior
......Statistics.Not.Available.-.No.Buffers.Entered.Wash.Section.Yet

....Cache.Strategy
......Cached.(LRU).Buffers.........4294.4........3045.7.....2576642.....100.0.%
......Discarded.(MRU).Buffers.........0.0...........0.0...........0.......0.0.%

....Large.I/O.Usage
......Total.Large.I/O.Requests........0.0...........0.0...........0.......n/a

....Large.I/O.Detail
......No.Large.Pool(s).In.This.Cache

....Dirty.Read.Behavior
.......Page.Requests...............0.0...........0.0...........0.......n/a

....Tuning.Recommendations.for.Data.cache.:.default.data.cache
....-------------------------------------
....-.Consider.using.'relaxed.LRU.replacement.policy'
......for.this.cache.

....-.Consider.adding.a.large.I/O.pool.for.this.cache.

-------------------------------------------------------------------------------
..Cache:.tempdb_cache
..................................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.%

....Utilization.......................n/a...........n/a.........n/a......23.6.%

....Cache.Searches
......Cache.Hits...................1112.5.........789.0......667484......84.0.%
.........Found.in.Wash...............12.1...........8.6........7258.......1.1.%
......Cache.Misses..................212.4.........150.6......127432......16.0.%
..-------------------------..------------..------------..----------
....Total.Cache.Searches...........1324.9.........939.6......794916

....Pool.Turnover
......2..Kb.Pool
..........LRU.Buffer.Grab.............0.8...........0.6.........507......66.4.%
............Grabbed.Dirty.............0.0...........0.0...........0.......0.0.%
......16.Kb.Pool
..........LRU.Buffer.Grab.............0.4...........0.3.........256......33.6.%
............Grabbed.Dirty.............0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------
....Total.Cache.Turnover..............1.3...........0.9.........763

....Buffer.Wash.Behavior
......Statistics.Not.Available.-.No.Buffers.Entered.Wash.Section.Yet

....Cache.Strategy
......Cached.(LRU).Buffers.........1181.4.........837.9......708824.....100.0.%
......Discarded.(MRU).Buffers.........0.0...........0.0...........0.......0.0.%

....Large.I/O.Usage
......Large.I/Os.Performed............0.4...........0.3.........256.....100.0.%

......Large.I/Os.Denied.due.to
......Pool.<.Prefetch.Size............0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------
....Total.Large.I/O.Requests..........0.4...........0.3.........256

....Large.I/O.Detail
.....16..Kb.Pool
........Pages.Cached..................3.4...........2.4........2048.......n/a
........Pages.Used....................0.0...........0.0...........0.......0.0.%

....Dirty.Read.Behavior
.......Page.Requests...............0.0...........0.0...........0.......n/a

===============================================================================

Procedure.Cache.Management........per.sec......per.xact.......count..%.of.total
---------------------------..------------..------------..----------..----------
..Procedure.Requests..................0.6...........0.4.........336.......n/a
..Procedure.Reads.from.Disk...........0.1...........0.1..........80......23.8.%
..Procedure.Writes.to.Disk............0.0...........0.0..........17.......5.1.%
..Procedure.Removals..................0.1...........0.1..........87.......n/a
..Procedure.Recompilations............0.0...........0.0...........4.......n/a

..Recompilations.Requests:
....Execution.Phase...................0.0...........0.0...........4.....100.0.%
....Compilation.Phase.................0.0...........0.0...........0.......0.0.%
....Execute.Cursor.Execution..........0.0...........0.0...........0.......0.0.%
....Redefinition.Phase................0.0...........0.0...........0.......0.0.%

..Recompilation.Reasons:
....Table.Missing.....................0.0...........0.0...........0.......n/a
....Temporary.Table.Missing...........0.0...........0.0...........0.......n/a
....Schema.Change.....................0.0...........0.0...........4.......n/a
....Index.Change......................0.0...........0.0...........0.......n/a
....Isolation.Level.Change............0.0...........0.0...........0.......n/a
....Permissions.Change................0.0...........0.0...........0.......n/a
....Cursor.Permissions.Change.........0.0...........0.0...........0.......n/a

..Tuning.Recommendations.for.Procedure.cache.management
..-----------------------------------------------------
..-.Consider.increasing.the.'procedure.cache.size'
....configuration.parameter.


===============================================================================

Memory.Management.................per.sec......per.xact.......count..%.of.total
---------------------------..------------..------------..----------..----------
..Pages.Allocated.....................0.5...........0.4.........298.......n/a
..Pages.Released......................0.5...........0.4.........297.......n/a

===============================================================================

Recovery.Management
-------------------

..Checkpoints.....................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....#.of.Normal.Checkpoints...........0.0...........0.0...........3.....100.0.%
....#.of.Free.Checkpoints.............0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------
..Total.Checkpoints...................0.0...........0.0...........3

..Avg.Time.per.Normal.Chkpt.......0.00000.seconds

===============================================================================

Disk.I/O.Management
-------------------

..Max.Outstanding.I/Os............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Server............................n/a...........n/a.........111.......n/a
....Engine.0..........................n/a...........n/a..........49.......n/a
....Engine.1..........................n/a...........n/a.........111.......n/a


..I/Os.Delayed.by
....Disk.I/O.Structures...............n/a...........n/a...........0.......n/a
....Server.Config.Limit...............n/a...........n/a...........0.......n/a
....Engine.Config.Limit...............n/a...........n/a...........0.......n/a
....Operating.System.Limit............n/a...........n/a...........0.......n/a


..Total.Requested.Disk.I/Os.........143.9.........102.0.......86327

..Completed.Disk.I/O's
....Engine.0........................125.5..........89.0.......75272......87.2.%
....Engine.1.........................18.4..........13.1.......11054......12.8.%
..-------------------------..------------..------------..----------
..Total.Completed.I/Os..............143.9.........102.0.......86326


..Device.Activity.Detail
..----------------------

..Device:
....C:\sybase\data\akv_2003.dat
....akv_2003......................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.I/Os..........................0.0...........0.0...........0.......n/a
..-------------------------..------------..------------..----------..----------
..Total.I/Os..........................0.0...........0.0...........0.......0.0.%


..-----------------------------------------------------------------------------

..Device:
....C:\sybase\data\akv_2003.log
....akv_2003_log..................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Reads
......APF.............................0.0...........0.0...........0.......0.0.%
......Non-APF.........................0.0...........0.0...........1.....100.0.%
....Writes............................0.0...........0.0...........0.......0.0.%
..-------------------------..------------..------------..----------..----------
..Total.I/Os..........................0.0...........0.0...........1.......0.0.%


..-----------------------------------------------------------------------------

..Device:
....C:\sybase\data\akv_2004.dat
....akv_2004......................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Reads
......APF.............................8.1...........5.7........4857......50.0.%
......Non-APF.........................8.1...........5.7........4832......49.8.%
....Writes............................0.0...........0.0..........17.......0.2.%
..-------------------------..------------..------------..----------..----------
..Total.I/Os.........................16.2..........11.5........9706......11.2.%


..-----------------------------------------------------------------------------

..Device:
....C:\sybase\data\akv_2004.log
....akv_2004_log..................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Reads
......APF.............................0.0...........0.0...........0.......0.0.%
......Non-APF.........................0.0...........0.0...........5......23.8.%
....Writes............................0.0...........0.0..........16......76.2.%
..-------------------------..------------..------------..----------..----------
..Total.I/Os..........................0.0...........0.0..........21.......0.0.%


..-----------------------------------------------------------------------------

..Device:
....C:\sybase\data\temp_db.dat
....temp_db.......................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Reads
......APF.............................0.0...........0.0...........0.......0.0.%
......Non-APF.........................0.1...........0.0..........33.......1.0.%
....Writes............................5.5...........3.9........3272......99.0.%
..-------------------------..------------..------------..----------..----------
..Total.I/Os..........................5.5...........3.9........3305.......3.8.%


..-----------------------------------------------------------------------------

..Device:
....C:\sybase\data\temp_db.log
....temp_db_log...................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Reads
......APF.............................0.0...........0.0...........0.......0.0.%
......Non-APF.........................0.7...........0.5.........439.......0.6.%
....Writes..........................119.6..........84.8.......71732......99.4.%
..-------------------------..------------..------------..----------..----------
..Total.I/Os........................120.3..........85.3.......72171......83.6.%


..-----------------------------------------------------------------------------

..Device:
....C:\sybase\data\temp_db_log.log
....tempdb_lg.....................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.I/Os..........................0.0...........0.0...........0.......n/a
..-------------------------..------------..------------..----------..----------
..Total.I/Os..........................0.0...........0.0...........0.......0.0.%


..-----------------------------------------------------------------------------

..Device:
....C:\sybase\data\test_db.dat
....test_db.......................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.I/Os..........................0.0...........0.0...........0.......n/a
..-------------------------..------------..------------..----------..----------
..Total.I/Os..........................0.0...........0.0...........0.......0.0.%


..-----------------------------------------------------------------------------

..Device:
....C:\sybase\data\test_db.log
....test_log......................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
..Total.I/Os..........................0.0...........0.0...........0.......n/a
..-------------------------..------------..------------..----------..----------
..Total.I/Os..........................0.0...........0.0...........0.......0.0.%


..-----------------------------------------------------------------------------

..Device:
....c:\sybase\data\master.dat
....master........................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Reads
......APF.............................0.0...........0.0...........0.......0.0.%
......Non-APF.........................0.1...........0.1..........51.......4.9.%
....Writes............................1.7...........1.2.........991......95.1.%
..-------------------------..------------..------------..----------..----------
..Total.I/Os..........................1.7...........1.2........1042.......1.2.%


..-----------------------------------------------------------------------------

..Device:
....c:\sybase\data\sybprocs.dat
....sysprocsdev...................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Reads
......APF.............................0.0...........0.0...........0.......0.0.%
......Non-APF.........................0.1...........0.1..........73......90.1.%
....Writes............................0.0...........0.0...........8.......9.9.%
..-------------------------..------------..------------..----------..----------
..Total.I/Os..........................0.1...........0.1..........81.......0.1.%


..-----------------------------------------------------------------------------



===============================================================================

Network.I/O.Management
----------------------

..Total.Network.I/O.Requests.........16.1..........11.4........9672.......n/a
....Network.I/Os.Delayed..............0.0...........0.0...........0.......0.0.%


..Total.TDS.Packets.Received......per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Engine.0..........................0.2...........0.1.........110.......9.6.%
....Engine.1..........................1.7...........1.2........1040......90.4.%
..-------------------------..------------..------------..----------
..Total.TDS.Packets.Rec'd.............1.9...........1.4........1150


..Total.Bytes.Received............per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Engine.0.........................39.2..........27.8.......23527......31.3.%
....Engine.1.........................86.0..........61.0.......51620......68.7.%
..-------------------------..------------..------------..----------
..Total.Bytes.Rec'd.................125.2..........88.8.......75147


...Avg.Bytes.Rec'd.per.Packet..........n/a...........n/a..........65.......n/a

..-----------------------------------------------------------------------------

..Total.TDS.Packets.Sent..........per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Engine.0..........................1.0...........0.7.........600.......7.0.%
....Engine.1.........................13.2...........9.4........7922......93.0.%
..-------------------------..------------..------------..----------
..Total.TDS.Packets.Sent.............14.2..........10.1........8522


..Total.Bytes.Sent................per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....Engine.0.......................1094.6.........776.3......656769......16.7.%
....Engine.1.......................5443.4........3860.6.....3266060......83.3.%
..-------------------------..------------..------------..----------
..Total.Bytes.Sent.................6538.0........4636.9.....3922829


..Avg.Bytes.Sent.per.Packet...........n/a...........n/a.........460.......n/a

===============================.End.of.Report.=================================
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32520502
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp_configure.'max.online.engines'

Parameter.Name.....Default.....Memory.Used.....Config.Value.....Run.Value.....Unit.....Type
max.online.engines.......1........147...............2...............2.....number.......static

На.такую.установку.выдает.ошибку
sp_configure.'max.online.engines',4
go

Parameter.Name.....Default.....Memory.Used.....Config.Value.....Run.Value.....Unit.....Type
max.online.engines...........................1.............147...............4...............2.....number...................static
Configuration.option.changed..Since.the.option.is.static,.Adaptive.Server.must.be.rebooted.in.order.for.the.change.to.take.effect...............................
Changing.the.value.of.'max.online.engines'.to.'4'.increases.the.amount.of.memory.ASE.uses.by.166.K.


sp_configure.'min.online.engines',3
go

2.....763..........No.matching.configuration.options...Here.is.a.listing.of.groups:
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32520591
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Индексы не пробовал на #f_deal_temp создавать?

Нужно отлаживаться на процедуре, на это нужно время, а на все
подряд ставить индексы нет смысла. Но вечером этим займусь.

И как включить и где посмотреть HyperTreading?

После всего проделанного, сервер работать стал медленнее.

Я вернул sp_configure 'max online engines',2
перезапустил, но ситуация не улучшилась
Вчера сложный запрос работал 35 сикунд, сейчас более 2х минут :(

Лучшее враг хорошего....
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32520770
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, просьба - не могли бы Вы слишком большие скрипты кидать в txt-файлики и просто присоединять их к сообщению ? Мне кажется так будет удобней для прочтения топика, а то умучаешься листать и искать между скриптами сообщения авторов :)

P.S. Надо же морально поддержать Judge, а то он мучался мучался, сервис присоединения файлов делал, а мы все по старинке кидаем рулоны скриптов прямо в сообщения :)
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32521191
Mladov Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
Нужно отлаживаться на процедуре, на это нужно время, а на все 
подряд ставить индексы нет смысла. Но вечером этим займусь.
Обязательно. Да и вообще ХП посмотри на предмет сокращения числа инсертов/апдейтов...

Код: plaintext
И как включить и где посмотреть HyperTreading?
В биосе. Но у тебя 2003, поэтому не очень интересно. Был бы 2000 - это да - включаешь HT и в виндах видишь 4 проца - красота... 8))))

Код: plaintext
1.
2.
3.
4.
5.
6.
После всего проделанного, сервер работать стал медленнее.

Я вернул sp_configure 'max online engines', 2 
перезапустил, но ситуация не улучшилась
Вчера сложный запрос работал  35  сикунд, сейчас более 2х минут :(

Лучшее враг хорошего....
1. Убей 16К-пул.(сконфигури=0)
2. Перезагрузи ASE
3. Создай 4К-пул Мегов на 200
4. user log cache size увеличь минимум до 8192, а еще лучше до 12000
Затем опять посмотри sp_sysmon, секцию

Transaction.Management
----------------------

..ULC.Flushes.to.Xact.Log.........per.sec......per.xact.......count..%.of.total
..-------------------------..------------..------------..----------..----------
....by.Full.ULC.....................166.4.........118.0.......99813......87.9.%
Должно быть меньше!!!

..Max.ULC.Size.During.Sample..........n/a...........n/a........2048.......n/a
Посмотри, какое значение будет. если будет равно установленному значению - увеличивай еще.

5. deadlock checking period чему равен? Поставь 50000
6. Procedure cache percent чему равен?

Да и вообще, если на сервере кроме ASE никого нету, то дай ASE побольше памяти!
Если хочешь - оставь e-mail (или ICQ), могу сбросить настройки своего сервера... Хоть у меня и 12.0, но различий немного и они описаны в документации...
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32521440
_Sania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делать отдельные девайсы для лога и default сегментов - стандартная рекомендация, в том числе и для tempdb, у меня например и system вынесен на отдельный девайс.

sp_addthreshold
1. Размер указывается в 2к страницах
2. Можно указать процедуру либо в текущей базе, либо sybsytemprocs (если имя начинается с sp_).
т.е. для 200Мб
sp_addthreshold tempdb, logsegment, 102400, sp_prc_dumptransaction

Увеличить User Log Cashe Size - хороший совет, sysmon так и написал
..-.Consider.increasing.the.'user.log.cache.size'
....configuration.parameter.

Процедурный кэш, аналогично
..-.Consider.increasing.the.'procedure.cache.size'
....configuration.parameter.

По поводу удаления 16к, обычно его очень любят операции типа select into и т.д. Из-за него может тормозить только в одном случае - 16к создан слишком маленьким, сервер начинает его активно использовать, а места не хватает - начинается ожидание освобождения пространства в кэше. 4кб кэш тоже можно создавать, его использует лог, но в tempdb лучше использовать нелоггируемые операции.

max online engines не должен быть больше числа процессоров в машине (или виртуальных процессоров в машине с HT).

Дополнительные рекомендации из sysmon-а

..-.Consider.decreasing.the.'runnable.process.search.count'
....configuration.parameter.if.you.require.the.CPU's.on
....the.machine.to.be.used.for.other.applications.
А что на машине что-то еще крутится? Обычно это говорит о конкуренции за процессор. В общем стоит вернуться к default.

..-.Consider.increasing.the.'deadlock.checking.period'.parameter
....by.50.ms.
Дедлоков действительно нет, а т.к. user-ов мало, смело можно увеличивать.

....Tuning.Recommendations.for.Data.cache.:.default.data.cache
....-------------------------------------
....-.Consider.using.'relaxed.LRU.replacement.policy'
......for.this.cache.
В принципе можно, но на одном выводе сисмона такое решение принимать не стоит, вобще лучше сделать пару отдельных кэше с такой политикой для наиболее активно используемых таблиц (правда нужно, чтобы кэш покрывал хотя бы на 80% таблицу и индексы).

....-.Consider.adding.a.large.I/O.pool.for.this.cache.
Это общая рекомедация, что бы советовать что-то надо знать какие операции в основном используются, можно добавить 4кб пул для лога или сделать для него отдельный кэш.
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32521453
_Sania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> user log cache size увеличь минимум до 8192, а еще лучше до 12000
только не 12000, а 12288, должно быть кратно 4к.
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32521475
Mladov Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 _Sania
Код: plaintext
1.
2.
По поводу удаления 16к, обычно его очень любят операции типа select into и т.д. Из-за него может тормозить только в одном
 случае - 16к создан слишком маленьким, сервер начинает его активно использовать, а места не хватает - начинается ожидание
 освобождения пространства в кэше. 
Ну, не знаю, не знаю... Я в свое время поимел немало проблем из-за 16К-пула...
Причем баловался размерами до 300 Мб... Проявления одни и те же - активное шуршание винтами и резкое падение производительности...
В чем грабли, так и не понял...
Код: plaintext
4кб кэш тоже можно создавать, его использует лог, но в tempdb лучше использовать нелоггируемые операции.
Посмотри на рез-т sp_sysmon - по-моему, лог пишется активно...
ИМХО, 4к-пул - форевер... 8)

Код: plaintext
только не  12000 , а  12288 , должно быть кратно 4к.
Считать было лень уже... 8))))
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32521487
Mladov Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя в моих скриптах перед reorg rebuild'ом всегда создается 16К-пул. 8)))
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32521494
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Убей 16К-пул.
Убил, стало лучше. :)

Отлаживался на процедуре:
60% времени занимает операция - DROP TABLE #f_deal_temp
все UPDATE всместе взятые не занимают этого времени !


№.... дата время...............время в миллисекундах....операция в процедуре ask_f_deal
1......18.05.2004 9:22:15.013............[NULL] - начало работы процедуры
2......18.05.2004 9:22:15.043............30....... - CREATE TABLE #f_deal_temp
3......18.05.2004 9:22:15.140............96....... - INSERT INTO #f_deal_temp
4......18.05.2004 9:22:52.043............36903.. - все UPDADTE #f_deal_temp
5......18.05.2004 9:22:57.467............5423... - SELECT * FROM #f_deal_temp
6......18.05.2004 9:23:47.060............49593.. - DROP TABLE #f_deal_temp

Я этого не понимаю.

> 5. deadlock checking period чему равен? Поставь 50000
у меня равен 500 - сейчас изменю.

>6. Procedure cache percent чему равен?
у меня равен 32000

E-mail budget открыл
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32521611
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Установил:
user log cache size - 12288
deadlock checking period - 50000
Перезапустился:
На один и тот же запрос картина поменялась:

№.... дата время...............время в миллисекундах....операция в процедуре ask_f_deal
1...........18.05.2004 10:38:40.950.....[NULL] - начало работы процедуры
2...........18.05.2004 10:38:40.967.....16....... - CREATE TABLE #f_deal_temp
3...........18.05.2004 10:38:41.390.....423....... - INSERT INTO #f_deal_temp
4...........18.05.2004 10:40:06.717.....85326.. - все UPDADTE #f_deal_temp
5...........18.05.2004 10:40:10.437.....3720... - SELECT * FROM #f_deal_temp
6...........18.05.2004 10:40:14.500.....4063.. - DROP TABLE #f_deal_temp

Вопос:
А можно ли как - нибудь уменьшить приоритет вызываемой процедуры
перед другими, если я знаю, что этот пользователь в данный момент
запросил большое количество данных и может всех подвесить?
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32521689
_Sania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
exec sp_setpsexe @@spid, 'priority', 'LOW'

но пользоваться стоит очень аккуратно.
На sybase.com была документация на русском.
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32521699
_Sania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понижается уровень всего текущего процесса, а если пользователь не sa, то повысить обратно он его не сможет.
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32521880
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А жизнь то налаживается!

Код: plaintext
1.
2.
3.
4.
5.
6.
Увеличить User Log Cashe Size - хороший совет, sysmon так и написал
..-.Consider.increasing.the.'user.log.cache.size'
....configuration.parameter.

Процедурный кэш, аналогично
..-.Consider.increasing.the.'procedure.cache.size'
....configuration.parameter.

Увеличил, спасибо за настойчивые рекомендации.
user log cache size - 12288
Пооменял 'procedure.cache.size' c 32000 на 64000

!! блокировок стало меньше, очередь по tempdb появляется реже
но если постараться все равно самая долгая операция
при совместном доступе - DROP TABLE #f_deal_temp
все остальное (UPDATE INSERT) проходит очень быстро.
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32522009
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу всех поблагодарить за участие в этом обсуждение
Действительно сервер стал работать лучше а главное надежнее.

Большое всем спасибо.
И на последок.

sp_sysmon '00:10:00'
go

результат в присоедененном файле
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32523743
Mladov Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На здоровье! 8)))
Маленький совет - В рез-тах sp_sysmon видищь строчки

. Tuning Recommendations for <...>
. ----------------------------------------------
. - ..................................
... configuration parameter.

Открываешь Perfomance and Tuning guide и ищешь, что там написано про этот параметр. Смотришь, чему он равен у тебя, и смотришь, что рекомендуют.

После этого !три! (а лучше четыре) раза думаешь и вечером (когда юзеров нету) изменяешь параметр. Смотришь к чему все привело (запускаешь тестовый пример), хотя бы на первый взгляд.

И будет тебе щастье! 8)
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32800790
bantik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу текста процедуры. Замечания сразу

1) Create # table такого размера действительно может лочить серверную таблицу sysobjects. Кроме этого бывает что использование временной таблицы повлечет перекомпиляцию процедуры.

Как вариант - сделай таблицу постоянной, а чтобы пользователи не дрались с данными - введи столбец SPID , заполненный @@spid и во всех запросах добавь where SPID = @@spid

2) На # таблице нет индекса - вообще бред. Практика показала что # таблицы без явного unique индекса неправильно обрабатываются в FETCH, @@rowcount , особенно под нагрузкой.

3) Не увидел мыслей про FORCEPLAN ON и нет описания ключей таблиц fd_sum и пр. SELECT DISTINCT в таком режиме будет загружать CPU сильнее.

4) Есть смешные места про LIKE "%sssss%" - это чистый скан и их в нормальной системе быть не должно в принципе. Перепроектируй структуру (как я понял была попытка реализовать субконто в потрфеле).

5) Мало групповых операций - сплошные навигационные хождения по таблицам - SQL в таком режиме не особо эффективен.

p.s. По ощущению, если выполнить мои рекомендации - можно ускорить этот код минимум раз в 100 :-))

Удачи !
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32803360
serg08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бороться с блокировками это всё равно, что бороться со светофорами для того чтобы быстрее ездить!!!!
Их(блокировки) нужно уважать.

Начать нужно с этого!!!
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32803390
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо сказано !
А что этот старый топик наверх вытащили, еще проблемы есть, или просто кто-то решил свое слово вставить спустя пол-года ?
...
Рейтинг: 0 / 0
Как бороться с блокировками в ASE 12.5.0.3
    #32803723
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничто так не улучшает производительность, как перепроектирование...)))
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как бороться с блокировками в ASE 12.5.0.3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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