Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Формулирование требования по быстродействию  [new]
forrfor
Member

Откуда:
Сообщений: 49
Добрый день!

Мне необходимо написать достаточно сложную хранимую процедуру, возврающую результаты в виде таблицы. Для этого я хочу обратиться к фрилансерской помощи. Как одно из требований: мне важно, чтобы эта прцедура выполнялась на моем конкретном сервере с моими конкретными данными не дольше, положим, 10 секунд. Но при этом, я догадываюсь, что сформулировать такое требование не совсем корректно и объективно, т.к. у исполнителя нет гарантий, что я не изменю нагрузку на сервер, не изменю его конфигурацию, не увеличу количество данных ну и много других факторов. Как принято формулировать подобные задачи? Я никогда с этим не сталкивался. Спасибо.
25 фев 14, 19:36    [15628563]     Ответить | Цитировать Сообщить модератору
 Re: Формулирование требования по быстродействию  [new]
forrfor
Member

Откуда:
Сообщений: 49
Я думаю, также полезно добавить, что для разработки я предполагаю предоставить доступ к этому самому удаленному серверу, на котором и нужно, чтоб выполнялось требование 10 сек. Доступ только в базу через Management Studio. Не RDP, разумеется.
25 фев 14, 19:50    [15628630]     Ответить | Цитировать Сообщить модератору
 Re: Формулирование требования по быстродействию  [new]
Сид
Member

Откуда: Москва
Сообщений: 305
forrfor,

Не факт, что требование "чтоб работало не более 10 секунд" выполнимо в принципе. Может железо не потянуть, может архитектура отличаться изрядной кривизной, отсутствие индексов и т.д. и т.п. Сама по себе ХП может быть написана "идеально", но это не гарантирует выполнение требования по производительности, т.к. есть ещё куча других влияющих факторов.

По поводу фрилансерской помощи - готов рассмотреть предложение, почта в профиле.
25 фев 14, 19:53    [15628649]     Ответить | Цитировать Сообщить модератору
 Re: Формулирование требования по быстродействию  [new]
forrfor
Member

Откуда:
Сообщений: 49
Сид
forrfor,

Не факт, что требование "чтоб рабосложне более 10 секунд" выполнимо в принципе. Может железо не потянуть, может архитектура отличаться изрядной кривизной, отсутствие индексов и т.д. и т.п. Сама по себе ХП может быть написана "идеально", но это не гарантирует выполнение требования по производительности, т.к. есть ещё куча других влияющих факторов.


Пожалуйста-пожалуйста.. Я могу предварительно дать доступ посмотреть, что как устроено. Если исполнитель считает, что это сложно, можно сначала дать некоторое время поэкспериментировать и после этого он может сказать что он может. Но все равно, после всего этого какие критерии мы можем сформулировать, чтобы убедиться, что работа выполнена?
25 фев 14, 20:24    [15628837]     Ответить | Цитировать Сообщить модератору
 Re: Формулирование требования по быстродействию  [new]
Сид
Member

Откуда: Москва
Сообщений: 305
forrfor
Сид
forrfor,

Не факт, что требование "чтоб рабосложне более 10 секунд" выполнимо в принципе. Может железо не потянуть, может архитектура отличаться изрядной кривизной, отсутствие индексов и т.д. и т.п. Сама по себе ХП может быть написана "идеально", но это не гарантирует выполнение требования по производительности, т.к. есть ещё куча других влияющих факторов.


Пожалуйста-пожалуйста.. Я могу предварительно дать доступ посмотреть, что как устроено. Если исполнитель считает, что это сложно, можно сначала дать некоторое время поэкспериментировать и после этого он может сказать что он может. Но все равно, после всего этого какие критерии мы можем сформулировать, чтобы убедиться, что работа выполнена?


