Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Fox + Oracle SQL server / 25 сообщений из 27, страница 1 из 2
14.09.2005, 09:29:50
    #33267860
zeBeginna
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
делаю связкеу фокса с Оракловым СКЛ
но почему-то тормозит. на данном форуме прочел, что соединения держать долго нельзя поэтому сделал "короткие" соединения
gnConnHandle = SQLCONNECT('bla','bla','bla')

IF gnConnHandle <= 0

= MESSAGEBOX('Cannot make connection ' + lcConnString , 16, 'SQL Connect Error')
ELSE
= MESSAGEBOX('Connection made', 48, 'SQL Connect Message')

cSP = "BEGIN Procedure() ; END;"

k = SQLExec(gnConnHandle, cSP)

IF K <> 1
= MESSAGEBOX('Xранимая процедура ' + cSP + ' по каким-то причинам не выполнилась!!!!', 48, 'Сообщение об ощибке')


= SQLDISCONNECT(gnConnHandle)
ENDIF
endif
вот из-за постоянного соединения-рассоединения сильно тормозит.
может мне открыть соединение сразу и, потом закрывать его с выходом из программы?
...
Рейтинг: 0 / 0
14.09.2005, 09:57:19
    #33267926
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
Ну и насоветовали тебе - рвать соединение после выполнения команд, так конечно делать не стоит, подумай сам если использовать такую технологию, то сервер "запарится" отключать/подключать клиентов и на саму обработку данных у него времени не останется. Поэтому соединился и держи/используй своё соединение.
...
Рейтинг: 0 / 0
14.09.2005, 13:42:31
    #33268885
AKI
AKI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
Все верно Вам посоветовали!!!
ни в коем случае не держите коннект, падение БД при этом очень вероятно!!!
А тормозит, если - тут ничего не поделаешь. если критично пишите под Oracle forms а если некритично, пусть операторы отдыхают изредка
...
Рейтинг: 0 / 0
14.09.2005, 14:11:21
    #33268992
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
Aki

Что бы наити истину, предлагаю простой тест, возмите в цикле этак шагов на 1000 выполните SQLCONNECT, SQLDISCONNECT и посмотрите на время выполнения самого цикла.

Aki падение БД при этом очень вероятно!!!

Я не силен в ORACLE, но думаю, что если бы БД падала от открытого коннекта то врял ли с ней можно было бы в принципе работать.
...
Рейтинг: 0 / 0
14.09.2005, 15:11:25
    #33269234
AKI
AKI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
PaulWist Aki

Что бы наити истину, предлагаю простой тест, возмите в цикле этак шагов на 1000 выполните SQLCONNECT, SQLDISCONNECT и посмотрите на время выполнения самого цикла.


ну провел.. правда надоело Copy-Paste делать
поэтому в 1000 шагов не стал SQLCONNECT, SQLDISCONNECT писать, долго все же, а еще и работать приходится
сделал 28 раз, получил время 3 секунды примерно.
что дальше?
...
Рейтинг: 0 / 0
14.09.2005, 22:02:04
    #33270044
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
Akiну провел.. правда надоело Copy-Paste делать
поэтому в 1000 шагов не стал SQLCONNECT, SQLDISCONNECT писать, долго все же, а еще и работать приходится
сделал 28 раз
Лично мне просто в голову не пришло бы делать 1000 строк Connect - Disconnect. Такие вещи обычно делаются через циклы.

Код: plaintext
1.
2.
3.
4.
FOR lnI= 1  TO  1000 
	gnConnHandle = SQLCONNECT('bla','bla','bla')
	= SQLDISCONNECT(gnConnHandle)
ENDFOR

Разрывать соединение имеет смысл, если есть какие-то ограничение на количество одновременных коннектов. Тогда чем меньше время коннекта, тем больше человек может "одновременно" работать с базой.

Если таких ограничений нет, то не вижу смысла "дергать" коннект. Какие проблемы могут быть, если коннект будет включен постоянно? Весь сеанс работы пользователя.
...
Рейтинг: 0 / 0
15.09.2005, 03:42:38
    #33270161
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
Hi All!

Да уж, от таких "специалистов" как Aki (IMHO человеку не знающему что такое
цикл не место на профессиональных форумах, ОСОБЕННО в роли эксперта) и стоит
ожидать столь вредных советов. Я плакалъ прочитав про "падение БД при этом
очень вероятно"

