Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / можно ли в firebird 1 в ХП создать параметр типа массива ? / 25 сообщений из 27, страница 1 из 2
28.07.2004, 12:22:41
    #32624872
Calm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
Сабж.

Нужно из прикладухи передавать несколько слов в ХП. Сколько - неизвестно ( примерно 1-50)
Много вызовов ХП с одним строковым параметром существенно уменьшают производительность.
В какую сторону стоит рыть, чтобы добиться оптимизации?

Использовать UDF не позволяет религия фирмы :(
Поиск по сайту и гуглю вразумительного ответа не дали :(
...
Рейтинг: 0 / 0
28.07.2004, 12:47:43
    #32624952
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
В одной длинной строке через разделитель
...
Рейтинг: 0 / 0
28.07.2004, 12:49:41
    #32624957
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
Да просто один строковый параметр.
В нем сцепленные слова. Слова подравняешь пробелами до известного макс возможного размера.
В ХП разберешь строку с использованием SUBSTRING.
...
Рейтинг: 0 / 0
28.07.2004, 12:50:33
    #32624963
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
>hvlad
>В одной длинной строке через разделитель

Проблемы с разбором будут...:)
...
Рейтинг: 0 / 0
28.07.2004, 12:59:37
    #32624995
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
Кстати, проблемы при разборе всё равно будут. С SUBSTRING. Если FB1.
...
Рейтинг: 0 / 0
28.07.2004, 13:40:10
    #32625142
Calm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
Дело осложняется тем, что каждое слово необходимо сопрвождать числом.
Сейчас делаю 10 параметров типа varchar и 10 shortint.

Самого коробит от неизящности решения :( , однако прирост производительности на лицо.
...
Рейтинг: 0 / 0
28.07.2004, 13:45:47
    #32625169
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
Я не знаю, что у тебя за задача. Но существует ещё такое решение.
Есть некая вспомогательная таблица, в которую сбрасываешь свой массив строк и чисел. Потом выполняешь запросы, которые коррелируют с этой таблицей по сброшенным тобой туда данным.
...
Рейтинг: 0 / 0
28.07.2004, 13:54:51
    #32625201
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
А еще можно попробовать BLOB + UDF!

http://rfunc.sourceforge.net/rus

Best regards,
Dnico.
...
Рейтинг: 0 / 0
28.07.2004, 13:58:11
    #32625209
Calm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
Дело в том, что необходимо уменьшить количество обращений к БД.
К базе обращаются php-скрипты.
Сейчас пиковые моменты интенсивность превышает 15000 обработок в минуту.
Под обработкой подразумевается вызов ХП с преданным туда словом и числом.
Для удобства будем называть эту ХП DO_word()
15000 / мин это нормально сейчас, но должна выдерживаться нагрузка минимум в 10 раз выше.
Тормоза получаются при дергании из скриптов DO_word(). Время расходуется именно на вызов, а не на обработку.
Вызывая DO_word() с двумя словами, получаю прирост производительности в 2 раза. С десятью параметрами ожидаю прироста в 8-9 раз.

Помещать слова в некоторую дополнительную таблицу не имеет смысла, поскольку опять же будет идти вызов к БД.

Вот такие дела.
...
Рейтинг: 0 / 0
28.07.2004, 13:58:56
    #32625212
Calm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
2 Dnico
на UDF религия фирмы накладывает табу.
...
Рейтинг: 0 / 0
28.07.2004, 14:19:36
    #32625291
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
Johnmen>hvlad
>В одной длинной строке через разделитель

Проблемы с разбором будут...:)У меня проблем с разбором нет. Правда я использую UDF'ы ;)

В принципе, можно разбирать строку по-символьно с SUBSTRING, но если контора хочет быстродействия, то могу рекомендовать сменить религию ;)

С другой стороны, можно остановится на компромиссном варианте - сделать N пар-ров и M вызовов процедуры. Или перенести обработку на клиента - если основное время тратится на вызов процедуры, а не на её работу, то большого смысла в ней может и не быть ;)
...
Рейтинг: 0 / 0
28.07.2004, 14:24:55
    #32625310
Calm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
hvlad, увы, обработка сводится к созданию в БД записей в соответствующих таблицах. Так что на клиент это не перенести :(
...
Рейтинг: 0 / 0
28.07.2004, 14:28:50
    #32625330
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
авторна UDF религия фирмы накладывает табу.
Странная фирма ... UDF есть часть сервера ... как же без них то ?

Best regards,
Dnico.
...
Рейтинг: 0 / 0
28.07.2004, 14:30:59
    #32625334
Calm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
авторкак же без них то ?

Пока не сталкивались с задачами, где нельзя обойтись без UDF.
Как столкнемся, так и религия изменится :)
...
Рейтинг: 0 / 0
28.07.2004, 14:33:56
    #32625344
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
Так вот и пришло время ...
Запихиваешь параметры в BLOB (по параметру в строке), а в процедуре извлекаешь построчно и будет тебе праздник !!!

Best regards,
Dnico.
...
Рейтинг: 0 / 0
28.07.2004, 14:36:57
    #32625359
Calm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
пожалуй, имеет смысл пообщаться с нашим главным теологом.

Однако, коллеги, какие еще пути можно усмотреть, без использования UDF
?
...
Рейтинг: 0 / 0
28.07.2004, 14:39:56
    #32625368
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
Боюсь что больше предложений не последует ... вроде все обсудили.

Best regards,
Dnico.
...
Рейтинг: 0 / 0
28.07.2004, 15:47:42
    #32625612
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
>hvlad
>У меня проблем с разбором нет. Правда я использую UDF'ы ;)

Вот то-то и оно... Автор же четко сказал - без UDF.

>Calm

Ну так что с разбором с пом.SUBSTRING ?
...
Рейтинг: 0 / 0
28.07.2004, 18:07:58
    #32626031
Calm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
>>Ну так что с разбором с пом.SUBSTRING ?

Сегодня этот вопрос отложили.

Насколько я понял, с помощью SUBSTRING я должен последовательно перебирать каждый символ текста, определять, что сформировано очередное слово и вызывать свою ХП, я верно понял?

Возникает некоторое сомнение относительно быстродейственности этого.
Но все равно попробую завтра.
...
Рейтинг: 0 / 0
28.07.2004, 18:09:05
    #32626033
Calm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
авторПроблемы с разбором будут...:)

Проблемы с быстродействием или SUBSTRING глючно работает?
...
Рейтинг: 0 / 0
28.07.2004, 18:18:32
    #32626040
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
>Проблемы с быстродействием или SUBSTRING глючно работает?

Нет. Нет.
Проблемы с параметрами в SUBSTRING.
...
Рейтинг: 0 / 0
28.07.2004, 18:23:14
    #32626045
Calm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
э-ээ... а пояснить чуть-чуть, если не затруднит ? :)

уверен, что ваш совет минимизирует количество граблей, на которые я буду наступать :))
...
Рейтинг: 0 / 0
28.07.2004, 18:29:45
    #32626054
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
глянь

Лично я не проверял...:)
...
Рейтинг: 0 / 0
28.07.2004, 19:59:06
    #32626156
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
DnicoТак вот и пришло время ...
Запихиваешь параметры в BLOBТолько не в блоб (лишний сетевой вызов, afaik).
50 пар-ров вполне поместятся в varchar(4096), если не поместятся-то в varchar(32767) ;)
...
Рейтинг: 0 / 0
29.07.2004, 10:19:43
    #32626526
Calm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в firebird 1 в ХП создать параметр типа массива ?
авторЛично я не проверял...:)
хе-х..
у них там глюки в FB 1.5 , а у меня всего лишь 1.0..
Но все равно попробую...
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / можно ли в firebird 1 в ХП создать параметр типа массива ? / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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