Estou fazendo algumas consultas DMV no SQL Server Analysis Service, como SELECT * FROM $system.DISCOVER_SESSIONS
. Esta consulta retornará dados de todos os bancos de dados no servidor, portanto não é específica do banco de dados. Quando me conecto ao servidor por meio de AdomdConnection , não especifico o banco de dados/catálogo na cadeia de conexão e a consulta ainda funciona. Porém notei que um banco de dados está sempre associado a esta conexão, e geralmente é o primeiro banco de dados da lista de bancos disponíveis no servidor.
Minha pergunta é
- esses tipos de consultas realmente sobrecarregam o banco de dados em questão, ou seja, se por algum motivo tivermos muitas consultas DMV que verificam as sessões do servidor, todas elas consultam o primeiro banco de dados escolhido automaticamente na lista e, portanto, impactam (desempenho- sábio) algum usuário que possa realmente fazer consultas "reais" neste banco de dados?
- Ou esse tipo de consulta DMV afeta apenas o próprio servidor, e não o banco de dados de forma alguma e, portanto, o impacto no desempenho é o mesmo, independentemente do banco de dados escolhido?
Possivelmente, uma maneira mais curta de formular seria: os impactos no desempenho de uma consulta DMV estão relacionados ao servidor ou ao banco de dados?
Quando você não especifica um banco de dados na cadeia de conexão, o mecanismo de banco de dados definirá o contexto do banco de dados para o padrão mapeado para o Login autenticado no servidor. Se nenhum padrão for definido para esse login, acredito que o padrão do mecanismo seja o
master
banco de dados. A maioria dos DMVs são acessíveis a partir de qualquer banco de dados.Na maior parte, isso não é realmente uma coisa. Exceto para tipos específicos de consultas, como aquelas que alteram especificamente o banco de dados e/ou fazem com que ele fique offline, executar uma consulta a partir de um contexto de banco de dados específico não causa nenhum tipo de carga materializada nesse banco de dados específico.
O servidor é composto por recursos de hardware. Portanto, qualquer tipo de consulta ou processo certamente consumirá alguma quantidade desses recursos para ser executada. Mesmo que a consulta tenha como alvo apenas objetos específicos de um banco de dados específico, os recursos de hardware ainda serão provisionados no nível do servidor. (Deixando de lado a conversa sobre limitar o acesso de um banco de dados a esses recursos com o Resource Governor.) É claro que menos recursos de servidor disponíveis afetam todos os bancos de dados nesse servidor.
Então, sim, praticamente não importa de qual banco de dados você executa a maioria dos DMVs, do ponto de vista do desempenho. O impacto será consistente independentemente.
Relacionado ao servidor.