Вообще есть несколько стратегий в плане количества (и времени удержания)
соединений. Если в программе связь с сервером нужна в одной-двух формах,
причём "раз в год, да и то если проверка нагрянула" - то смысла держать
открытую конекцию конечно нет. Если же программа ПОСТОЯННО работает с
сервером, то нету никакого смысла постоянно открывать/закрывать коннекции,
надеясь на то что Connection Pooling спасёт - весьма наивно - да он повышает
скорость "повторного" коннекта, но тем не менее затраты на этот процесс
остаются весьма существенными...
Есть более сложные схемы, например "1,5 коннекции" - это когда по одной
коннекции идёт "текущая" работа - данные для интерфейса вынимаются, а по
временно создающейся второй коннекции в асинхронном режиме выполняются
какие-то "массивные" действия. И по завершении процесса вторая коннекция
закрывается.
Единственный случай когда приходится сразу же закрывать коннекцию - это
WebService или DCOM компоненты - поскольку во-первых их реально может быть
создано очень много экземпляров на сервере, а во-вторых потому что обычно
они пишутся как stateless компоненты (и они кстати могут помещаться в пул
объектов - т.е. один и тот-же экземпляр будет использован РАЗНЫМИ
клиентами) - соответственно между вызовами их методов никакое "состояние" не
должно сохраняться (в том числе и коннекция).

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
15.09.2005, 09:26:32
    #33270330
AKI
AKI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
ВладимирМ
Лично мне просто в голову не пришло бы делать 1000 строк Connect - Disconnect. Такие вещи обычно делаются через циклы.

Код: plaintext
1.
2.
3.
4.
FOR lnI= 1  TO  1000 
	gnConnHandle = SQLCONNECT('bla','bla','bla')
	= SQLDISCONNECT(gnConnHandle)
ENDFOR


тьфу - заработался! Максимов как всегда дает самые действенные советы. За что ему ОСОБОЕ уважение!!!
Спасибо, что поправили!

ВладимирМ
Разрывать соединение имеет смысл, если есть какие-то ограничение на количество одновременных коннектов. Тогда чем меньше время коннекта, тем больше человек может "одновременно" работать с базой. .

да в том, то и дело, что я НЕ знаю сколько людей будет работать. с моей программой от 3-х до 20-ти, человек, но база-то общая, к ней стучатся и другие пользователи!!!! вот так-то...

2 Igor Korolev
Я вообще-то не позиционировал себя как эксперта. высказал свое мнение, и все, да вот Уважаемый Максимов меня поправил, и верно поправил! за что ему особое СПАСИБО
...
Рейтинг: 0 / 0
15.09.2005, 10:09:56
    #33270410
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
Aki да в том, то и дело, что я НЕ знаю сколько людей будет работать. с моей программой от 3-х до 20-ти, человек, но база-то общая, к ней стучатся и другие пользователи!!!! вот так-то...

Названные цифры коннектов НИ КАК не повлияют на производительность сервера, обычно тормоза начинаются с цифры 200 открытых коннектов и то это лечится добавлением ОЗУ.
...
Рейтинг: 0 / 0
15.09.2005, 10:25:30
    #33270468
Диченка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
PaulWist Aki да в том, то и дело, что я НЕ знаю сколько людей будет работать. с моей программой от 3-х до 20-ти, человек, но база-то общая, к ней стучатся и другие пользователи!!!! вот так-то...

Названные цифры коннектов НИ КАК не повлияют на производительность сервера, обычно тормоза начинаются с цифры 200 открытых коннектов и то это лечится добавлением ОЗУ.

Я бы ввобще не стал привязываться к конкретным цифрам. Один коннект требует ресурса всего лишь в 12 килобайт. Можно подключить и десять тысяч пользователей, которые делать ничего не будут. Сколько для этого потребуется ОЗУ ? Совсем немного.
...
Рейтинг: 0 / 0
15.09.2005, 10:28:06
    #33270485
Диченка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
Вообще я сторонник подхода, когда пользователь в начале сеанса работы устанавливает коннект к серверу и спокойно работает до выхода из программы. Не вижу абсолютно никакого смысла в том, чтобы создавать и рвать коннект при каждой манипуляции с данными.
...
Рейтинг: 0 / 0
15.09.2005, 11:30:42
    #33270702
Tamito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
PaulWist
Названные цифры коннектов НИ КАК не повлияют на производительность сервера, обычно тормоза начинаются с цифры 200 открытых коннектов и то это лечится добавлением ОЗУ.

Эти цифры для MS SQL Server, но уж никак не для Оракла (Сама архитектура уж так устроена)
"Тормоза" "обычно" связаны с неверной конфигурацией сервака. Оправданием "тормозов" не должно являться ни увеличение размера БД, ни постепенное увеличение количества пользователей.


2Диченка
Можно узнать откуда взялась столь "магическая" цифра в 12 кило ? :)
Если разовор б Оракле - возможно, вы слыхали о области PGA, которая (в зависимости от обьема переворачиваемых данных и - опять же - не всегда успешно построеной архитектуры самого приложения) может зашкаливаь и выше 500 метров на сессию :)
...
Рейтинг: 0 / 0
15.09.2005, 11:53:15
    #33270768
zeBeginna
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
о действительно убрал дисконнекты после каждой операции - все ускорилось значительно!!
только вот Аки сказал, что база может упасть.. если такое случится меня админ убьет натуральным образом...
...
Рейтинг: 0 / 0
15.09.2005, 12:02:19
    #33270800
Диченка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
Tamito2Диченка
Можно узнать откуда взялась столь "магическая" цифра в 12 кило ? :)


Пардон, господа, я проецировал свой ответ сквозь призму MSSQL, с которым работаю. В Оракле конечно все по своему устроено. Но как мне кажется серьезная СУБД, к которой и относится Оракл, не может тормозить и тем более падать от большого количества одновременно висящих коннектов.
...
Рейтинг: 0 / 0
15.09.2005, 12:17:30
    #33270866
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
TamitoЭти цифры для MS SQL Server, но уж никак не для Оракла

Вы не очень внимательно читали пред посты

PaulWistЯ не силен в ORACLE

TamitoОправданием "тормозов" не должно являться ни увеличение размера БД, ни постепенное увеличение количества пользователей.

Это вопрос филосовский, для его решения необходимо рассмотрение конкретной реализации.

zeBeginnaтолько вот Аки сказал, что база может упасть..

Неужели Вы не обратили внимание на последующую критику участников форума поста Аки (особенно про Copy/Past для создания соединений), говорящую о многом.
Поэтому пердупреждения надо читать, но и собственной головой думать, а насчет, что база может упасть - от этого никто не застрахован, на этот счет имеются средства архивирования и восстановления.
...
Рейтинг: 0 / 0
15.09.2005, 12:29:46
    #33270930
Tamito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
PaulWist TamitoОправданием "тормозов" не должно являться ни увеличение размера БД, ни постепенное увеличение количества пользователей.

Это вопрос филосовский


.. состоящий в том насколько админ вследствие недостаточной своей квалификации как ДБА сможет убедить окружающих и руководство в том, что тормоза в данном случае допустимы, ибо они связаны с увеличением размера БД (если руководство развесит уши и утверждать подобные глупости с чрезвычайно самоуверенным видом - гляди, может и прокатить)... :) :)
...
Рейтинг: 0 / 0
15.09.2005, 12:33:35
    #33270954
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
Tamito

Я не понял, что Вы хотели сказать своим постом (это была реплика-шутка или приглашение привести пример, когда размер БД, и как следствие выборок влияет на призводительность как сервера так и клиентов?)
...
Рейтинг: 0 / 0
15.09.2005, 12:49:24
    #33271014
Tamito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
PaulWist Tamito

Я не понял, что Вы хотели сказать своим постом (это была реплика-шутка или приглашение привести пример, когда размер БД, и как следствие выборок влияет на призводительность как сервера так и клиентов?)

Вероятно я оказался не совсем понятым.
Размер и количество сессий не должно влиять на производительность (Разовор об Оракле, в сиквеле все иначе, там - не уверен).
Если производительность падает при увеличении размера базы или при увеличении количества пользовательских сессий - это вопросы к месному ДБА по настройе производительности (Ессно если при проектировании изначально не допущены грубые ошибки (Например - запросы выгребают все данные и фльтруют уже на клиенте, такого рода)).
Если же данный ДБА не в состоянии обеспечить должное решение задач - тогда это уж другое дело - сможет другой - более квалифицированный.
Сама СУБД позволяет делать все , насколько конкретные субьекты умеют пользоваться ее возможностями - это вопрос субьективной квалификации, насколько могут свой недостаок владения спихнуть на внешние обьективные причины (мол - база выросла, ничего тут не поделаешь) -это вероятно уже из софистики - способность убедить в заведомо ошибочных утверждениях...
...
Рейтинг: 0 / 0
15.09.2005, 13:08:11
    #33271074
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
Tamito

"Раз пошла такая пьянка" (с)

Исходя из ваших слов - пример: выборка/поиск одной записи из индексированной таблицы с 10 записями и с 1 млн должна быть одинакова - обьясните тогда механизм за счет чего это достигается, как это реализуется в Oracle, насколько я помню ВСЕ численные методы поиска очень чуствительны к количеству реперных точек.
...
Рейтинг: 0 / 0
15.09.2005, 13:35:00
    #33271159
Tamito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
PaulWist Tamito

