Имя: Пароль:
1C
 
RLS и привилегированный режим.
0 DrLekter
 
17.06.19
08:10
Дано: запрос, получающий остатки по регистру накопления типа остатки. Сравнительно небольшая файловая БД (15 Гб всего). Два пользователя, у одного настроено ограничение на уровне записей на одно из измерений регистра. Запрос выполняется с ключевым словом "РАЗРЕШЕННЫЕ". У первого пользователя (с ограничением) скорость выполнения запроса значительно меньше, чем у второго - все логично.
Выношу запрос в привилегированный общий модуль, убираю "РАЗРЕШЕННЫЕ". Скорость выполнения запроса у ограниченного пользователя существенно увеличивается, но разница все равно остается! Среднее время выполнения отличается примерно втрое. Для чистоты эксперимента проверял на одном и том же пользователе, включая и отключая ему RLS.
Создается впечатление, что несмотря на привилегированный режим, какие-то проверки все же происходят. Почему так? Я считал, что в привилегированном режиме RLS вовсе игнорируется.
1 leonidkorolev
 
17.06.19
12:04
(0) При выполнении на сервере действительно РЛС не отрабатывает, запрос должен выполнятся быстрее. Но при отображении на клиенте для каждой строки будет отрабатывать проверка РЛС, можно ли показывать клиенту эти данные.
2 DrLekter
 
17.06.19
12:21
Дело в том, что данные о времени выполнения я взял из замера производительности. Это время относится к строке "Результат = Запрос.Выполнить()", это же сервер.
3 leonidkorolev
 
17.06.19
12:34
Наверно особенности файлового режима
4 Cyberhawk
 
17.06.19
13:12
Может ты сначала разогреваешь БД, а потом уже второй запрос замеряешь?
5 НЕА123
 
17.06.19
13:18
(2)
>Это время относится к строке "Результат = Запрос.Выполнить()"
это время раньше было ни о чем. сейчас что-то поменялось?
6 DrLekter
 
17.06.19
16:22
(5) то есть - ни о чем? Не соответствует действительности?
(4) я делаю несколько замеров поочередно. Ситуация не сильно меняется, в пределах погрешности.
7 Cyberhawk
 
17.06.19
16:26
В серверной сравни. И огласи платформу и режим совместимости - были там относительно недавно какие-то оптимизации в этом плане.
8 DrLekter
 
18.06.19
06:28
В серверной разница порядка 10% всего. Видимо, действительно, файловые особенности. Платформа 8.3.1644, режим совместимости 8.2.16.
9 Cyberhawk
 
18.06.19
09:29
Еще бы в файловой на разных режимах совместимости проверил и огласил
10 DrLekter
 
18.06.19
13:00
В файловой с аналогичным режимом совместимости среднее время выполнения запроса 0.023 - 0.025 с отключенными ограничениями, 0.08... с включенными.
С режимом совместимости "не использовать" результаты 0.082 и 0.087 соответственно. То есть отличия в скорости почти пропали, как на клиент-серверной, но в режиме совместимости с 8.2.16 запрос без RLS работает примерно втрое быстрее.
11 Cyberhawk
 
18.06.19
16:59
Не понял. У тебя в файловой без режима совместимости запрос с РЛС стал в три раза медленне работать, чем тот же самый запрос (с РЛС), но в режиме совместимости?
12 DrLekter
 
18.06.19
17:03
Нет, с РЛС как раз ситуация не поменялась. Без совместимости замедлился запрос без РЛС и выровнялся по времени с РЛСным.
13 Cyberhawk
 
18.06.19
17:07
Жоско че-то
14 DrLekter
 
18.06.19
17:12
Я тоже в шоке.
Был бы ещё запросище, а то ведь самые простые. Ну да ладно, в клиент-серверной он ведет себя более предсказуемо, что в одно режиме, что в другом.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший