|
Процедура t-sql
|
|||
---|---|---|---|
#18+
День добрый! Разбирал старый код, часто встречается конструкция типа Код: sql 1.
Подскажите плз, что означает выражение внутри функции trim? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2016, 13:38 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
|| - текстовая конкатенация. конкатенация с пустой строкой - полу-явная конвертация значения в текст из любого типа который может быть конвертирован в текст. set @var - то, за что нужно бить больно по рукам. set - команда WatcomSQL, @ - необходимый символ для переменных из TransactSQL и опциональный для WatcomSQL. Точка с запятой в конце строки тоже из WatcomSQL. Вывод - у ТС одна из старых версий ASA с которой работал человек привычный к Transact'у. Но на самом деле он работает с WatcomSQL и соврал в заголовке темы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2016, 18:38 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
White Owl Но на самом деле он работает с WatcomSQL и соврал в заголовке темы. Стоит ASA 9.0.2.3951. В настройках стоит Transact-SQL Мне дали разбирать АСУП, написанную до 2010 года, так как она начала жёстко лагать. Я думаю, что из-за процедур обработки данных, которые зачем-то сделаны в 32-разрядной версии ASA, а не в языках, которые больше для этого предназначены (здесь используется PHP). Думаю, здесь лучше выложить всю функцию, так как мне не совсем понятно, нафига вообще нужна конвертация значения в текст, если переменные итак объявлены как VARCHAR. Функция во вложениию ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 08:26 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
SooWhite Owl Но на самом деле он работает с WatcomSQL и соврал в заголовке темы. Стоит ASA 9.0.2.3951. В настройках стоит Transact-SQL А в мануале к базе с описанием языка он назван как ASA SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 08:53 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
[quot Soo]White Owl Думаю, здесь лучше выложить всю функцию, так как мне не совсем понятно, нафига вообще нужна конвертация значения в текст, если переменные итак объявлены как VARCHAR. Функция во вложениию Эта конструкция позволяет избавиться от null в переданном параметре ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 09:13 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
[quot pand]Sooпропущено... Эта конструкция позволяет избавиться от null в переданном параметре А IFNULL или ISNULL в этом смысле хуже будут? Мне просто хочется понять логику писавшего ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 09:37 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
[quot Soo]pandпропущено... А IFNULL или ISNULL в этом смысле хуже будут? Мне просто хочется понять логику писавшего White Owl||Вывод - у ТС одна из старых версий ASA с которой работал человек привычный к Transact'у. Но на самом деле он работает с WatcomSQL и соврал в заголовке темы. Думаю что в этом вся логика в этом а еще мне не понятна ваша фраза Soo Я думаю, что из-за процедур обработки данных, которые зачем-то сделаны в 32-разрядной версии ASA если логика написана на SQL то она с легкостью будет работать и на 128-разядной архитектуре ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 10:06 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
pand пропущено... Думаю что в этом вся логика в этом а еще мне не понятна ваша фраза пропущено... если логика написана на SQL то она с легкостью будет работать и на 128-разядной архитектуре Да дело в не в архитектуре как таковой, а в нехватке оперативы. Плюс, большое количество процедур, которые создают временные таблицы и потом их не удаляют, сильно раздули саму базу. В связи с этим у меня и встала задача - перенести логику в PHP, где с мусором в памяти проблем не будет. А для этого нужно понять, чего же хотел автор всего написанного. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 11:29 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
SooДа дело в не в архитектуре как таковой, а в нехватке оперативы. Плюс, большое количество процедур, которые создают временные таблицы и потом их не удаляют, сильно раздули саму базу. В связи с этим у меня и встала задача - перенести логику в PHP, где с мусором в памяти проблем не будет. А для этого нужно понять, чего же хотел автор всего написанного. Если честно, пока не увидел аргументов переноса кода обработки данных на PHP. Кроме наверно если автору так будет легче сопровождать и развивать. Оператива добавляется, если надо ставиться ASA х64. Мусор , лаги и тормоза базы - если и преодолевают переводом обработки данных на PHP, то в последнюю очередь. Для начала можно попробовать другие методы. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 12:08 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
antand, А что, ASA 9 так хорош, что лучше не переносить на PHP? Скажу честно, на РНР мне прогать приятнее ибо он мне знаком больше. Тем более, что тут код в ASA проанализировали как смесь бульдога с носорогом. Этой базой занимаюсь только я и мне её поддерживать ещё долгое время. Я согласен, параметры системы обновляются, но у нас как всегда - да, обновить надо, но на сервера денег нет. Поэтому когда это будет? То же самое программная платформа - её надо покупать. Что касается самой ASA - здесь временные таблицы удаляются только при перезагрузке системы. Так как предприятие работает круглосуточно, остановка базы недопустимо. А РНР освобождает память сразу, это его существенный плюс. Кроме этого, я считаю что программировать в ASA - это костыли. Сам язык РНР гораздо гибче и функциональнее. Плюс, есть фреймворки. К чему привело длительное использование ASA я написал. Исправить утечки памяти довольно сложно, так как в базе порядка 850 различных функций и процедур и их временные таблицы очень сильно переплетаются друг с другом, поэтому, думаю, проще постепенно развязать весь этот клубок и перенести в РНР, там я хотя бы буду знать что к чему. Ну и задокументирую сразу, чтобы потом можно было вспомнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 12:29 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
Sooantand, А что, ASA 9 так хорош, что лучше не переносить на PHP? Если речь идет о работе с базой данный то Да головы на три выше чем PHP и в первую очередь по бістродействию. Sooantand, Скажу честно, на РНР мне прогать приятнее ибо он мне знаком больше. Тем более, что тут код в ASA проанализировали как смесь бульдога с носорогом. Этой базой занимаюсь только я и мне её поддерживать ещё долгое время. Это достаточный аргумент чотбы обеспечить себя работой ( или головняком ) на многие годы . Sooantand, Кроме этого, я считаю что программировать в ASA - это костыли. Сам язык РНР гораздо гибче и функциональнее. Плюс, есть фреймворки. Что-бы делать такие заявления нужно хотябы лет 5 на ней попрограммировать . В противном случае Вы просто "не умеете их готовить". SQL синтаксис у ASA очень даже дружественный . Sooantand, К чему привело длительное использование ASA я написал. Исправить утечки памяти довольно сложно, так как в базе порядка 850 различных функций и процедур и их временные таблицы очень сильно переплетаются друг с другом, поэтому, думаю, проще постепенно развязать весь этот клубок и перенести в РНР, там я хотя бы буду знать что к чему. Ну и задокументирую сразу, чтобы потом можно было вспомнить. Здается мне, все это от того, что вы ее пользуете не правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 13:22 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
Soo, Вы несколько противоречите себе, а вообще, судя по всему человек, создававший базу хорошо знал оракл, отсюда и растут ноги использования t-sql, а не нативного диалекта watcom sql, а аса выбран был за малое потребление этим движком ресурсов. Теперь по поводу процедур обработки, не думаю, что перенос чего-то в php как-то превысит в скорости sql-диалект аса, и тот и другой движок - интерпретаторы, да и временные таблицы в базе в своем большинстве, я думаю, используются от не знания возможностей аса. Вообщем все в ваших руках, с учетом того, что вам ее надлежит поддерживать длительное время, начните с изучения аса, создания бекапов его баз, кстати, когда делали последний раз бекап и как его делали, размер лога сейчас какой? теперь по поводу лагает, это абсалютно не из-за 32-разрядной версии аса, вполне возможно процедуры не убирают за собой мусор, может еще что-то... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 13:51 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
Sergey OrlovSoo, теперь по поводу лагает, это абсалютно не из-за 32-разрядной версии аса, вполне возможно процедуры не убирают за собой мусор, может еще что-то... У меня на компе 4 гига оперативы. ASA в момент съедает 1 гиг и начинает лагать - очевидно, что оперативы ей не хватает. Отсюда вывод проблемы в разрядности. Возможно, в будущем мне удастся увеличить у себя на тачке память, тогда и буду пробовать расширять возможности ASA. Переписывать всё подряд я не собираюсь, только то, что лагает. Согласитесь, когда процедура выполняется 117 сек - это не очень быстро. Притом, что она делает не так уж и много. Теперь про мусор. Временные таблицы создаются таким образом: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
и Код: sql 1. 2. 3. 4. 5. 6. 7.
при этом, первая таблица удаляется, а вторая - нет. Каким образом это можно оптимизировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 14:15 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
Soo, Что Вам мешает оптимизировать в ASA процедуру, которая выполняется 117 сек? Для этого не нужен РНР. Про временные таблицы почитайте документацию. Кто мешает попробовать написать create table #t1 вместо select .... into #t1 Если надо drop table t1 И т.п. Еще подозреваю, что в таком select дело именно в быстродействии выборки, а не временной таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 15:34 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
Soo, А что, ASA 9 так хорош, что лучше не переносить на PHP? Что касается обработки данных в таблицах, которые уже находятся той же базе данных, то это даже сравнивать неприлично. Это как шуруповерт и отвертка. РНР для другого предназначен, у него другие сильные стороны. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 15:45 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
SooСтоит ASA 9.0.2.3951. В настройках стоит Transact-SQLВ каких таких настройках??? ASA автоматически распознает и исполняет команды на двух диалектах. С единственным ограничением что внутри одной хранимой процедуры не должно быть смешений диалектов. Но иметь две процедуры на разных диалектах никто не запрещает. SooМне дали разбирать АСУП, написанную до 2010 года, так как она начала жёстко лагать. Я думаю, что из-за процедур обработки данных, которые зачем-то сделаны в 32-разрядной версии ASA, а не в языках, которые больше для этого предназначены (здесь используется PHP).Зря так думаешь. Если лагает именно СУБД, то смотри размер свободного места под свап, под логи. Памятью управлять полезно. Ну и конечно надо смотреть на индексы их нужность и/или недостаточность. Ни разрядность движка СУБД, ни диалект на котором написаны хранимые процедуры на скорость обработки не влияют никак. SooУ меня на компе 4 гига оперативы. ASA в момент съедает 1 гиг и начинает лагать - очевидно, что оперативы ей не хватает. Отсюда вывод проблемы в разрядности. Возможно, в будущем мне удастся увеличить у себя на тачке память, тогда и буду пробовать расширять возможности ASA.Это не совсем верный вывод. Да, при наличии всего одного гига памяти СУБД делает больше запросов к диску чем при наличии четырех гигов. Ну а если у тебя Винда на 4-х гигах (уверен в этом?) то можно запустить СУБД в AWE режиме и она будет брать столько памяти сколько Винда отдаст. Читай документацию про ключ -cw там есть все инструкции. Ну или действительно бери 64-х битную версию поновее чем девятка, там с пожиранием памяти все намного проще. SooПереписывать всё подряд я не собираюсь, только то, что лагает. Согласитесь, когда процедура выполняется 117 сек - это не очень быстро. Притом, что она делает не так уж и много.117 секунд это мелочи :) Конечно надо стремиться к миллисекундам, но две минуты это не несколько суток... Смотри на индексы в первую очередь. Запусти процедуру через .... не помню как он называется. Поищи в Sybase Central'е у девятой ASA есть профайлер и утилита делающая подсказки по индексам. SooТеперь про мусор. Временные таблицы создаются таким образом: .... при этом, первая таблица удаляется, а вторая - нет. Каким образом это можно оптимизировать?Это ты от необразованности говоришь глупости. Эти два варианта ничем друг от друга по времени жизни таблиц не отличаются вообще и в обоих случаях могут как быть уничтожены вручную через drop table, так и убьются автоматически по окончанию хранимой процедуры. Мусора никакого не остается. Впрочем, надо учитывать что пихая данные во временную таблицу можно эту таблицу раздуть до неприличных размеров и она сожрет все место на диске (посредством свопа конечно). В общем, времянками тоже надо уметь пользоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 19:14 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
SooТеперь про мусор. Временные таблицы создаются таким образом: [при этом, первая таблица удаляется, а вторая - нет. Каким образом это можно оптимизировать? Времянки бывают сессионные, т. е. существуют только внутри сессии, окончилась сессия они и убились, а есть и глобальные, убиваются на перезагрузки, дальше сами разберетесь... Теперь по поводу процедуры на 117 секунд, там надо смотреть очень внимательно, обычно выборка там не использует индексы, или нужных нет, и по каждому чижу сканирует всю таблицу(таблицы), причем иногда используются функции, которые тоже приводят к скану всей таблицы(таблиц) Н у на конец у вас там такие конструкции Код: sql 1.
isnull все-таки логическая функция, такие веши лучше переписать через left join. З.Ы. Все-таки создатель был ораклоид, там очень хороший оптимизатор, плохой запрос/оптимизированный запрос - время исполнения практически одинаково... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2016, 02:50 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
White Owl, Спасибо за подсказку про своп, я перераспределил память и запрос стал выполняться за 3,5 сек. Sergey Orlov, Спасибо за подсказки, я обязательно разберусь с индексами. ASA мне выводит постоянно ошибки типа: Код: sql 1.
или Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 09:28 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
Ещё хотел спросить, если обновить ASA до последней версии, не возникнет проблем совместимости? Например, если PHP обновлять до новых версий, некоторые функции заменяются новыми, некоторые удаляются или модифицируются, в результате чего приходится вносить изменения в код. Такого здесь не возникнет? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 09:43 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
24.10.2016 9:28, Soo пишет: > Спасибо за подсказки, я обязательно разберусь с индексами. ASA мне > выводит постоянно ошибки типа: > > Дублирование индекса * для таблицы * в базе данных * > > или > > Нет уникального индекса или первичного ключа для таблицы * в базе данных * Это не ошибки. Это предупреждения о том, что у разработчика структуры БД руки из того же места, что и ноги . Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 11:03 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
24.10.2016 9:43, Soo пишет: > Ещё хотел спросить, если обновить ASA до последней версии, не возникнет > проблем совместимости? Нужно обязательно всё тестировать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 11:17 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
Sergey OrlovSoo, Вы несколько противоречите себе, а вообще, судя по всему человек, создававший базу хорошо знал оракл, отсюда и растут ноги использования t-sql, а не нативного диалекта watcom sql, а аса выбран был за малое потребление этим движком ресурсов. Теперь по поводу процедур обработки, не думаю, что перенос чего-то в php как-то превысит в скорости sql-диалект аса, и тот и другой движок - интерпретаторы, да и временные таблицы в базе в своем большинстве, я думаю, используются от не знания возможностей аса. Вообщем все в ваших руках, с учетом того, что вам ее надлежит поддерживать длительное время, начните с изучения аса, создания бекапов его баз, кстати, когда делали последний раз бекап и как его делали, размер лога сейчас какой? теперь по поводу лагает, это абсалютно не из-за 32-разрядной версии аса, вполне возможно процедуры не убирают за собой мусор, может еще что-то... Насколько я знаю, бекапы делаются каждый день. Я мучаю один из таких бекапов. Размер лога у него 73 Мб. На боевой версии я сейчас посмотрел лог весит 480 Мб. Разница по времени у этих дампов примерно 8 месяцев. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 11:56 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
SQL Anywhere 16 и 17 не хотят работать с моей базой(( говорят, что я должен rebuild базу. Кто-нибудь знает, как это делается? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 14:05 |
|
Процедура t-sql
|
|||
---|---|---|---|
#18+
SooНасколько я знаю, бекапы делаются каждый день. Я мучаю один из таких бекапов. Размер лога у него 73 Мб. На боевой версии я сейчас посмотрел лог весит 480 Мб. Разница по времени у этих дампов примерно 8 месяцев. А сама база сколько весит? SooSQL Anywhere 16 и 17 не хотят работать с моей базой(( говорят, что я должен rebuild базу. Кто-нибудь знает, как это делается? Все правильно, так и должно быть... В составе аса есть утилита rebuild, для каждой версии своя, общий синтаксис rebuild old-database new-database [ DBA-password ] ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 14:30 |
|
|
start [/forum/topic.php?fid=55&fpage=4&tid=2009689]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
76ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 249ms |
total: | 440ms |
0 / 0 |