Сложно или не сложно - без конкретной задачи сказать сложно (простите за тавтологию).
А без экспериментов на незнакомой базе никак-никак нельзя :) Надо познакомиться с базой, немного пообщаться, а потом уже начинать серьёзные отношения.
Критерий выполнения работы - один: работает как просили - выполнено, не работает - не выполнено. Работает правильно, но слишком долго - повод ещё раз посмотреть, что можно улучшить: переписать код, проанализировать индексы и т.д., а может быть вообще придти к выводу, что всё гениально (и код, и архитектура), но просто упёрлись в железо. А может оказаться наоборот: архитектура плохая, индексов нет или они плохие, код ужасен, но всё равно работает очень быстро (и даже правильно).
Собственно, всё зависит от конкретной задачи.
25 фев 14, 20:43    [15628952]     Ответить | Цитировать Сообщить модератору
 Re: Формулирование требования по быстродействию  [new]
forrfor
Member

Откуда:
Сообщений: 49
Сид
Критерий выполнения работы - один: работает как просили - выполнено, не работает - не выполнено.

Ну вот приведите пример какую формулировку придать моей задаче, чтобы мы потом вместе могли оценить "выполнено как просил или не как просил". Конечно, после того, как Вы познакомитесь с базой, все посмотрите, проанализируете индексы, мы пообщаемся, обсудим детали.
25 фев 14, 21:08    [15629105]     Ответить | Цитировать Сообщить модератору
 Re: Формулирование требования по быстродействию  [new]
Сид
Member

Откуда: Москва
Сообщений: 305
forrfor
Сид
Критерий выполнения работы - один: работает как просили - выполнено, не работает - не выполнено.

Ну вот приведите пример какую формулировку придать моей задаче, чтобы мы потом вместе могли оценить "выполнено как просил или не как просил". Конечно, после того, как Вы познакомитесь с базой, все посмотрите, проанализируете индексы, мы пообщаемся, обсудим детали.


Увы, я не спец по части формулировок. Я привык решать задачи/проблемы сразу на T-SQL, а в сложных случаях - предварительно порисовать на салфетке или даже на бумажке A4. При том, иногда проблемы/задачи вообще никак не сформулированы или заказчик (внутренний) не понимает, что ему надо. Но это, естественно, уже после нескольких лет совместной жизни с системой, что не есть наш случай.
"Выполнено как просили" - значит на выходе получаем ровно то, зачем собственно создавалась процедура. Когда всё на месте и ничего лишнего. Если исполнитель не учёл озвученные нюансы - не выполнено. Если заказчик забыл озвучить нюансы, и они вдруг всплыли - выполнено, а эти новые нюансы - уже новая задача.

А откуда взялись эти самые 10 секунд? В чём заключается суть процедуры? Может, всё в 1 секунду уложится даже в самом худшем случае.
Предлагаю начать именно с задачи: "нужно, чтобы ... ... ... с оптимальной производительностью", и "P.S. если в архитектуре/индексах обнаружатся проблемы, предложить решение (чтоб потом оценить его с оглядкой на остальную нагрузку)".
Фраза про оптимальную производительность как раз подразумевает, что код будет написан с учётом имеющейся архитектуры и создаст минимум нагрузки на сервер. А если оптимального кода недостаточно, смотрим в P.S., где уже будет более глубокий анализ и может быть поиск компромиссов.

Примерная последовательность работ:
1) задача (что хотим получить) - в любом виде, главное чтоб было более-менее понятно
2) знакомство с теми таблицами, которые будут задействованы (размеры, внешние ключи, индексы)
3) обсуждение нюансов, если будут (а если процедура и правда сложная, то будут)
4) примерное решение
5) быстрое решение (если по п.4 не получилось быстро)
х) надо ещё не забыть утрясти финансовый вопрос, я отталкиваюсь от предложения (это после 2 или 3 пункта)

Почта всё ещё в профиле.
25 фев 14, 22:13    [15629345]     Ответить | Цитировать Сообщить модератору
 Re: Формулирование требования по быстродействию  [new]
forrfor
Member

Откуда:
Сообщений: 49
Сид,

На сайте есть поиск. Результат процедуры - результат поиска на сайте. 10 секунд, по моему мнению, комфортное время ожидания. Больше - хуже. Это для меня важно. И вот Вы все посмотрели, изучили, мы обсудили фин.вопрос. и говорите, что готовы взяться. Я Вас спрашиваю: "это будет работать до 10 секунд?" У Вас три варианта ответа:
1) Да
2) Нет
3) Не знаю/посмотрим/это будет зависеть от.../станет известно ближе к концу работы и т.д.

Разберем в обратном порядке:
3) В случае 3 я не смогу с Вами заключить сделку, т.к. если результат не будет укладываться в 10 секунд, Вы будете настаивать, что всё сделали идеально, 10 секунд не обещали и что работа выполнена правильно. И будете правы. Я не получу, что хотел, но деньги потеряю.
2) Если нет, то я тоже не смогу с Вами заключить сделку.
1) Вы вряд ли сами согласитесь, т.к. не будете чувствовать, что полностью контролируете ситуацию.

Вот Вы, допустим, посмотрите базу и увидете, что проблем быть не должно и уложиться можно в 10 сек с лихвой. Вы мне что скажете? Да? Нет? Не знаю?
25 фев 14, 22:33    [15629411]     Ответить | Цитировать Сообщить модератору
 Re: Формулирование требования по быстродействию  [new]
Сид
Member

Откуда: Москва
Сообщений: 305
forrfor
Сид,

На сайте есть поиск. Результат процедуры - результат поиска на сайте. 10 секунд, по моему мнению, комфортное время ожидания. Больше - хуже. Это для меня важно. И вот Вы все посмотрели, изучили, мы обсудили фин.вопрос. и говорите, что готовы взяться. Я Вас спрашиваю: "это будет работать до 10 секунд?" У Вас три варианта ответа:
1) Да
2) Нет
3) Не знаю/посмотрим/это будет зависеть от.../станет известно ближе к концу работы и т.д.

Разберем в обратном порядке:
3) В случае 3 я не смогу с Вами заключить сделку, т.к. если результат не будет укладываться в 10 секунд, Вы будете настаивать, что всё сделали идеально, 10 секунд не обещали и что работа выполнена правильно. И будете правы. Я не получу, что хотел, но деньги потеряю.
2) Если нет, то я тоже не смогу с Вами заключить сделку.
1) Вы вряд ли сами согласитесь, т.к. не будете чувствовать, что полностью контролируете ситуацию.

Вот Вы, допустим, посмотрите базу и увидете, что проблем быть не должно и уложиться можно в 10 сек с лихвой. Вы мне что скажете? Да? Нет? Не знаю?


По-моему, 10 секунд - не совсем комфортное время ожидания для сайта. И раз это поиск, скорее всего, есть 100 способов сделать его комфортнее, чем 10 секунд. И я заранее прогнозирую один из вопросов по части нюансов: по каким критериям ищут чаще всего? И скорость может зависеть именно от критериев поиска (пока что это голое предположение).

Подобные работы - всегда риск: и для заказчика, и для исполнителя. Например, я рискую тем, что я потрачу некоторую часть личного времени, а в итоге оно не будет оплачено. И расставить точки над ё мы сможем только после знакомства с задачей и базой.

По поводу вопросов: скорее всего, будет вариант или 1, или 2, но может быть и 3. Нужно сначала посмотреть изучить. А в процессе изучения, когда, например, известны критерии поиска, можно будет уже делать какие-то прогнозы.
По поводу собственной идеальности я не строю иллюзии, т.к. идеального кода не существует, и его можно улучшать бесконечно. Вопрос лишь в масштабах улучшения: в 100 раз или на 0,01%.
По поводу контроля ситуации - при работе с БД, увы, нельзя заранее рассчитать, как долго будет работать та или иная процедура. А если и можно, то всё равно написать процедуру, запустить и посмотреть реальное время - гораздо быстрее.

Финансовый риск можно сгладить следующим образом: если отвечаю "да", но объективно не справляюсь на 100%, в качестве оплаты получаю просто опыт (жизненный).
25 фев 14, 22:55    [15629482]     Ответить | Цитировать Сообщить модератору
 Re: Формулирование требования по быстродействию  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
forrfor,

при такой занудной нерешительности можно сдохнуть как тот осел меж двух копён
при любой работе первым этапом делают прототип, чтобы делал то что надо, может и не быстро
за него можете положить часть денег
дальше придется оптимизировать может и не один раз до приемлемой производительности
сначала на тестовых данных, потом на живых, потом через год, два.... на все более разрастающихся
да под все возрастающей нагрузкой
за каждый этап придется платить без вариантов
25 фев 14, 23:05    [15629512]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить