powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Количество ХП
25 сообщений из 28, страница 1 из 2
Количество ХП
    #33182335
Демиург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз здрасте,
Как более правильно проектировать? Делать одну большую ХП или несколько более мелких? (В смысле, не просто так разбить код на более малые куски, а выделить логику)
И существует ли какое либо ограничение на кол-во ХП по "хорошему тону".
Ну чтоб не краснеть потом за код свой... Я например пишу не очень большой проект, и в нем для работы с документами уже 11 ХП (в принципе увеличения не предвидется) - нормально ли это? Но мне очень удобно вносить изменения в логику...
...
Рейтинг: 0 / 0
Количество ХП
    #33182359
Paul Sacks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормально. Все зависит от самой задачи. У меня их около 500...
...
Рейтинг: 0 / 0
Количество ХП
    #33182366
Демиург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
УХ!
...
Рейтинг: 0 / 0
Количество ХП
    #33183415
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в среднем по 4 хп на таблицу (insert,select,update,delete)
у нас около 1600 хп на 400 таблиц.
старайтесь формализовать логику в хранимых процедурах так, чтобы эти хп
можно было сгенерировать по модели БД.


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Количество ХП
    #33184033
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДемиургЕще раз здрасте,
Как более правильно проектировать? Делать одну большую ХП или несколько более мелких? (В смысле, не просто так разбить код на более малые куски, а выделить логику)

Были у нас ХП-монстры по 8 тыс строк кода, правда 90 кода процентов генерилось автоматом, опыт показал что такие процедуры очень сильно замедляют работу, и та же логика разбитая на 3 процедуры работает на порядок быстрее. Так что дело вкуса, я придерживаюсь следующих правил:

1) Если существует один логический блок, то более удобно отлаживать и обновлять одну процедуру.
2) Если одинаковый блок расчета встречается более чем в трех процедурах, нужно подумать, а не вынести ли его в отдельную процедуру
3) Если процедура вырастает до неприличных размеров, надо подумать можно ли разбить ее на несколько.
...
Рейтинг: 0 / 0
Количество ХП
    #33184049
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник
в среднем по 4 хп на таблицу (insert,select,update,delete)
у нас около 1600 хп на 400 таблиц.
старайтесь формализовать логику в хранимых процедурах так, чтобы эти хп
можно было сгенерировать по модели БД.

У нас документно-ориентированная система в ней более 500 типов документов (около 300 таблиц), к каждому набор методов=ХП, для разных типов разные например список, просмотр, добавить, подтвердить, удалить... соответственно более 4000 процедур.
...
Рейтинг: 0 / 0
Количество ХП
    #33184113
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это из футбола: "Кто дальше бьет, тот лучше играет"
...
Рейтинг: 0 / 0
Количество ХП
    #33184130
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дедовские времена очень прогрессивной была методика (или теория) структурного программирования. По моему все те принципы, правила, рекомендации актуальны и сейчас при разработке хранимых процедур, так это обычное процедурное программирования.

Для меня 1000 строк - это уже большой размер. Стараюсь до этого не доводить. Но иногда получается стихийно. Добавил один блок, другой, третий... Разбивать на отддельные процедуры лень. Хотя, если бы сначала знал, что делаешь, то сделал бы именно по частям.

На счет времени выполнения. Если в SQL 2000 не использовать в заголовке With recompile, то время запроса не зависит от объема процедуры.
...
Рейтинг: 0 / 0
Количество ХП
    #33184153
unreger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
раньше стандартно делал на каждую таблицу 4 процедуры
сейчас работаю с проектом где процедура одна, но у нее есть входная переменная @Action и четыре блока кода

задумался, чуть удобнее в разработке (хотя и сомнительно)
но ведь такая процедура при смене @Action будет слегка напрягать сервер на проверку и постройку нового плана?

PS: и вообще счастье в хибернейте
...
Рейтинг: 0 / 0
Количество ХП
    #33184422
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVPНа счет времени выполнения. Если в SQL 2000 не использовать в заголовке With recompile, то время запроса не зависит от объема процедуры.
Не совсем согласен, большие процедуры обычно содержат работу с временными таблицами, а это может приводить к неоднократным перекомпиляциям процедуры в момент выполнения, с этим кстати связано правило вынесения деклараций всех #таблиц в начало процедуры. ИМХО
...
Рейтинг: 0 / 0
Количество ХП
    #33185060
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets PVPНа счет времени выполнения. Если в SQL 2000 не использовать в заголовке With recompile, то время запроса не зависит от объема процедуры.
Не совсем согласен, большие процедуры обычно содержат работу с временными таблицами, а это может приводить к неоднократным перекомпиляциям процедуры в момент выполнения, с этим кстати связано правило вынесения деклараций всех #таблиц в начало процедуры. ИМХОО том, что в ходе выполнения запроса, может заново создаваться план выполнения (перекомпиляция процедуры), не знал. Хорошо бы ссылочку в то место, где об этом говорится. То что мне приходилось встречать в документации - это сначала план выполнения, загрузка в память (если этот план там еще не лежит) и затем выполнение.

Из опыта работы, если допущена ошибка в описании временной таблицы, то где бы она не была декларирована, сначала идет диагностика с мгновенной выдачей ошибок, затем инициализация процесса выполнения.
...
Рейтинг: 0 / 0
Количество ХП
    #33185075
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets...с этим кстати связано правило вынесения деклараций всех #таблиц в начало процедуры. ИМХОТоже ИМХО, конечно, но хорошим тоном считаю декларировать переменые и таблицы в той части процедуры, где они используются. А в начало процедуры вынести только те декларации, которые используются по всему текусту, или в разных его местах. Это повышает читаемость процедур.
...
Рейтинг: 0 / 0
Количество ХП
    #33185151
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще, насчет количества процедур.

В сложной системе оно растет и растет и ничего с этим не поделать. В SQL 2000 нет практических ограничений их количества. Единственная проблема при большом количестве процедур - это их обслуживание. Во время разработки программисты еще помнят их имена и умеют искать. Но даже сами авторы, спустя год-два забывают как имена, так и где находятся эти процедуры. Поэтому в серьезной системе очень важно иметь возможность оперативного доступа к хранимым процедурам, хотя бы к их именам. А еще лучше - возможность их создания и редактирования.

Я приведу пример из БАС не потому, что это "самая-самая", а потому что больше ничего толком не знаю.

При обработке документов есть джельтменский набор процедур, которые требуется выполнить. Он небольшой. Условно можно назвать: инициализация, расчет, проводка, генерация, печать. Первая - реакция на действия пользователя во время работы. Вторая - выполнение расчетов по команде. Третья - действия, необходимые при проводке операции. Печать - если не достаточно системных средств, генерация - автоматическое создание документов. За несколько лет работы у меня этот состав не поменялся.

Так вот в каждой тиражной системе есть режим настройки операций (документов). Если в свойствах этих документов закрепить имена используемых хранимых процедур, то этим на 50% можно облегчить жизнь программистам внедрения и сопровождения. А если еще рядом с именем положить кнопку, по которой вызывается встроенный SQL-редактор с текстом используемой процедуры - то это 99% успеха программистов сопровождения.
Я уже не говорю о том, что когда встроенный редактор не находит в базе данных процедуру, он создает ее шаблон с указанным именем, списком параметров, наиболее популярными блоками.

Не сочтите это за рекламу, разве что чуть-чуть. Просто это (ИМХО) наиболее надежный способ обеспечить жизнь системе с большим количеством процедур.
...
Рейтинг: 0 / 0
Количество ХП
    #33185152
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это пример описания свойств
...
Рейтинг: 0 / 0
Количество ХП
    #33185159
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А здесь реакция на нажатую кнопку. Дальше можно делать многое из того, что SQL Analyzer.
...
Рейтинг: 0 / 0
Количество ХП
    #33185177
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVPТоже ИМХО, конечно, но хорошим тоном считаю декларировать переменые и таблицы в той части процедуры, где они используются. А в начало процедуры вынести только те декларации, которые используются по всему текусту, или в разных его местах. Это повышает читаемость процедур.
Это помогает разбираться в коде человеку. А вот машина такого не любит.
Правильный тон для T-SQL это разнесение (по возможности) операторов DDL и DML в группы. Это даёт более стабильные и верные планы выполнения.
Так неправильно:
DML
DDL
DML
DDL
DML
DDL
....
Так правильно:
DDL
DDL
DDL
DML
DML
....
...
Рейтинг: 0 / 0
Количество ХП
    #33185207
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV PVPТоже ИМХО, конечно, но хорошим тоном считаю декларировать переменые и таблицы в той части процедуры, где они используются. А в начало процедуры вынести только те декларации, которые используются по всему текусту, или в разных его местах. Это повышает читаемость процедур.
Это помогает разбираться в коде человеку. А вот машина такого не любит.
Правильный тон для T-SQL это разнесение (по возможности) операторов DDL и DML в группы. Это даёт более стабильные и верные планы выполнения.
Так неправильно:
DML
DDL
DML
DDL
DML
DDL
....
Так правильно:
DDL
DDL
DDL
DML
DML
....Согласен с этим утверждением. Можно составлять так программы, что серверу будет легче. Только обычно предпочитаю упростить жизнь программисту. Чем нагляднее процедура, тем легче она воспринимается программистами, как авторами, так и теми, кому после этих авторов приходится заниматься с этими процедурами. Следовательно, ее легче сделать, а значит допустить меньше ошибок. В итоге, она будет работать лучше.
...
Рейтинг: 0 / 0
Количество ХП
    #33185263
Programmer_Ortodox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVPА здесь реакция на нажатую кнопку. Дальше можно делать многое из того, что SQL Analyzer.
Мне понравилось! Следующим шагом могло бы быть введение интерпретатора встроенного языка,языка не "китайского" , а того, что учат в школе
...
Рейтинг: 0 / 0
Количество ХП
    #33185276
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Programmer_Ortodox PVPА здесь реакция на нажатую кнопку. Дальше можно делать многое из того, что SQL Analyzer.
Мне понравилось! Следующим шагом могло бы быть введение интерпретатора встроенного языка,языка не "китайского" , а того, что учат в школеНаверное, Вы имеете в виду то, что пробел после запятой ставится, а перед - нет? И в конце предложения ставится точка? Предлагаю для изучения грамматики завести другой топик.
...
Рейтинг: 0 / 0
Количество ХП
    #33185306
Programmer_Ortodox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хе-хе, имелся ввиду язык программирования!
...
Рейтинг: 0 / 0
Количество ХП
    #33185332
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Programmer_Ortodoxхе-хе, имелся ввиду язык программирования!ОК. Принимается.
...
Рейтинг: 0 / 0
Количество ХП
    #33185686
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Programmer_Ortodoxхе-хе, имелся ввиду язык программирования!
Попытки 1С перевести SQL на русский... что то коробит меня от этого ;)
...
Рейтинг: 0 / 0
Количество ХП
    #33185708
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets Programmer_Ortodoxхе-хе, имелся ввиду язык программирования!
Попытки 1С перевести SQL на русский... что то коробит меня от этого ;)Ну вот, это же шутка Programmerа_Ortodoxа.

А вот серьезно, на счет языка. У меня есть опыт проведени курсов по SQL 2000 в местном универе. Синтаксис, основные операторы осваиваются за несколько часов. При этом не зависимо от специальности. Бухгалтера идут практически на уровне с прикладной математикой. Вся дальнейшая работа - это изучение программирования как такового. Поэтому совершенно не важно, на коком языке записывать программы. Важны технология, стиль, чувство компьютера, пользователя, ориентировка в задаче.
...
Рейтинг: 0 / 0
Количество ХП
    #33185760
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVPА вот серьезно, на счет языка. У меня есть опыт проведени курсов по SQL 2000 в местном универе. Синтаксис, основные операторы осваиваются за несколько часов. При этом не зависимо от специальности.
Кхе SQL единственный язык из 4-х команд S,U,I,D, ну из 6-ти если брать Drop и Create, и не брать Transact/PL составляющую.
...
Рейтинг: 0 / 0
Количество ХП
    #33185774
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets PVPА вот серьезно, на счет языка. У меня есть опыт проведени курсов по SQL 2000 в местном универе. Синтаксис, основные операторы осваиваются за несколько часов. При этом не зависимо от специальности.
Кхе SQL единственный язык из 4-х команд S,U,I,D, ну из 6-ти если брать Drop и Create, и не брать Transact/PL составляющую.Не знаю, как на счет единственного, но на работая только на этом языке при наличии хорошого инструментария и хорошо ориентируюясь в предметной области можно делать сложнейшие системы. А какая цель изучения языка программирования? Это только инструмент, не более. Если он позволяет решать стоящие задачи, то этого достаточно. Заточите топор со всех сторон, легче будет рубить дрова?

И еще, между нами, девочками. Давайте откроем содержание по описанию T-SQL и посмотрим, сколько там ключевых слов, сколько функций, SETов, потом заглянем на DMO. Там их окажется побольше шести. Интересно, Вы их все помните? Так, что бы писать без подглядывания в Help.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Количество ХП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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