8.х Файл-серверная vs клиент-серверная

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем nbIpKuH_BaH9I, 18 сен 2014.

  1. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Всем привет. Есть у меня есть конфа (полностью своя). Автоматизация общепита. Есть раскладка продуктов. Т.е. есть блюдо и в это блюдо входят ингредиенты. Себестоимость блюда рассчитывается как сумма себестоимости всех ингредиентов. Приходит ко мне пользователь и говорит, мл очень медленно происходит расчет. Типа минут 5. Переписал я все это дело и начал тестировать. Мой комп (файловая) и комп с SQL по мощности одинаковые. Но в файловой в разы быстрее все отрабатывает. Почему? Вот мои тесты :) Время в секундах. Тестировалось на разных по объему документах (6 документов). Old - старый механизм, New - новый.
    Безымянный.JPG
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.556
    Симпатии:
    716
    Баллы:
    204
    Потому что в случае К-С происходит потеря времени на:
    1. Трансляцию кода 1С в код T-SQL
    2. Получение данных от SQL
    3. Трансформация данных SQL в формат 1С

    преимущества К-С в количестве одновременно работающих пользователей. все.
    Скорость работы 1-го пользователя в К-С никогда не будет выше скорости работы 1-го пользователя в файловом варианте, а 20 пользователей можно сказать поставят раком файловый вариант, в то время как К-С будет только разминаться :)
  3. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Хорошо. Тогда почему запрос на SQL отрабатывает раз в 10 быстрее?
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.556
    Симпатии:
    716
    Баллы:
    204
    ну откуда ж я знаю :), могу тока догадываться, что у SQL именно в этом случае правильно работает кэширование, индексы и прочие ускорители выборки данных.
    В файловом варианте все сильно зависит от подсистемы хранения данных, от системы кэширования подсистемы хранения данных ОС, подсистемы кэширования данных сетевых протоколов ОС и прочих подсистем
  5. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.433
    Симпатии:
    373
    Баллы:
    104
    ну как минимум код смотреть, учитывая серверный вариант

    и кстати, УП или простая?
  6. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.433
    Симпатии:
    373
    Баллы:
    104
    если УП, есть вот книжка такая "Разработка управляемого приложения"

    http://www.v8.1c.ru/metod/books/book.jsp?id=231

    там глава №4 называется "Оптимизация клиент-серверного взаимодействия"
    там всё с цифрами показано, временем и объёмами данных

    объединение вызовов в один при возможности, допустим не по одному реквизиту получать, а один раз все нужные потом.
    внеконтекстные вызовы серверных процедур
    использование клиентских процедур, например могут для того чтоб сложить 2+2 утащить всю форму на сервер, там выполнить сложение, и потом всё это вернуть на клиента
    и т.д. и т.п.

    там вот есть пример который вполне может иметь место у вас быть:
    там в примере по кнопке на форме пересчитываются цены, ну и суммы соответственно, в строках
    в первом варианте там результат - 28 вызовов, отправлено 11 327 байт, принято 161 774 байта
    во втором - 1 вызов, отправлено 1 666 байтов, принято 204 863 байта
  7. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.556
    Симпатии:
    716
    Баллы:
    204
    Имхо, данное сравнение вообще мягко говоря фигня, потому что:
    1-е и самое главное: не известно каким образом располагаются файлы баз данных, файлы лога транзакций, какая модель восстановления бд, выделен ли диск под темпдб, правильно ли это сделано, какая версия скуля, правильно ли сделана разметка и форматирование дисков под хранение файлов бд, x86 или таки х64.....вопросов больше, чем ответов.

    В общем, если в К-С заметно ускорени после оптимизации - значит тебе не зря платят деньги :)
  8. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Обычные формы.
    Самый незаурядный пример. Есть у меня регистр сведений. Спроектирован он не правильно сразу говорю. Непериодический. Подчинен регистратору (документ один). Вот его структура
    upload_2014-9-19_8-46-30.png
    Все измерения не индексированы.
    Простой запрос на рабочей базе (SQL) выполняется
    upload_2014-9-19_8-47-37.png
    И вот тот же самый запрос на локальной базе
    upload_2014-9-19_8-51-41.png
    Данные в регистре идентичны. Их 1 461 266. Как объяснить?
  9. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    Ну с этим Вы явно погоречились. Я посмотрю как у вас файловый вариант 3 раза в день у одно пользователя будет выборки делать по 100 000 записей и К-С, который это в лог положит а потом оттуда тащить будет.

    С чем я согласен так это с 7 постом, что бы сравнивать производительность скуля то надо знать все эти параметры.
    Производяительность от скуля получается не тем что только скуль поставили, но и тем как это все оптимизировали. Что файла разнесли на разные диски. какие RAID на этих дисках. Что индексы ребилятся, статискиса собирается, автошринк не стоит, место выделено нормально что бы дефрагментации не было и т.д.
    --- Объединение сообщений, 19 сен 2014 ---
    Тем что он эти данные уже в лог поместил и оттуда тянет, а не заново считывает из базы
  10. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Когда успел то? Или они там всегда хранятся?
  11. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.556
    Симпатии:
    716
    Баллы:
    204
    Ты сервер SQL перед замером рестартуешь что ли? :)
    Или хотя бы Detach-Attach базы делаешь....
  12. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Просто дело в чем. SQL обслуживаю не я. Что очень хотелось. Но что есть то есть. И закрались у меня сомнения, что чел, который обслуживает лукавит и делает не все в лучшем виде. Да, не спорю, сервак слабоват. 32 ОЗУ, 2 проца по 1,86 Ггц и по 4 ядра. RAID из 10 винтов по 80 ГБ. Больше мать не тянет. Но иногда возникают просто такие ужасные тормоза в работе. Вот я хочу найти причину.
    --- Объединение сообщений, 19 сен 2014 ---
    Вчера да. Там тестовый был :)
  13. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.556
    Симпатии:
    716
    Баллы:
    204
    /offtopic on/
    Жил-был один еврей-портной. Он делал на продажу разные одежки, но дела в его маленьком бизнесе шли, мягко сказать, не очень. И вот, в один прекрасный день портной, уже потеряв всякую надежду на обеспеченную старость, вскинул руки к небу:
    - Ну что мне сделать, что бы мой товар был востребован на рынке?!!!!
    и тут с неба в ответ он услышал:
    - Крокодилы....
    - Какие, к черту, крокодилы, ты о чем, о великий?.......
    - КРОКОДИЛЫ!!!!
    ......

    В общем, так появилась одежда под торговой маркой Lacoste :)
    /offtopic off/
    Так вот, к чему это я, из моей практики, основной причиной снижения быстродействия SQL были проблемы с индексами.
    Я до сих пор пока не понимаю почему, но факт остается фактом: реиндексация БД спасала в 90% случаях, остально - разница в количестве обрабатываемых данных.
  14. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    Ну ты как только запрос подобный выолнил он его в лог и записал и в статистику. Даже в след раз если в логе этой инфы не будет по статистике он тебе построит более оптимальный запрос выдаст данные быстрее. В логе данные храняться пока ты лог не шринкуешь или у тебя его бэкап не делается.
    Что касается сервака, то и на таком омжно выдавать просто грамотно разложить. Вот что там за RAID стоят? на разных ли дисках log файл, файл данных, tmpDB. Какие RAID? Наверное 0 или 1й хотя можно выделить нормально места под лог и файл данных сделать на 5 Raid что бы данные считывались оттуда быстрее. Много всего. Про те же индексы. Может там только Реорганайз их стоит, но не ребилдятся они....
  15. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    nomad_irk, я иногда тебя не понимаю вообще. Твоя притча мой мозг взорвала :D
    Что касается именно 1С, то регламентные операции я всегда выполняю. ТиИ с реиндексацией и прочую херь. А вот с SQL сложнее. Не дают его мне.
    хз...
    Знаю только, что 10 HDD по 80 ГБ. SQL установлен на диске С. На D хранятся все базы. Есть еще E под логи и темпы. На диске с гигов 70. На E около 100, остальное под базы на D. Больше никакой инфой не владею. :(
  16. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.556
    Симпатии:
    716
    Баллы:
    204
    Если уж совсем по фэншую делать, то нужна "полка" дисков :)
    Ибо каждую БД желательно размещать на отдельный массив/диск , каждый файл транзакций - так же, не говоря уж о файлах темпДБ и бэкапах.

    Более того, если у тебя OS, на которой крутится SQL - SERVER 2003, то необходимо правильно разметить диски под хранение файлов БД
    (в Server 2008 и выше эта проблема решена, но диски надо размечать именно с помощью средств ОС), в общем там поле для деятельности администратора БД :)
    nbIpKuH_BaH9I нравится это.
  17. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    Ну вот как ты сказал что на одном диске базы. так вот представим что там не 5 й райд. т.е мы сможем считать данные одновременно с одного винта, так вот ктото задал запрос к одно БД. Головка перемистилась и начала считывать и тут твоя конфа то же что то должна получить и то же надо считать с винта, мало того что она будет ждать пока выполниться тот запрос потом будет ждать опка головки переместятся обратно к твоим данным и только полсе этого выдаст. Т.е по идее может лучше каждый день делать бэкапы и на каждый винт сделать по базе, чем делать raid и места будут только на то что что бы все в куче было. Надо анализировать. Систему на RAID, основную базу, время разворота которой критично то же на RAID, остальные можно и просто. Ну это надо смотреть.
    В инете инфы полно
    nbIpKuH_BaH9I нравится это.
  18. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    тут особо понимать нечего - фрагментация (как и в файловой системе) приводит к увеличению количества операций чтения, а отсутствие нормальной статистики - к выбору не всегда оптимального плана запроса (в качестве примера - если по статистике в левом соединении приедет 1-2 записи справа - sql попользует nested lookup, даже если есть индекс, а если в реальности приедет 1000 записей - будет тормоз)

    нафига схд при одном сервере? был бы кластер sql 2008 - имело бы смысл, с 2012 уже нет - там AlwaysOn.
    лучше размер базы зафиксировать в состоянии, которого она достигнет через пару лет работы, и лога - в 2 максимальных размера между бэкапами - меньше будет фрагментация файлов

    а так - да, смотреть физическое расположение и регламенты.
    Тут все просто - кластерный индекс, дата в нем вторая, соответственно искать хоть и не так просто, как если бы она была первой, но проще. файловая будет тупо сканить всю таблицу
    nbIpKuH_BaH9I нравится это.
  19. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Думаю здесь ты прав на 100%. Помнится мне, что когда на 2-ой базе пользователь запустит отчет какой нить не хилый, за год. То виснет все напрочь. Будем думать :)
  20. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.433
    Симпатии:
    373
    Баллы:
    104
    хм, если данные в базах идентичны, запрос идентичен, то почему результат в разном виде?

Поделиться этой страницей