Estou usando o SQL Server SE 2019, em um Windows Server 2019 (com unidade SSD) que executa o IIS 10. Sobre o IIS 10, execute um aplicativo ASP.Net, que deve ser considerado COMO ESTÁ (não posso modificá-lo) .
Ultimamente descobri que o aplicativo ASP.Net pode se tornar um pouco tagarela demais e começar a fazer muitas consultas de banco de dados em lotes (poucas rajadas de 20 a 30 consultas/s). Sob carga pesada, isso pode se tornar um problema, então gostaria de melhorar o desempenho do sistema. O SQL Server foi instalado sem nenhuma configuração específica (padrão do assistente de instalação).
Gostaria de saber se existe alguma configuração conhecida que eu possa ajustar (SQL Server/IIS) que possa otimizar o cenário em que há muitas consultas pequenas e rápidas (~5ms por consulta) enviadas em lotes de 20-30 consultas/s . Para que eu possa melhorar a situação em que o aplicativo ASP.Net está sob carga pesada e começar a enviar muitas consultas rápidas ao banco de dados
Provavelmente há pouco que você pode fazer em termos de configuração do SQL Server. Eu diria que 30 * 5ms de trabalho a cada 1000ms não é um problema a esse respeito, especialmente se as consultas forem principalmente leituras que não contêm bloqueios que irão interferir entre si (portanto, alguns podem estar acontecendo em paralelo, caso em que que 30*5ms é o tempo total de processamento com o tempo de relógio de parede consumido sendo menor).
Existem algumas configurações para tentar controlar o número de conexões simultâneas , mas elas carregam avisos como “Esta opção é uma opção avançada e deve ser alterada apenas por um administrador de banco de dados experiente ou um profissional certificado do SQL Server”. portanto, brincar com eles não é recomendado, a menos que você tenha um motivo muito específico para pensar que eles são relevantes para a sua situação e não farão com que outra coisa funcione mal ou com erros.
Garantir que o pool de conexões seja usado de forma eficaz para reduzir as despesas extras de abrir e fechar conexões em excesso seria algo a se observar se você pudesse controlar o aplicativo, mas, neste caso, você não pode.
Garantir que as consultas não se bloqueiem desnecessariamente é outro fator, mas, novamente, isso constitui o controle do aplicativo que está fora do escopo da sua pergunta (se as chamadas forem para procedimentos armazenados, você poderá fazer ajustes neles sem acesso ao aplicativo, mas eu não recomendaria isso, pois você provavelmente violaria seus acordos de suporte com o provedor do aplicativo).
Você tem alguma análise sobre isso ser ativamente um problema? Registrado em uso normal ou por meio de testes de carga artificial? Em caso afirmativo, adicione esses detalhes à pergunta.