Em coisas interessantes do mundo, instruções e revisões. Max grau de paralelismo - Selecione o valor máximo do paralelismo do valor SQL ideal

Não é segredo que pensa sobre os problemas de configurar o servidor SQL associado a um aumento no desempenho, especialista em que a maioria deles faz uma escolha em favor de um aumento no hardware. Mas sempre é justificado? Todos os métodos de configuração do servidor já usados? Sabe-se que trabalhando com parâmetros de configuração e alterar seus valores padrão é capaz de melhorar o desempenho e outras características deste sistema. Entre essas opções de configuração, a configuração SQL tem uma opção com muitas perguntas, esta é a opção - Max grau de paralelismo (DOP) - Aqui está sobre isso e vamos falar sobre isso.

O grau máximo de paralelismo (DOP) Determina o número de encadeamentos que o SQL Server pode paralerar a solicitação e significa que o número de processadores de servidor usados. O parâmetro padrão é 0 - o grau máximo de paralelismo. Por exemplo, se você tem 24 kernels - então o valor do "grau máximo de paralelismo" será igual a 24 e o otimizador, se considerar necessário, pode usar todos os processadores para executar uma instrução, ou seja, a consulta ser paralelo por 24 córregos. Para a maioria dos casos, isso é bom, mas não para todos. Além disso, nem sempre é bom, usando o valor desse parâmetro padrão. Configurando este parâmetro pode precisar ser necessário, por exemplo, na seguinte situação: por exemplo, temos um aplicativo no qual todos os funcionários fazem informações sobre as operações diárias e, a um determinado período de tempo, cada usuário executa uma solicitação que se baseia Um relatório sobre todas as operações do usuário por algum lapso de tempo. Naturalmente, se a lacuna do tempo for grande, essa consulta será executada por um longo tempo e, ao instalar o DOP por padrão, levará todos os processadores disponíveis, o que naturalmente afetará a operação de outros usuários. Consequentemente, alterando o valor do DOP, podemos sem uma mudança na própria consulta para aumentar o tempo de resposta do servidor SQL de outros usuários.
MS recomenda definir o valor da seguinte forma:

Definindo o parâmetro no TSQL inteiro para servidor:

Exec sp_configure "grau máximo de paralelismo", 4; Reconfigurar.

Você também pode definir esse valor para uma consulta TSQL específica:

Use AdventureWorks2008R2; Vá Selecionar ProductID, Orderqty, Soma (Lineetal) como Sales TotalFrom.SalesOrderDetail Onde Unitprice< $5.00 GROUP BY ProductID, OrderQty ORDER BY ProductID, OrderQty OPTION (MAXDOP 2); GO

Neste exemplo, "Dica" MaxDOP altera o valor padrão do parâmetro máximo do paralelismo para 2. Visualizar a configuração atual pode ser:

Exec sp_configure "Mostrar avançado", 1; Reconfigurar; Exec sp_configure "grau máximo de paralelismo"

Agora vamos ver como esse valor é afetado pela taxa de execução da consulta. Para a consulta de teste, escrito acima, por mais tempo, adicione outro selecione a ele. O pedido adquirirá o seguinte formulário:

< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty

Na minha máquina de teste, o valor 'grau máximo de paralelismo' é exibido em 0. MSSQL é lançado por uma máquina com um processador de 4 núcleos. Eu conduzi uma série de experimentos com diferentes valores de MaxDOP: igual a 1 - sem paralelização da consulta; igual a 2 - usando apenas 2 núcleos; Equal 4 - Usando tudo e sem dica para determinar a opção que usa a sequela padrão. Para obter as estatísticas de execução, a solicitação deve ser incluída na opção Definir estatísticas na opção, além de ativar o botão de exibição do plano de consulta no Gerenciamento. Para calcular os resultados obtidos, executei todas as consultas no ciclo 3 vezes. Os resultados podem ser vistos abaixo:

Selecione dt.productid, dt.orderqty, soma (dt.linetotal) como total de vendas.salesorderdetail dt, (selecione * de vendas.salesordetail onde unitprice< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty OPTION (MAXDOP 1); SQL Server Execution Times: CPU time = 45942 ms, elapsed time = 46118 ms. SQL Server Execution Times: CPU time = 45926 ms, elapsed time = 46006 ms. SQL Server Execution Times: CPU time = 45506 ms, elapsed time = 45653 ms.

Em termos da consulta, é claro que ao instalar a dica (MAXDOP 1), a consulta foi realizada sem paralelização. Tempo médio de execução de consulta 45925.66 ms

Selecione dt.productid, dt.orderqty, soma (dt.linetotal) como total de vendas.salesorderdetail dt, (selecione * de vendas.salesordetail onde unitprice< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty OPTION (MAXDOP 2); SQL Server Execution Times: CPU time = 51684 ms, elapsed time = 28983 ms. SQL Server Execution Times: CPU time = 51060 ms, elapsed time = 26165 ms. SQL Server Execution Times: CPU time = 50903 ms, elapsed time = 26015 ms.

Ao instalar a dica (MAXDOP 2), a consulta foi realizada em paralelo a 2 CPUs, ela pode ser vista no número de execução em termos de execução da consulta. Tempo médio de execução de consulta 27054.33 ms

Selecione dt.productid, dt.orderqty, soma (dt.linetotal) como total de vendas.salesorderdetail dt, (selecione * de vendas.salesordetail onde unitprice< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty OPTION (MAXDOP 4); SQL Server Execution Times: CPU time = 82275 ms, elapsed time = 23133 ms. SQL Server Execution Times: CPU time = 83788 ms, elapsed time = 23846 ms. SQL Server Execution Times: CPU time = 53571 ms, elapsed time = 27227 ms.

Ao instalar uma dica (MAXDOP 4), a consulta foi realizada em paralelo a 4 CPUs. O tempo médio de execução da consulta 24735.33 ms

Selecione dt.productid, dt.orderqty, soma (dt.linetotal) como total de vendas.salesorderdetail dt, (selecione * de vendas.salesordetail onde unitprice< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty SQL Server Execution Times: CPU time = 85816 ms, elapsed time = 23190 ms. SQL Server Execution Times: CPU time = 85800 ms, elapsed time = 23307 ms. SQL Server Execution Times: CPU time = 58515 ms, elapsed time = 26575 ms.

o pedido foi realizado em paralelo, bem como 4 CPUs. Tempo médio de consulta 24357.33ms

links: http://support.microsoft.com/kb/2023536.

Objetivo: Examine o efeito do paralelismo SQL para trabalhar com solicitações 1C

Literatura:

Ambiente de teste:

· Windows Server 2008 R2 Enterprise

· MS SQL Server 2008 R2

· 1C Enterprise 8.2.19.90

Figura 1. Propriedades SQL "Geral"


Figura 2. Propriedades do SQL "adversed"

Instrumentos:

· Profiler do SQL Server

· 1C solicita console

Pedido de teste:

ESCOLHER

AK. Nome como nome

DE

Registrando. Classificador de pressão como AK

Conexão interna Registrando. Classificador de pressão como AK1.

Por ac.kod \u003d ak1.kod

Preparação:

Executamos o Profiler do SQL Server, defina a conexão, marcamos eventos e colunas conforme mostrado na Figura 3.


Figura 3. Propriedades de rastreamento

Instale a seleção para o nosso banco de dados


Figura 4. Filtro Base

Redução:

· Max grau de paralelismo - MDOP

· Sost Limite para paralelismo - custo

Testando um plano de solicitação seqüencial (MDOP \u003d 1)


Figura 5. Console de solicitação - tempo de desempenho 20 seg.

O servidor do SQL Server "Max of Parallelismo" é definido como 1 (sem paralelismo). Nós olhamos para o resultado no profiler (Fig.6)


Figura 6. Plano de solicitação seqüencial

O SQL Server formou um plano de solicitação sequencial, enquanto: CPU de carregamento total \u003d 6.750 (s) e tempo para execução da consulta \u003d 7.097 (s)

Testando um plano de solicitação paralela (MDOP \u003d 0, custo \u003d 5)

Transfira o SQL Server para o modo paralelismo (na consulta SQL):

Use mestre;

Exec SP_Configure "Mostrar opção avançada", 1;

Reconfigurar com substituição.

Use mestre;

exec SP_Configure "Max grau de paralelismo", 0;

Reconfigurar com substituição.

Execute a mesma consulta (Figura 7)


Figura 7. Solicitações de console - tempo de execução 16 seg.

Verifique o resultado no Profiler (Figura 8)


Figura 8. Plano de solicitação paralela

O SQL Server desta vez formou um plano de consulta paralelo, enquanto o carregamento total de CPU \u003d 7.905 segundos e a duração da consulta \u003d 3.458 segundos

Testando um plano de solicitação seqüencial (MDOP \u003d 0, custo \u003d 150)

Vamos tentar nos livrar do plano paralelo usando o parâmetro "Limite de custo para paralelismo". Por padrão, o parâmetro é definido como 5. No nosso caso, a partir da formação do plano paralelo, foi possível se livrar de 150 (na consulta SQL):

Use mestre;

exec sp_configure. "Limite de custo para parallelsm", 150 ;

Verifique a execução da consulta nestas condições (Fig. 9)

Figura 9. Solicitações de console - tempo de execução 20 seg.

Verifique o resultado no Profiler (Fig. 10)


Figura 10. Plano de solicitação sequencial.

O SQL Server formou um plano de solicitação seqüencial. CPU de carregamento total \u003d 7.171 segundos, tempo de execução de consulta \u003d 7, 864 segundos.

CONCLUSÕES:

· Realizar uma consulta de teste em um ambiente corporativo de 1C usando um servidor de plano paralelo do SQL Server fornece um ganho de desempenho significativo em comparação com um plano seqüencial (16 seg. Contra 20 segundos - ganhos 4 seg.)

· Execute a consulta de teste pelo SQL Server ao usar um plano de solicitação paralela demora duas vezes mais rápido do que o uso de um plano de solicitação seqüencial (3,5 seg. Contra 7.1 seg.)

· O paralelismo do SQL Server não pode ser ajustado não apenas usando o parâmetro MDOP, mas também o parâmetro "Limite de custo para paralelismo"

  • Tutorial

Este manual é projetado para iniciantes que procuram um manual simples em russo para instalação versão em inglês SQL Server 2012, que será usado para ser usado para o SharePoint 2013.
Este artigo não é para profissionais.

Todo o trabalho é dividido em 3 etapas:

  • Instalando o SQL Server 2012
  • Definindo o máximo de configuração de configuração do paralelismo
  • Definir direito contaProjetado para instalar o SharePoint 2013
Também no artigo descreve o processo instalações da Microsoft..Framework líquido. 3.5 no ambiente MS Windows Server. 2012 R2 Standart.

ATENÇÃO: Sob as fotos cortadas!

Instalando o SQL Server 2012

1. Antes da instalação, certifique-se de que há espaço livre suficiente no disco rígido (no meu caso, levou 2,7 GB).
Depois de iniciar a distribuição, selecione Item " Instalação."No menu da esquerda," clique em "Item" Novo servidor SQL independente ou adicionar recursos a uma instalação existente":

2. Inicie o assistente de instalação. Vai verificar. Você pode clicar no botão "Mostrar detalhes" e ver um relatório detalhado:

3. Relatório detalhado. Pressione o botão "OK":

4. Digite a tecla do produto e pressione o botão "Next":

5. Concordar com os termos do contrato de licença.
Para fazer isso, coloque um carrapato " Eu aceito os termos de licença

6. Na etapa de função de configuração, selecione o primeiro item " Instalação do recurso do SQL Server". Pressione o botão" Next ":

7. Na etapa "Recurso Seleção" Comemore " Serviços de motores de banco de dados.", "Ferramentas de Gestão - Básico"E" Ferramentas de gerenciamento - Complete". Em seguida, pressione o botão" seguinte ":

8. Em seguida, o instalador executará outra verificação. Você pode clicar no botão "Mostrar detalhes" e ver um relatório detalhado:

9. Relatório detalhado. (Nesta fase, tive um erro no "Microsoft .NET Framework 3.5 é instalado ...". Sobre isso abaixo). Pressione o botão "Next":

10. Na etapa "Configuração da instância", você deve configurar a instância do serviço SQL Server.
Repito que este artigo é destinado a iniciantes. Portanto, assumimos que o SQL Server não foi instalado no seu servidor, o que significa que você deixará todas as configurações padrão. Pressione o botão "Next":

11. Nesta etapa, o Assistente de instalação exibe os requisitos para o espaço em disco. Pressione o botão "Next":

12. Na etapa de configuração do servidor, você deve especificar uma conta de domínio para o serviço " Mecanismo de banco de dados do SQL Server". Depois de preencher os campos" Nome da conta "e" Senha ", pressione o botão" Next ":

13. Na etapa "Configuração do Database Engine", basta adicionar o usuário atual aos administradores do SQL Server. Para fazer isso, clique no botão "Adicionar usuário atual" e clique no botão "Next":

14. Na próxima etapa, pressione o botão "Próximo":

15. Em seguida, o assistente de instalação executa novamente o cheque e exibe seus resultados. Pressione o botão "Next":

16. Na etapa "Pronto para instalar", o assistente exibirá informações resumidas. Aqui você deve clicar no botão "Instalar":

17. Após a conclusão da instalação, as informações sobre as operações geradas são exibidas:

18. Invisível nesta fase para reiniciar o computador. Em alguns casos (por exemplo, ao instalar o Microsoft .NET Framework 3.5), o próprio Assistente de instalação exibirá uma janela com uma proposta para reiniciar o computador. Não recuse.

Definindo o máximo de configuração de configuração do paralelismo

Por padrão, o valor do parâmetro "grau máximo de paralelismo" é 0.
O SharePoint 2013 exige que este parâmetro seja igual a 1.
É fácil consertar!

1. Lançamento Microsoft SQL Server Management Studio (Início - Todos os Programas - Microsoft SQL Server 2012 - SQL Server Management Studio).

2. Na tela Conexão para o servidor, clique no botão "Conectar".

3. Clique com o botão direito do mouse no seu servidor na janela " Explorador de objetos."E selecione" Propriedades.":

4. Na janela Propriedades do servidor que abre no menu da esquerda, selecione Página " Avançado"E faça a lista de propriedades na parte inferior da tela. Defina o valor do parâmetro Max grau de paralelismo" dentro 1 e clique em "OK":

5. Não feche o SQL Server Management Studio, ele será útil.

Definindo os direitos da conta para definir o SharePoint 2013

A conta, em nome da qual a instalação do SharePoint 2013, deve ter os direitos aumentados no SQL Server.
Esta conta é recomendada para dar as seguintes funções:
  • dbcreator.
  • securityAdmin.
  • público
1. No SQL Server Management Studio na janela " Explorador de objetos."Expand Item" Segurança". Então clique com o botão direito do mouse no ponto" Logins."E selecione" Novo login.":

2. No campo "Login Name", insira nome do domínio Conta a partir da qual você planeja instalar e configurar o SharePoint 2013.

3. No menu da esquerda, selecione a página " Funções do servidor."E verifique o papel de" DBCreator "e" SecurityAdmin ", e também certifique-se de que a função" pública "já esteja marcada. Em seguida, clique em" OK ":

Agora, o SQL Server está pronto para a instalação SharePoint 2013.

Instalando o Microsoft .NET Framework 3.5 no MS Windows Server 2012 R2 Standart

No passo número 9 do ponto " Instalando o SQL Server 2012"Eu tinha um erro: não foi instalado .NET Framework 3.5.
Para resolver esse problema, as etapas a seguir devem ser executadas:

1. Você deve abrir o console " Gerenciador do Servidor.".

2. No menu da esquerda, selecione o item "Painel".

3. No centro da janela, clique no item "Adicionar Funções e Recursos".

4. No mestre que abre, pule "antes de começar".

5. No passo "Tipo de Instalação", escolha o item " Instalação baseada em função ou baseada em recursos". Pressione o botão" Next ".

6. Na próxima etapa, deixe tudo por padrão e pressione o botão "Next".

7. Pule a etapa "Funções do servidor", clicando no botão "Next".

8. Na etapa "Recursos", celebramos a caixa de seleção ".NET Framework 3.5". Pressione o botão "Next".

9. Depois de concluir o processo de instalação, você pode fechar o assistente "Adicionar Funções e Assistente de Recursos".

10. Pronto!

Todo o céu bom e pacífico acima da sua cabeça!

P.S. Feliz dia cosmonautics!

Max grau de paralelismo (DOP) - opção adicional de configuração do SQL Server, associada a muitas perguntas e que são dedicadas a muitas publicações. Neste artigo de seu blog, o autor espera fazer uma pequena clareza que essa opção faz e como usá-lo.
Primeiro, o autor gostaria de dissipar quaisquer dúvidas sobre o fato de que a opção especificada define quantos processadores podem usar o SQL Server ao atender múltiplas conexões (ou usuários) - não é assim! Se o SQL Server tiver acesso a quatro processadores inativos, e ele estiver configurado para usar todos os quatro processadores, ele usará todos os quatro processadores, independentemente do grau máximo de paralelismo.
Então, o que esta opção dá? Esta opção define o número máximo de processadores que o SQL Server pode usar para uma solicitação. Se a solicitação para o SQL Server deve retornar grande volume Dados (muitos registros), às vezes faz sentido paralelizar, quebrando em vários pedidos pequenos, cada um de devolver seu subconjunto de linhas. Assim, o SQL Server pode usar vários processadores e, consequentemente, em sistemas multiprocessadores, um grande número de registros de toda a consulta pode ser potencialmente devolvido mais rápido do que em um sistema de processador único.
Há muitos critérios que devem ser levados em conta antes que o SQL Server desencadeia "paralelismo intra" (quebrando uma solicitação para vários fluxos), e não haverá nenhum ponto em detalhes aqui. Você pode encontrá-los em Bol, procurando a frase "grau de paralelismo". Diz que a decisão de paralelização é baseada na acessibilidade do processador de memória e, principalmente, na disponibilidade dos próprios processadores.
Então, por que precisamos pensar no uso dessa opção - porque, deixando-o no valor padrão (o próprio SQL Server decide sobre paralelização), às vezes você pode obter efeitos indesejados. Esses efeitos se parecem com isso:

    Solicitações paralelas são mais lentas.

    O tempo de execução das solicitações pode se tornar não-determinístico, e pode usuários irregulares. O tempo de execução pode mudar porque:

      O pedido pode às vezes paralelo, e às vezes não.

      A solicitação pode ser bloqueada por uma solicitação paralela se os processadores terem sido sobrecarregados antes disso.

Antes de continuarmos, o autor gostaria de notar que não há necessidade particular de mergulhar na organização interna do paralelismo. Se você estiver interessado nisso, pode ler o artigo "Processamento de consulta paralela" em livros on-line, no qual essas informações são definidas com mais detalhes. O autor acredita que existem apenas duas coisas importantes que você deve saber sobre a organização interna do paralelismo:

    As solicitações paralelas podem gerar mais segmentos do que especificadas na opção "grau máx. Grau de paralelismo". DOP 4 pode gerar mais tópicos, quatro para solicitação e fluxos adicionais usados \u200b\u200bpara classificação, fluxos, unidades e montagens, etc.

    Paralelização de solicitações pode provocar diferentes spids para esperar com o tipo de espera CxPacket ou 0x0200. Isso pode ser usado para encontrar esses spids que estão em espera quando operações paralelas, e têm em Sysprocesses WaitType: CxPacket. Para facilitar esta tarefa, o autor oferece a utilização do procedimento armazenado em seu blog: Track_Waitstats.

E assim "O pedido pode ser realizado mais lento quando paralelam" por quê?

    Se o sistema tiver um muito fraco largura de banda Subsistemas de disco, quando analisando a solicitação, sua decomposição pode ser realizada maior do que sem paralelismo.

    Possíveis blocos de dados ou bloquear intervalos de dados para o processador gerado por outro usado em processo posterior paralelo e lançado, etc.

    Se não houver nenhum índice para o predicado, o que leva à digitalização da tabela. A operação paralela dentro da solicitação pode ocultar o fato de que a solicitação teria completado muito mais rápido com um plano de execução consistente e com o índice correto.

De tudo isso segue a recomendação para verificar a execução da consulta sem paralelismo (DOP \u003d 1), isso ajudará a identificar possíveis problemas.
Os efeitos acima mencionados do paralelismo, por si só devem trazê-lo que a mecânica interna de paralelização de solicitações não é adequada para uso em aplicações OLTP. Esses aplicativos são os quais uma mudança no tempo de execução pode irritar os usuários e para os quais o servidor que serve simultaneamente muitos usuários não é improvável selecionar o plano de execução paralela devido a essas aplicações do perfil de carga de trabalho do processador.
Portanto, se você for usar paralelismo, então provavelmente será necessário, para tarefas de extração de dados (data warehouse), suporte para sistemas de tomada de decisão ou relatório, onde não há muitos pedidos, mas eles são duros e executados em um poderoso servidor com um grande volume de memória operacional.
Se você decidir usar paralelismo, qual valor deve ser instalado para dop?. Boas práticas para este mecanismo é que, se você tiver 8 processadores, instale o DOP \u003d 4, e isso com um grande grau de probabilidade será a instalação ideal. No entanto, não há garantia de que funcionará. A única maneira de garantir que isso seja para testar valores diferentes para DOP. Além disso, o autor queria oferecer a sua, baseado em observações empíricas do Conselho, nunca definir este número mais da metade do número de processadores que estão em estoque. Se o autor tivesse processadores menos de seis, ele definiria dop em 1, o que simplesmente proíbe paralelização. Ele poderia fazer uma exceção se tivesse um banco de dados que suporte o processo de apenas um usuário (algumas tecnologias de extração de dados ou tarefas de relatório), neste caso, em ordem de exceção, será possível instalar o DOP em 0 (valor padrão) que Permite que o SQL Server tomize uma decisão sobre a necessidade de paralelizar a consulta.
Antes de completar o artigo, o autor queria avisá-lo sobre o fato de que a criação paralela de índices depende do número que você instala para o DOP. Isso significa que você pode querer alterá-lo no momento da criação ou recriar índices para aumentar o desempenho desta operação e, é claro, poderá usar a consulta DICA MAXDOP, que permite ignorar o valor definido no configuração e pode ser usado no relógio de carga mínima.
Finalmente, sua solicitação pode desacelerar ao paralelizar devido a erros, portanto, certifique-se de que o último service pack esteja instalado no seu servidor.

Criar proc track_waitstats (@num_samples int \u003d 10 @ Delaynum int \u003d 1 @ DelayType nvarchar ( 10 ) \u003d "Minutos") AS - T. Davidson - Este procedimento armazenado é fornecido \u003d como é \u003d sem garantias, - e confere nenhum direito. - O uso de amostras de script incluídas estão sujeitos aos termos - especificado em http://www.microsoft.com/info/cpyright.htm - @num_samples é o número de vezes para capturar garçons, - O padrão é 10 vezes. O intervalo de atraso padrão é de 1 minuto - Delaynum é o intervalo de atraso. DelayPe especifica se - O intervalo de atraso é de minutos ou segundos - Criar mesa de garçons se não existir, caso contrário, truncar Definir nocount em se não existir (selecione 1 De sysobjects onde nome \u003d "waitstats") criam garçons de mesa (varchar ( 80 ), Solicita numérico ( 20 ,1 ), Numérico ( 20 ,1 ), Numérico ( 20 ,1 ), Agora Datetime Padrão GetDate ()) Else Truncate Table WaitStats DBCC Sqlperf (Waitstats, Clear) - Claro Out WaitStats Declare @i int, @ Delay Varchar (retray 8 ), @ Dt varchar ( 3 ), @ Agora datetime, @ totalwait numérico ( 20 ,1 ), @ DateTime EndTime, @ BegItime DateTime, @ HR INT, @ min int, @ sec int select @i \u003d 1 Selecione @dt \u003d caso menor (@delaytype) quando "minutos" então "m" quando "minuto", em seguida, "m" quando "min", em seguida, "m" quando "m", em seguida, "m" quando "m" quando "m" Quando "m" então "m" quando "segundos" então "s" quando "segundo" então "s" quando "s" quando "s" quando "s" quando "s", então "s" quando "s" "s" então "s" DelayType End se @dt não em ("s", "m") iniciar imprimir "Por favor, abaixa o tipo de atraso, por exemplo, segundos ou minutos" End de volta se @dt \u003d "s" começar a selecionar @sec \u003d @ delaynum% 60 Selecione @min \u003d elenco (@delaynum / 60 ) Como int) select @hr \u003d elenco (@min / 60 ) Como int) select @min \u003d @ min% 60 End se @dt \u003d "m" começar a selecionar @sec \u003d 0 Selecione @min \u003d @ delaynum% 60 Selecione @hr \u003d elenco ((@delaynum / 60 ) Como int) end select @delay \u003d direito ("0" + converter (varchar ( 2 ), @ Hr), 2 2 ), @ min), 2 ) + ":" + + Direito ("0" + converter (varchar 2 ), @ Seg), 2 ) se @hr\u003e 23 ou @min\u003e 59 ou @sec \u003e. 59 Começar a selecionar. "HH: mm: tempo de atraso SS não pode\u003e 23:59:59" Selecione "Delay Interval e Type:" + Convert (VARCHAR ( 10 ), @ Delaynum) + "", "+ @delaytype +" converte para "+ @delay retorna final enquanto (@i<= @num_samples) begin insert into waitstats (, requests, ,) exec ("dbcc sqlperf(waitstats)" ) select @i = @i + 1 Espera por atraso @delay end --- Criar garçons relatam executar get_waitstats --//--//--//--//--//--//--//--//--//-//--//--//--//--//--//--//--//--/ Criar proc get_waitstats como - este procedimento armazenado é fornecido \u003d como é \u003d sem garantias, e - confere nenhum direito. - O uso de amostras de script incluídas estão sujeitos aos termos especificados - em http://www.microsoft.com/info/cpyright.htm. -- - este procur vai criar garçons relatam listagem de tipos de espera por - Porcentagem - Pode ser executado quando o track_waitstats está sendo executado Defina Nocount no Declare @Now DateTime, @ totalwait numérico ( 20 ,1 ), @ data datetime, @ begItime datetime, @ hr int, @ min int, @ sec int select @ agora \u003d max (agora), @egIntime \u003d min (agora), @ EndTime \u003d max (agora) de waitstats onde \u003d " Total " --- subtrair esperafor, sono e resource_queue do total Selecione @totalwait \u003d Sum () + 1 De Waitstats onde não em ("espera", "Sleep", "Resource_Queue", "Total", "*** Total ***") e agora \u003d @Now - Inserir totais ajustados, classificação por porcentagem descendente Excluir Waitstats Onde \u003d "*** Total ***" e agora \u003d @Now Inserir em Waitstats Selecione "*** Total ***", 0 @ Totalwait, @ totalwait, @ agora selecione, porcentagem \u003d elenco ( 100 * / @ Totalwait como numérico ( 20 ,1 )) de garçons onde não em ("espera", "dormir", "resource_queue", "total") e agora \u003d @now ordem por porcentagem desc

Neste post, falaremos apenas sobre o MS SQL Server. Se você está indo para "tentar felicidade" para usar 1C com Oracle, DB2, Postrgre para você, esta informação será inútil. Mas você precisa entender que em 1C há especialistas principalmente no MS SQL Server. Especialistas no DB2 aparecem esforços da IBM. Você pode argumentar bom ou ruim por um longo tempo, esse DBMS é importante, um, o mais "suave" 1C funciona com o MS SQL Server. A julgar pelas últimas mensagens com o "frontal" mais ou menos trabalho decente com o DB2. Embora eu pessoalmente tivesse a experiência de configurar 1C para trabalhar com o DB2 mais na versão 8.1 - Tudo não foi muito. Em qualquer caso, a escolha de outro DBMS deve ser claramente razoável - as opções que não estão no MS SQL (cluster com balanceamento de carga, grade, etc.) ou finanças (Oracle já compradas) ou uma plataforma (todos no Linux) .

Então, para que você precise fazer com o MS SQL Server:

1) Configure a quantidade mínima e máxima de memória. O mínimo é metade da memória do sistema. Máximo - sistema de memória sem 2GB. Isso é feito por meio de gerenciamento - em propriedades do servidor:

2) Se a prioridade não estiver instalada na guia Processador - você precisa instalar

3) Máximo grau de paralelismo colocado em 1.

4) Incluir agente do SQL Server, personalize o correio de banco de dados - não há nada difícil lá, não vou descrever em detalhes.

5) Personalizar planos de serviço:
Em geral:
a) Atualizar estatísticas - a cada 2 horas
b) DBCC Freeproccache - a cada 2 horas
Para cada banco de dados:
a) backup completo
b) Backup de diferença
c) desfragmentação de índices - todos os dias
d) índices perestroika - à noite nos fins de semana
e) Verificar a integridade da base - uma vez por mês à noite no fim de semana

6) Eu recomendo instalar o modelo de recuperação para cada banco de dados (em propriedades) como simples. Se você não tiver um sistema 24/7 e menos de 1000 usuários na base, não há cluster tolerante a falhas e você não assinou SLA no qual assumimos no caso da saída de qualquer equipamento para restaurar os dados para um segundo (e não desde o último backup), essa recomendação será razoável. Caso contrário, você será muito em breve por muito tempo e convulsivamente refletindo onde ir nasce tranzaction log

7) Remova o banco de dados TEMPDB de bancos de dados ordinários para outro disco - mesmo se você tiver que reconfigurar a matriz RAID e reduzir seu desempenho. Caso contrário, 1 usuário será capaz de paralisar o trabalho de todos os outros. Se você tiver um hardware acelereator em vez de um disco rígido, então é claro que você não pode separar e colocar o Tempdb sobre ele, mas é somente se houver

8) Defina qualquer meio de monitoramento - por exemplo, gosto do spotlight http://www.quest.com/sqotlight-on-sql-server-enterprise/

9) Verifique-se com o Microsoft Best Practice Analizer - http://www.microsoft.com/download/en/details.aspx?id\u003d15289 - Uma ferramenta maravilhosa que ajuda não apenas com configurações, mas também com a solução de muitos problemas.

Agora brevemente para o que fizemos tudo isso:

1) memória. O valor mínimo simplesmente salvá-lo de "Glitches" quando o servidor SQL para alguns outros motivos conhecidos não usar toda a memória disponível para ela. Deve comer tudo! O valor máximo irá salvá-lo da troca caso o mesmo otimizador do Otimizador de memória do SQL Server decidirá que ainda o machucaria ....

3) Um ponto muito importante - o immo precisa ser colocado em 1 em todos os sistemas transacionais. Em primeiro lugar, isso impede que parte das fechaduras entre diferentes processos tentando execute 1 pedido, respectivamente, nos protege de alguns erros "estranhos". Em segundo lugar ... 1 "Kill" solicitação poderá retirar todos os recursos do servidor, que é um pouco verdadeiro em relação ao restante dos usuários do sistema. O parâmetro determina se 1 pedido pode ser processado como muitos núcleos do processador.

5) Sobre estatísticas e limpeza do cache processual - isso é "em uma audiência" e aqui muitas vezes esquecemos a reyndexation. Enquanto isso, este procedimento é bastante importante, especialmente com o aumento do volume da base, sua importância aumenta. Às vezes, até 60% de desempenho são perdidos na fragmentação do índice.

7) Se houver um acelerador de hardware ou simplesmente 2 discos com diferentes velocidades de acesso, eu pensaria reconsencialmente em realçar os grupos de arquivos nos bancos de dados e dividir tabelas individuais a diferentes matrizes de disco, com tempo de acesso diferente. Afinal, você concorda, o pH "bens em armazéns" e o livro de referência "Armazenamento de informações adicionais" 2 do objeto do requisito para o armazenamento é enraizado. Não é necessário armazenar todos os arquivos e imagens na matriz rápida no banco de dados - você pode selecioná-lo em um separado, não tão rápido, mas onde há muitos lugares (e não tem medo de um monte de arquivos para baixar, pelo caminho).