我们有一个C#
应用程序,最终用户可以在其中连接到他们的数据库服务器并运行查询来获取数据,我们在代码库中使用ADO.NET
执行查询并根据我们的应用程序处理数据。
有时候,最终用户会错误地输入不正确的联接查询或联接关系,这在语法上是正确的,但不是预期的查询。这种不正确的联接或错误的查询会导致数据库服务器使用更多的CPU或100%的CPU,从而导致问题。在代码或数据库级别是否有任何选项可以验证查询以查找不相关的联接条件或关系,并避免此类情况?
最终用户可以手动跟踪CPU使用情况,但这不是一个可行的选项。我们正在寻找自动避免这种情况的选项,无论是在代码级别还是在数据库级别。
1条答案
按热度按时间3duebb1j1#
您可以通过如下配置PostgreSQL来防止这种情况:
max_parallel_workers_per_gather = 0
,以便单个SQL语句永远不能使用多个CPU核心statement_timeout
设置为一个合理的低值,以便自动取消耗时过长的语句