Prashant Bangaluru Ответов: 1

Ограничьте доступ пользователей к двум представлениям SQL


Всем Привет,

Мы столкнулись с проблемой производительности в SQL и позже определили, что это происходит из-за пользователей, выполняющих запросы клиентов. Пользователи имеют ограниченный доступ к БД, и они могут запускать только представления SQL.

Позже мы заметили, что пользователи присоединяются к нескольким представлениям и делают это большим запросом, вызывая проблемы с производительностью.

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

Заранее спасибо.
С уважением
Прашант

Что я уже пробовал:

1. погуглил, чтобы найти, можем ли мы ограничить доступ к пользователям, но понял, что нет никакого способа ограничить бизнес.

2. проверил у других людей, не сталкивались ли они с такой же ситуацией, но безуспешно.

Afzaal Ahmad Zeeshan

1) обновите свои машины, это лучший вариант.

2) Создайте для них представления, а затем отзовите их доступ для определения новых запросов.

1 Ответов

Рейтинг:
1

Wendelius

В общем случае объединение нескольких представлений в одном запросе затруднительно для оптимизатора, особенно если условия используются извне представлений.

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


Prashant Bangaluru

Спасибо за ответ . Похоже, мы не можем ограничить объединение 2 SQL-представлений.

Wendelius

- Вот именно. Ваш вопрос звучит так, как будто ваши пользователи выполняют запросы анализа данных в транзакционной базе данных (OLTP). Если это так, то я бы рекомендовал создать отдельную базу данных для отчетности и перенести туда данные в формате, более удобном для отчетности.

Взгляните на Хранилище данных-Википедия[^] и Извлечение, преобразование, загрузка-Википедия[^]

Prashant Bangaluru

Да, пользователи запускают запрос анализа данных и вызывают нагрузку на сервер.
Я определенно подумаю об этом. Мой другой план состоит в том, чтобы загрузить данные однодневной давности в систему UAT и попросить их использовать эту систему.