powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Тонкий или толстый клиент
17 сообщений из 217, страница 9 из 9
Тонкий или толстый клиент
    #34641679
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... конечно если эта логика - не действительно ресурсоёмкие задачи по поиску всевозможных оптимумов, распознаванию и преобразованию форматов и т.д., для решения которых количество ресурсов, необходимое для извлечения, передачи и сохранения данных, мало по сравнению с количеством, необходимым для расчётов.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641708
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kilaviВ данном случае, это голосование всего лишь показывает, что сообщество РСДН, в большинстве своем, имеет другую точку зрения, чем сообщество SQL, вот и все.Я подозреваю, что сообщество ЖЖ или Анекдот.РУ будет иметь вообще третье мнение: "Все на.... лучше выпей ПИВА!"

Интересно, что из этого следует?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641740
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab ChAВы, правда, считаете, что развитие, в частности - технологий, определяется голосованием ?Естественно. Большинство современных IT стандартов принято голосованием поставщиков решений базирующихся на этих стандартах. Лишь немногие компании могут себе позволить создавать собственные стандарты de'facto. Большинство компаний поменьше входят в группы по стандартизации и общими усилиями устанавливают мировой порядок. Технология, которую никто не принимает и не поддерживает не развивается и умирает.Вы не слишком далеко заходите в своей интерпретации голосования ? И какое отношение к ней имеет голосование посетителей rsdn ?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641811
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA mcureenab ChAВы, правда, считаете, что развитие, в частности - технологий, определяется голосованием ?Естественно. Большинство современных IT стандартов принято голосованием поставщиков решений базирующихся на этих стандартах. Лишь немногие компании могут себе позволить создавать собственные стандарты de'facto. Большинство компаний поменьше входят в группы по стандартизации и общими усилиями устанавливают мировой порядок. Технология, которую никто не принимает и не поддерживает не развивается и умирает.Вы не слишком далеко заходите в своей интерпретации голосования ? И какое отношение к ней имеет голосование посетителей rsdn ?

Не понял вопросов. Наверное трава закончилась. (Прости, tigra, не поделился.)

Я никакое голосование не интерпретировал. Речь только о том, что промышленные стандарты, в том числе в области IT, часто принимаются голосованием. Форумы RSDN и SQL.RU никакой юридической силы не имеют, так что голосование их участников скорее отражает общественное мнение, а учитывать его в принятии решения или нет, каждый решает сам за себя.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641913
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabНе понял вопросов.Ну и ладно, не стоит себя напрягать.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641983
Один
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerс моей точки зрения большинство коллег пишет вообще "однозвенные" системы - сколько бы они ни считали сами, но закладывают одно "основное" звено и одно-два-три сугубо технических, уровня "драйвера клавиатуры". ИМХО скорее и "драйвера" и т.н. "бизнес-логика" в большей или меньшей степени размазываются между всеми этими слоями-звеньями. Больше их - больше степень размазывания. Хотя какое-то звено считается основным
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34642298
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОдинИМХО скорее и "драйвера" и т.н. "бизнес-логика" в большей или меньшей степени размазываются между всеми этими слоями-звеньями.
В хорошо спроектированной системе - да.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34642758
kilavi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bely kilaviВ данном случае, это голосование всего лишь показывает, что сообщество РСДН, в большинстве своем, имеет другую точку зрения, чем сообщество SQL, вот и все.Я подозреваю, что сообщество ЖЖ или Анекдот.РУ будет иметь вообще третье мнение: "Все на.... лучше выпей ПИВА!"

Интересно, что из этого следует?

из этого следует, что некоторым, очень трудно сделать самостоятельно выводы, не более того. По существу есть что добавить?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34649232
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab Alex_Toms
При получении запросов select, insert, update, delete сервак:
1: сначала призводит синтаксический разбор текста
2: затем компилирует
3: производит оптимизацию плана запроса
4: и только после этого выполняет сам запрос.
При использовании ХП, первые 3 пункта выполняются после изменении текста ХП, а при вызове сразу пункт 4, при этом при экономятся ресурсы сервера, и выигрыш от этого бывает очень значительный.



В Оракле и при использовании ХП всё происходит точно так же с п.1 по п.4. Может в MSSQL это не так? Но тогда после изменения данных останется старый план запроса.

Это не так. Ни для Oracle, ни для MS SQL.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34649416
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО, если вычислительная сложность алгоритма, где N стоимость выборки данных

- <= О(N) - его нужно выполнять в БД

- между О(N) и O(N**2) - думать надо

- >= O(N**2) - выносить из базы

Задача зарплаты подпадает под первую категорию
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34650473
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drev mcureenab Alex_Toms
При получении запросов select, insert, update, delete сервак:
1: сначала призводит синтаксический разбор текста
2: затем компилирует
3: производит оптимизацию плана запроса
4: и только после этого выполняет сам запрос.
При использовании ХП, первые 3 пункта выполняются после изменении текста ХП, а при вызове сразу пункт 4, при этом при экономятся ресурсы сервера, и выигрыш от этого бывает очень значительный.



В Оракле и при использовании ХП всё происходит точно так же с п.1 по п.4. Может в MSSQL это не так? Но тогда после изменения данных останется старый план запроса.

Это не так. Ни для Oracle, ни для MS SQL.

Интересно, как?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34650546
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab drev mcureenab Alex_Toms
При получении запросов select, insert, update, delete сервак:
1: сначала призводит синтаксический разбор текста
2: затем компилирует
3: производит оптимизацию плана запроса
4: и только после этого выполняет сам запрос.
При использовании ХП, первые 3 пункта выполняются после изменении текста ХП, а при вызове сразу пункт 4, при этом при экономятся ресурсы сервера, и выигрыш от этого бывает очень значительный.



В Оракле и при использовании ХП всё происходит точно так же с п.1 по п.4. Может в MSSQL это не так? Но тогда после изменения данных останется старый план запроса.

Это не так. Ни для Oracle, ни для MS SQL.

Интересно, как?


Давайте отложим вопрос "как", и разберём Ваше утверждение. Вроде бы не совсем осмысленно при создании любого программного модуля выполнять пункт 2, чтобы потом, при его запуске выполнять пункт 1, правда?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34650616
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drevВроде бы не совсем осмысленно при создании любого программного модуля выполнять пункт 2, чтобы потом, при его запуске выполнять пункт 1, правда?
Мне утверждение Алекса также представляется не то чтобы абсолютно верным, но в данном случае я бы не стал говорить так категорично.....

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
SQL> conn test/test@db1.sphaera197
Connected.

SQL> create table t1 (i) as
   2     select rownum from dual connect by level <=  5 ;

Table created.

SQL> create table t2 (i, j) as
   2     select rownum, rownum from dual connect by level <=  5 ;

Table created.

SQL> create table t3 (i, j, k) as
   2     select rownum, rownum, rownum from dual connect by level <=  5 ;

Table created.

SQL> create synonym tx for t1;

Synonym created.

SQL> create procedure get_t (cur out sys_refcursor) authid current_user is
   2   begin
   3     open cur for select * from tx;
   4   end;
   5   /

Procedure created.

SQL> set autoprint on;
SQL> var cur refcursor;

SQL> exec get_t (:cur);

PL/SQL procedure successfully completed.

         I                                                                      
----------                                                                      
          1                                                                       
          2                                                                       
          3                                                                       
          4                                                                       
          5                                                                       

SQL> create or replace synonym tx for t2;

Synonym created.

SQL> exec get_t (:cur);

PL/SQL procedure successfully completed.

         I          J                                                           
---------- ----------                                                           
          1            1                                                            
          2            2                                                            
          3            3                                                            
          4            4                                                            
          5            5                                                            

SQL> create or replace synonym tx for t3;

Synonym created.

SQL> exec get_t (:cur);

PL/SQL procedure successfully completed.

         I          J          K                                                
---------- ---------- ----------                                                
          1            1            1                                                 
          2            2            2                                                 
          3            3            3                                                 
          4            4            4                                                 
          5            5            5                                                 
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34650762
Andreww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabИнтересно, как?

В Оракле примерно так :

Проверили синтаксис (вруг где буковку пропустили)
Проверили доступность объектов, перевели все в один регистр и т.п. (semantic check)
Посчитали ХЭШ
Проискали по хэшу в библиотечном кеше (у запрос есть ещё всякие фишки вроде текущей сортировки и т.п. их тоже надо не забыть)
Если нашлось и объекты на которые ссылается запрос те же (т.е. синонимами не обманули то берём план из кэша и вперёд (soft parse)
Иначе - hard parse, строим дерево разбора и план выполнения и кладём всё это в library cache перед тем как выполнить (авось кому сгодится)


Кто и когда делает существующие разборы невалидными (то ли analayze table\index то ли ещё кто) я не знаю но делает точно, т.к. при изменении статистики план меняется.

Где то так.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34650974
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drevДавайте отложим вопрос "как", и разберём Ваше утверждение. Вроде бы не совсем осмысленно при создании любого программного модуля выполнять пункт 2, чтобы потом, при его запуске выполнять пункт 1, правда?

У Оракла на этот счёт другое мнение. Собственно синтаксический разбор SQL запроса занимает очень малую часть времени. Значительно больше времени занимает построение оптимального плана - суть оптимизирующая компиляция запроса с учётом текущего состояния БД. Так что выдумывать некий p-code для хранения разобранного запроса без плана, только чтобы не выполнять синтаксический анализ нет смысла. Глобальный кэш SQL запросов и локальный кэш курсоров вообще позволяет в большинстве случаев пропустить этап компиляции (hard parse) и сразу перейти к выполнению существующего плана (soft parse, или no parse).

PS. Вы не задумывались, почему до сих пор существуют и успешно развиваются скриптовые языки? Например для серверных приложений, которые многократно выполняют одни и теже процедуры однажды скомпилированный на этапе выполнения скрипт будет работать, работать и работать. А в случае изменение внешних скриптов или БД не потребует ручной перекомпиляции.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34651818
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab drevДавайте отложим вопрос "как", и разберём Ваше утверждение. Вроде бы не совсем осмысленно при создании любого программного модуля выполнять пункт 2, чтобы потом, при его запуске выполнять пункт 1, правда?

У Оракла на этот счёт другое мнение. Собственно синтаксический разбор SQL запроса занимает очень малую часть времени. Значительно больше времени занимает построение оптимального плана - суть оптимизирующая компиляция запроса с учётом текущего состояния БД. Так что выдумывать некий p-code для хранения разобранного запроса без плана, только чтобы не выполнять синтаксический анализ нет смысла. Глобальный кэш SQL запросов и локальный кэш курсоров вообще позволяет в большинстве случаев пропустить этап компиляции (hard parse) и сразу перейти к выполнению существующего плана (soft parse, или no parse).



Всё, что вы говорите, верно для "простых запросов".

Для stored procedures это не совсем так.

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

Попробуйте создать подобную процедуру, и посмотрите сколько времени это займёт. А потом запустите её. И сравните время.

Для одного из решений этой проблемы введен statement level RECOMPILE.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34651833
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer drevВроде бы не совсем осмысленно при создании любого программного модуля выполнять пункт 2, чтобы потом, при его запуске выполнять пункт 1, правда?
Мне утверждение Алекса также представляется не то чтобы абсолютно верным, но в данном случае я бы не стал говорить так категорично.....

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
SQL> conn test/test@db1.sphaera197
Connected.

SQL> create table t1 (i) as
   2     select rownum from dual connect by level <=  5 ;

Table created.

SQL> create table t2 (i, j) as
   2     select rownum, rownum from dual connect by level <=  5 ;

Table created.

SQL> create table t3 (i, j, k) as
   2     select rownum, rownum, rownum from dual connect by level <=  5 ;

Table created.

SQL> create synonym tx for t1;

Synonym created.

SQL> create procedure get_t (cur out sys_refcursor) authid current_user is
   2   begin
   3     open cur for select * from tx;
   4   end;
   5   /

Procedure created.

SQL> set autoprint on;
SQL> var cur refcursor;

SQL> exec get_t (:cur);

PL/SQL procedure successfully completed.

         I                                                                      
----------                                                                      
          1                                                                       
          2                                                                       
          3                                                                       
          4                                                                       
          5                                                                       

SQL> create or replace synonym tx for t2;

Synonym created.

SQL> exec get_t (:cur);

PL/SQL procedure successfully completed.

         I          J                                                           
---------- ----------                                                           
          1            1                                                            
          2            2                                                            
          3            3                                                            
          4            4                                                            
          5            5                                                            

SQL> create or replace synonym tx for t3;

Synonym created.

SQL> exec get_t (:cur);

PL/SQL procedure successfully completed.

         I          J          K                                                
---------- ---------- ----------                                                
          1            1            1                                                 
          2            2            2                                                 
          3            3            3                                                 
          4            4            4                                                 
          5            5            5                                                 



1. В данной ситуации я отвечал не на пост Алекса, а на ответ на этот пост mcureenab.

2. В приведеном Вами примере происходит, ИМХО, не перекомпиляция, а отложенная резолюция.
...
Рейтинг: 0 / 0
17 сообщений из 217, страница 9 из 9
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Тонкий или толстый клиент
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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