Назад | Перейти на главную страницу

Дросселировать или ограничивать ресурсы, используемые пользователем в базе данных?

Я хотел бы знать, как базы данных (например, MySQL) могут управлять ресурсами пользователя (например, Oracle Database Resource Manager), чтобы иметь возможность иметь пользователей, которые могут получать ресурсы только тогда, когда база данных в основном простаивает.
https://stackoverflow.com/questions/2418581/is-there-a-way-to-throttle-or-limit-resources-used-by-a-user-in-oracle

Насколько мне известно, MySQL не имеет возможности искусственно ограничить использование ресурсов пользователем.

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

Пользователи, которые чрезмерно используют общую систему до такой степени, что создают проблемы для других пользователей, обычно обнаруживаются другими средствами (например, системный мониторинг предупреждает вас о неотвечающей системе) и уничтожаются вручную. Но это не обычное «планирование» обычных операций, это обнаружение проблем и реагирование на них.

Смотря как.

У Oracle есть менеджер ресурсов. У SQL Server тоже есть (был в 2008 году). Другие (mySQL) этого не делают.

как они работают? Как любой планировщик. В основном они измеряют счетчики производительности, и если один пользователь / база данных превышает выделенный предел, его запросы замедляются (обычно более низкая приоритетность) по сравнению с остальными.

Обратите внимание, что «база данных в основном простаивает» - ДЕЙСТВИТЕЛЬНО сложный вопрос для баз данных. о чем вы говорите? IO? ЦПУ? Различные запросы имеют различные узкие места.