В Сети пользователи частенько задают вопрос: в чем причина того, что файловая система обрабатывает запросы быстрее, чем 1C+MSSQL.
Предположений, в чем же кроется причина данной ситуации, много. Чаще других встречаются две версии. Первая основывается на том, что так и должно быть: файловый вариант всегда работает быстрее. Приверженцы второй версии утверждают, что 1С плохо работает с системой управления базами данных (СУБД), поэтому и обрабатывает запросы медленнее файловой версии.
Попробуем внимательно рассмотреть проблему и ответить на интересующих многих вопрос: что же быстрее – 1C+MS SQL или файловый вариант?
В первую очередь рассмотрим сравнительную таблицу двух вариантов 1С – файлового и серверного.
|
Файловая 1С |
Клиент-серверная 1С |
Максимальный размер таблицы |
4 gb |
~сотни терабайт |
Размер таблицы, при котором 1С начинает работать медленно |
~16 Gb |
~500-1500 Gb |
Число пользователей, при котором 1С работает безупречно |
3-10 (при большем количестве пользователей появляются табличные блокировки) |
300-700 (если есть необходимость в большем количестве пользователей, требуется более мощное железо и оптимизация кода) |
Функции, потребляющие ресурсы, которые обеспечивают высокую производительность |
Нет |
Транзакционная целостность данных, логирование операций для дальнейшего анализа, функции повышения параллельности работы пользователей |
Преимущества |
Простота использования за счет малого количества функций |
Обслуживание данных (к примеру, резервное копирование) без остановки работы пользователей |
Минимальная область блокировки |
В таблице, т.к. требуется меньшее количество ресурсов) |
В записях, т.к. требуется больше ресурсов) |
Примерная стоимость владения |
Невысокая |
Значительно больше файловой |
Наличие промежуточного этапа между пользователем 1С и СУБД |
Нет |
Сервер 1С |
Сделаем предварительные выводы, исходя из полученных нами данных.
Итак, файловый вариант срабатывает оперативнее в том случае, если его функционирование не зависит от действий клиентов в базе.
В этом легко удостовериться, проведя небольшое тестирование - возьмите нагрузочный тест проверьте и в файловом, и в серверном вариантах.
Если же такой способ оказался не совсем убедительным, проверьте и в одном, и в другом вариантах любую операцию. Для примера возьмем «закрытие месяца». Вводим операцию в файловый вариант и тестируем. Стоит помнить, что подобный тест возможен только в том случае, если размер базы не превышает 4 гигабайт. Если же данный показатель превышен, то можно с уверенностью сказать, что файловый вариант не подходит для выполнения этой операции.
Теперь попробуем отобразить скорость обработки запроса в двух вариантах 1С в цифрах.
1. Операции средней сложности файловый вариант обрабатывает примерно в два раза быстрее.
2. С операциями средней сложности, при которых объем оперативной памяти меньше объема обрабатываемых данных, файловый вариант 1С справляется в 3 или 2 раза быстрее серверного варианта.
Давайте теперь определимся с таким понятием, как операция средней сложности. Если подробно разобраться, то получается, что некоторые операции, которые обработаются в серверном варианте, выполняются даже быстрее, чем в файловом. Но мы не берем их в расчет, так как их количество незначительно в общем объеме выполняемых операций. Основную массу составляют операции, которые обращаются к дисковой подсистеме для чтения или записи информации. Кстати, даже самые примитивные операции записывают данные, к примеру, в базу tempdb, если используется MS SQL Server.
Вернемся к файловому варианту. При введении запроса операция не обращается к серверу 1С, а это значит, что существенно экономится время обработки запроса. Тормозят работу серверного варианта и некоторые функции СУБД, ведь используются они зачастую не только для выполнения запросов, но и для обеспечения комфортной работы с другими запросами. Рассмотрим данную ситуацию на примере блокировки используемых данных: серверный вариант делает эту работу более тщательно, чем файловый, который зачатую блокирует нужные данные. Блокировка всей таблицы проходит гораздо быстрее, потому что появляется всего одна запись о блокировке, а блокировка тысячи строк таблицы – процесс более длительный и затратный в плане ресурсов: процессора, используемой памяти и даже места на диске. Таким образом, можно сделать вывод, что серверный вариант требует большее количество ресурсов, чем файловый, для выполнения одинакового объема работы.
Проанализировав все вышеизложенное, у многих может возникнуть резонный вопрос: почему же серверный вариант, более затратный по времени и использованным ресурсам, используется гораздо шире, чем экономичный файловый?
Для ответа на этот вопрос следует ответить на следующий: насколько эффективно работает файловый вариант в режиме, когда пользователи активно используют одни и те же ресурсы, к примеру, при продаже товара постоянно проверяют его наличие на складе?
Обратившись к таблице, мы видим, что огромным минусом файлового варианта является небольшой размер базы данных, на многих предприятиях 1С и ее базы данных занимают несколько сотен гигабайт. А так как файловый вариант может накладывать ненужные блокировки, значительно затрудняется работа нескольких пользователей одновременно.
Разберем данную ситуацию на конкретном примере. Возьмем предприятие, на котором с 1С работает 10 человек. Каждый из пользователей в день вводит, например, 10 документов, в которых 10 табличных строк. Путем нехитрых вычислений получаем 1000 строк, что вводят в систему каждый день.
Условимся, что каждый пользователь работает с определенными документами и запросы разных пользователей не пересекаются друг с другом. Так как в серверном варианте исключена возможность ненужных блокировок, запросы будут проводиться параллельно, т.е. система будет работать без простоя и сбоев.
Теперь предположим, что 10 пользователей одновременно нажмут кнопки при проведении первых в день документов. Время блокировки в файловом варианте примерно 20 секунд. То есть первый пользователь осуществит проведение документа сразу, а вот всем остальным придется ждать еще по 20 секунд друг за другом. Рассчитаем время простоя: 10 пользователей*1 документ*20 сек. Получаем 200 секунд ожидания!
Согласитесь, ждать каждый раз больше трех минут пользователи не станут, ведь они не знают, заблокирована система или можно проводить документ. Поэтому вывод, который они сделают, - система не работает, соответственно, работать с ней невозможно. Таким образом, может остановиться работа всего предприятия. Представляете масштабы убытков?
Даже если предположить, что попытки введение документа будет осуществляться автоматически, время простоя все равно останется прежним.
Если же добавятся еще несколько документов, то файловый вариант накопит примерно 5 (!) часов простоя!
Теперь вернемся к серверному варианту, который, как мы выяснили ранее, работает медленнее файлового. Да, данные будут вводиться медленнее, но они будут обрабатываться, в то время как в файловом варианте будут простаивать из-за блокировок!
Так как на предприятии с 1С работает не один человек, а несколько, понимаем, что важен результат (производительность) работы всех, а не каждого по отдельности. Соответственно, важно, сколько всего данных будет введено. И в данной ситуации становится очевидным, почему серверный вариант пользуется такой популярностью: он превосходит файловый по коллективной производительности в сотни раз.
Поставим последний вопрос: насколько важна для предприятия скорость работы двух вариантов 1С? Файловый вариант в однопользовательском режиме опережает серверный в несколько раз, зато в многопользовательском проигрывает в сотни раз. Преимущество явно не в пользу файлового. Далее поговорим о надежности защиты данных, обеспечении стабильной работы и исключении возможности сбоя. Естественно, мы понимаем, что и здесь в выигрыше остается клиент-серверный вариант. Рассмотрим это преимущество на конкретном примере. Если случайно произойдет отключение электричества, в файловом варианте данные могут остаться лишь частично, в то время как серверный вариант обеспечит целостность всех данных.
Сделаем вывод: файловый вариант проигрывает серверному не только в скорости (чем больше пользователей, тем больше время простоя и, соответственно, больше убытки), но в обеспечении сохранности данных.
Если понятно, что использование серверного варианта значительно выгоднее файлового, то почему с завидной периодичностью появляются вопросы на форумах о скорости этих вариантов? Любой вопрос начинается с проблемы, проблема невысокой скорости в серверном варианте беспокоит пользователя, и он начинает искать ее решение. Решение находится в файловом варианте, который, по мнению то же пользователя, работает быстрее. Но пользователь не принимает во внимание, что проблема вовсе не в серверном варианте, а в «посреднике», которого нет в файловом.
Сравнивать скорость работы файлового и серверного варианта применительно ко всем операциям нецелесообразно. Следует определять, что замедляет работу в каждом конкретном случае. В первую очередь нужно расписать все операции, задействованные в системе, а потом уже детально рассматривать каждую из них, причем начинать следует именно с той, что замедляет систему больше остальных.
По материалам http://infostart.ru/public/174086/