Pergunta

Estou trabalhando com o Sybase 15 em meu aplicativo e há um problema de desempenho relacionado às junções aninhadas. Eu armazenei procedimento que seleciona 2 colunas de 2 tabelas e compara igualidades de mais de 10 colunas entre essas 2 tabelas. Mas quando eu corro esse Stor. Proc., O resultado leva 40 minutos. Eu adicionei a declaração "Set Merge-Join Off" ao topo do meu PROC, então o resultado leva 22 segundos. Mas preciso de mais uma solução sem isso. Eu estava usando o Sybase 12.5 antes e não havia nenhum problema como esse e meu PROC levou 3 minutos para o resultado.

Comparei as configurações do servidor com as configurações do servidor SP_Configure entre 15 e 12.5 e Sybase15 (as configurações de configuração de E/S e memória) são maiores que o servidor Sybase12.5.

Informações: Sybase15 Os recursos do sistema do PC são realmente bons.

Foi útil?

Solução

Acabei de passar 14 horas no trabalho depurar questões críticas de desempenho que surgiram de uma migração Sybase 15 no fim de semana.

O otimizador de consulta tem tomado (para nós) algumas decisões muito estranhas.

Dê um exemplo,

select a, b, c from table1, table2, table3 where ...

contra

create table #temp (col1 int, col2 int, ... etc)

insert #temp
select a, b, c from table1, table2, table3 where ...

Tivemos a primeira corrida em tempo útil e não conseguimos tomar a decisão correta na 2ª instância, apesar de uma extensa reformulação. Até desmontamos a consulta em mesas temporárias, mas ainda obtivemos resultados incomuns.

No final, recorremos SET FORCEPLAN ON Para algumas consultas - isso ocorre após 10 horas tendo nossos DBAs e Sybase na linha. A solução veio dos desenvolvedores de aplicativos também, em vez de qualquer conselho dos engenheiros da Sybase.

Então, para economizar algum tempo, seguir esse caminho é minha sugestão.

Outras dicas

O mesmo que os outros, tenho comiseração e não uma resposta real! Estamos vendo um problema em que o planejador de consulta ASE 15 subestima massivamente o custo de uma varredura de tabela e superestima da mesma forma o custo do uso do índice em cluster. Isso resulta em uma junção de mesclagem, sendo o plano sugerido. Desativar a mesclagem se junta ou definindo o allrows_oltp optgoal as vezes resulta em um melhor plano de consulta. Os custos estimados ainda estão muito longe, mas tirando uma opção da tabela, o planejador de consultas pode encontrar uma boa solução - embora através da análise errada.

O ASE 15 documentos dizem que ele tem um conjunto de algoritmos muito mais limpos, enquanto o planejador ASE 12 teve vários casos especiais. Talvez um caso especial que diga "se você tiver a coluna de índice em cluster na junção, ela será mais rápida que uma varredura de tabela" não seria uma ideia tão ruim ... :(

O Sybase reescreveu efetivamente o mecanismo de consulta para a versão 15, o que significa que as consultas que executaram o super-rápida no 12.x podem correr muito mais lentamente na versão mais recente e vice-versa. A única maneira de depurar isso é comparar o plano de consulta 12.x com o plano de 15 consultas e ver o que está sendo feito de maneira diferente.

Todos os preocupados com esse problema devem ler este documento:

http://www.sybase.com/files/white_papers/ase15-optimizer-best-practices-v1-051209-wp.pdf

Tem um aviso sincero sobre a migração de Sybase 12 para a Sybase 15.

Cita:

... Não trate o ASE 15 como "apenas mais um lançamento". Por mais que gostássemos de dizer que você poderia simplesmente atualizar e apontar seus aplicativos nos servidores atualizados, a profundidade e a amplitude da mudança em uma das áreas mais fundamentais de um banco de dados, a execução da consulta, exigem um regime de teste mais focado. Este artigo deve fornecer os fatos claros e as melhores práticas para reduzir esse esforço o máximo possível.

Ele continua falando sobre o novo otimizador de consulta ASE 15, as consultas OLTP e as consultas DSS (Sistema de Suporte à Decisão) em relação ao OLTP.

No entanto, há boas notícias: Em março de 2009, a Sybase 15.0.3 introduziu um modo de compatibilidade. Veja o seguinte doc:

http://www.sybase.com/detail?id=1063556

Com esse modo, você não precisa analisar consultas para decidir se elas se encaixam nos perfis OLTP ou DSS.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top