AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 28730
Accepted
Warren  P
Warren P
Asked: 2012-11-16 07:02:51 +0800 CST2012-11-16 07:02:51 +0800 CST 2012-11-16 07:02:51 +0800 CST

Grande conjunto de planos de execução desliga o SSMS

  • 772

Eu tenho um procedimento armazenado que leva cerca de 3 a 5 segundos que estou tentando entender, então quero um plano de execução para ele. Quando eu o executo no SQL Server Management Studio com o Plano de Execução ativado, leva mais de 15 minutos e, em seguida, recebo uma guia que diz "Plano de Execução", mas a guia está vazia. Qualquer outra tentativa de executar qualquer SQL (mesmo select * from foo) não funcionará mais. Eu tenho um aplicativo de estúdio de gerenciamento do servidor SQL quebrado, devo desligá-lo e tentar novamente. Eu fiz isso três vezes e perdi 45 minutos, e agora estou pronto para aprender sobre algumas alternativas.

Primeiro, existe uma maneira confiável de linha de comando para gerar um SQLPLANarquivo para um script sql específico, talvez a partir da linha de comando, e então eu poderia investigar o uso de alguma outra ferramenta além do SSMS para gerar meus planos.

Em segundo lugar, se não houver uma maneira de linha de comando confiável integrada para gerar e armazenar um plano de execução SQL como texto ou XML, gostaria de saber se existem outras ferramentas de terceiros que fariam um bom trabalho em SQLPlans muito grandes, em particular não engasgando e morrendo quando as partes de desenho da GUI ficam sobrecarregadas.

O que você faz quando o SSMS não gera e mostra um plano de execução? Estou usando o SQL 2008 R2 Standard e sua versão SSMS incluída e não tenho nenhum plug-in extra.

Atualização Estou invocando um procedimento armazenado que cria um cursor, que faz subconsultas e faz muito mal, em um loop, gerando mais de 10 mil instruções de subconsultas individuais. Parece que eu realmente preciso refatorar isso para gerar menos uma tempestade de saída.

Update2 Realmente se parece com o rastreamento do lado do servidor (para zerar as áreas problemáticas) e, em seguida, um retorno à criação de perfil e, em seguida, um retorno aos planos de consulta pode ser necessário. Estou ampliando muito o zoom em uma imagem grande e preciso diminuir um pouco o zoom.

sql-server-2008-r2 ssms
  • 3 3 respostas
  • 5184 Views

3 respostas

  • Voted
  1. Aaron Bertrand
    2012-11-16T07:26:45+08:002012-11-16T07:26:45+08:00

    Você já deu uma olhada no SentryOne Plan Explorer ? Ele pode lidar com planos enormes que o Management Studio engasga. Você também pode gerar planos reais e estimados de dentro da ferramenta, para que nem precise se preocupar com o SSMS.

    • 9
  2. Best Answer
    Kevin Feasel
    2012-11-16T07:27:18+08:002012-11-16T07:27:18+08:00

    Experimente SET STATISTICS XML ONantes de executar sua consulta. Isso retornará o plano no formato XML sem tentar renderizá-lo no SSMS. Você pode então copiar e colar o texto em um arquivo. A partir daí, você obterá o plano em formato XML e poderá abri-lo em uma ferramenta como o SQL Sentry Plan Explorer .

    • 8
  3. Jeremy Lowell
    2012-11-16T17:15:57+08:002012-11-16T17:15:57+08:00

    Já aconteceu isso de vez em quando. A opção de SET STATISTICS XML ON conforme mencionado acima é provavelmente a melhor resposta (além de usar um terceiro). No entanto, descobri que executar o SSMS no próprio servidor pode ajudar. Dito isso, se você está travando o SSMS em sua caixa local, provavelmente não é uma boa ideia experimentá-lo no servidor.

    Outra coisa que você pode fazer é consultar o cache do plano para ver quais planos de execução estão no cache para esse proc com uma consulta semelhante a esta:

    select
    querytext.text,executionplan.query_plan , plan_handle
    from
    sys.dm_exec_cached_plans 
    outer apply sys.dm_exec_sql_text(plan_handle) as querytext
    outer apply sys.dm_exec_query_plan(plan_handle) as executionplan 
    Where text like 'Create procedure dbo.procname%'
    

    Outra coisa que eu sempre faço - antes mesmo de olhar para um plano de execução, é SET STATISTICS IO ON e depois rodar o proc/code. Se estou satisfeito com o resultado de SET STATISTICS IO ON, é provável que tenha um plano de que goste. http://msdn.microsoft.com/en-us/library/ms184361.aspx

    • 5

relate perguntas

  • plano de manutenção executado pelo agente

  • Especificar conexão na consulta T-SQL do Management Studio

  • Randomizando o conteúdo da tabela e armazenando-o de volta na tabela

  • SQL Server Management Studio para um banco de dados remoto

  • Alguém usou o modo sqlcmd na prática? [fechado]

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve