O que são esses sistemas.Sp * procedimentos armazenados fazendo?

Estou à procura de um problema de desempenho estranho e massivo na instalação do servidor SQL. No meu sistema, um determinado procedimento armazenado demora 2 minutos a executar; no sistema de um colega demora menos de 1 segundo. Temos bases de dados/dados e configurações semelhantes, mas há obviamente algo muito diferente.

Passei o SP em questão pelo Profiler em ambos os sistemas e notei algo estranho. No meu sistema, vejo 9 entradas com o seguinte: propriedades:

  • a duração é muito alta em relação a outras linhas. Tenho valores tão altos como 37.698 e tão baixos como 1734. No sistema "rápido" a duração máxima (para toda a chamada SP) é de 259.
  • São executados por duas bases de dados relacionadas com a que contém o SP que estou a correr. (Este SP faz chamadas através de servidores ligados a estas duas bases de dados). São execuções de um dos seguintes sistemas. SPs:
    • sp_tables_info_90_rowset
    • sp_ check_ constbytable_rowset
    • sp_columns_90_rowset
    • sp_table_ statistics2_rowset
    • sp_indexes_90_rowset
Não encontro nenhum Googleable. documentação sobre o que são, porque seriam tão lentos, ou porque funcionariam num sistema, mas não no outro. Alguém sabe do que se trata?

Author: Craig Walker, 2010-02-17

6 answers

Não sei a resposta à tua pergunta. Mas para tentar resolver o problema que você está tendo (o que, eu presumo, é o que você está realmente interessado), a primeira coisa que eu faria é correr um re-índice nas tabelas que você está questionando. Isso frequentemente irá corrigir qualquer tipo de lentidão quando as condições são como você descreveu (mesma estrutura de banco de dados, diferentes dados/banco de dados, mesma consulta).
 2
Author: Jon Seigel, 2010-02-17 19:28:56

Tente actualizar manualmente as estatísticas nessa tabela.

UPDATE STATISTICS [TableName]

Depois verifique se a opção da base de dados para AutoUpdateStatistics é verdadeira. Mesmo que seja, no entanto, eu vi casos em que a adição de grandes quantidades de dados a uma tabela nem sempre faz com que as estatísticas para atualizar em tempo hábil, e consultas podem ser lentas.

 2
Author: Rob Schripsema, 2010-02-18 18:14:12

Estas são as tabelas criadas quando você ligou as chamadas do servidor. Estas são chamadas tabelas de trabalho criadas no Tempdb. Eles são criados automaticamente pelo motor de banco de dados para operações temporárias, como Spooling etc.

 1
Author: Adithya Kalyan, 2012-05-10 09:19:53

Não estou familiarizado com esses procedimentos específicos, mas pode tentar correr:

SELECT object_definition(object_id('Procedure Name'))
Para ter uma ideia melhor do que se passa debaixo do capô.
 0
Author: Ian Jacobs, 2010-02-17 19:27:18

Última reconstrução do Índice? Última actualização das estatísticas?

Caso contrário, estes procs armazenados também são usados pelo Cliente do servidor SQL... não? E provavelmente não causará estes erros.

 0
Author: gbn, 2010-02-17 21:04:21
Esses sp significam que a sua consulta está a atingir servidores ligados usando sinónimos. Isto deve ser evitado sempre que possível.
 0
Author: user2108586, 2013-02-25 19:21:14