"Раз пошла такая пьянка" (с)

Исходя из ваших слов - пример: выборка/поиск одной записи из индексированной таблицы с 10 записями и с 1 млн должна быть одинакова

Совершенно верно.
Даже если не углубляться в различные типы таблиц и индексов - и пользовать к примеру наиболее распостраненный из индексов - уровень вложенности В-дерева всегда не глубже 4.
Критерием и целью должно являться общее снижение кличества операций логического и физического ввода-вывода, а из миллиона или из 10 строчек извлекать одну - уже не столь существенно.
Производительность - как и везде - достигается за счет правильной работы оптимизатора. А вот исходную статистику и параметры конфигурации для него правильно ли предоставили - уже забота ДБА (Можно и на пятерых пользователях на десяти строчках обесечить жуткие тормоза ) :)

Мы углубляемся в особенности архитектуры и работы, в которых Оракл и МС СКЛ неописуемо далеки.
Думаю, резонно было бы прекратить полемику.
...
Рейтинг: 0 / 0
15.09.2005, 13:39:50
    #33271166
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
TamitoМы углубляемся в особенности архитектуры и работы, в которых Оракл и МС СКЛ неописуемо далеки.
Думаю, резонно было бы прекратить полемику.

Боже упаси, никакой полемики, мне просто интересен сам механизм, рассказанный доходчиво - "для дураков".
Раз вы считаете, что лучше прекратить, то я не возражаю.
...
Рейтинг: 0 / 0
15.09.2005, 14:09:58
    #33271259
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
Освежил в памяти теорию В-дерева - не убедительно. Основной постулат этого графа говорит, что доступ (путь) к данным одинаков , НО не говорится о накладных расходах поиска следующего ключа (хотя вариаций много для ускорения этого поиска), а вот это как раз и является важным так, что время поиска одной записи для разных таблиц будет разное, либо одинаковое, но равное поиску в большей таблице - никуда не денешься от теории численных методов
...
Рейтинг: 0 / 0
16.09.2005, 03:39:31
    #33272361
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
Hi PaulWist!

Не надо далеко ходить - создай в фоксе табличку из пары миллионов записей,
создай индекс по полю поиска, и засеки время выборки той самой пресловутой
"одной записи". Я так понимаю что именно про это пытается говорить Tamito.
Правда есть одно НО - далеко не вся обработка связана с "извлечением одной
записи" - есть масса случаев когда нужно "перетрясать" практически весь
объём хранимой информации - тут конечно против фактов не попрёшь - тут
размер базы имеет большое значение. Иногда правда необходимость в таких
действиях вытекает не из сути задачи, а из неверного подхода, применённого
прикладным программистом - о чём тоже намекал Tamito - да, от "безумного"
кода не спасёт ни супер-профессиональный DBA, ни сверхмощный кластер ;)

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
16.09.2005, 09:06:23
    #33272536
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
Igor Korolyov

Igor Korolyov Не надо далеко ходить - создай в фоксе табличку из пары миллионов записей,
создай индекс по полю поиска, и засеки время выборки той самой пресловутой "одной записи".

Надо ли это понимать, что организация индексов в Фоксе и Oracle одинаковы? Если "Да" - то такие манипуляции я проводил много раз, если "Нет" - то для чего эта реплика? Посто сравнить "сапоги с километрами"?

Igor KorolyovПравда есть одно НО - далеко не вся обработка связана с "извлечением одной
записи" - есть масса случаев когда нужно "перетрясать" практически весь
объём хранимой информации - тут конечно против фактов не попрёшь - тут
размер базы имеет большое значение.

Ну в общем я об этом и говорил, задавая "провокационный" вопрос насчет утверждения, что от размера таблички не зависит скорость получения данных. Тем более, была ссылка на организацию индекса в Oracle в виде В-дерева, которое имеет очевидные плюсы (независимо от кол-ва записей путь к данным одинаков) и очевидные минусы (время поиска в таблице с 10 записями имеющий индекс В-дерева с 1 млн записей бедет "чуть меньше" или таким же что и из таблички с 1млн. записей).
...
Рейтинг: 0 / 0
16.09.2005, 09:25:58
    #33272589
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox + Oracle SQL server
ДиченкаПардон, господа, я проецировал свой ответ сквозь призму MSSQL, с которым работаю. В Оракле конечно все по своему устроено. Но как мне кажется серьезная СУБД, к которой и относится Оракл, не может тормозить и тем более падать от большого количества одновременно висящих коннектов.
Отличная шутка дня

Перенесем данный топик в "Сравнение СУБД" или ПТ?
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Fox + Oracle SQL server / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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