Arquivo da categoria: Performance

SharePoint: SQL Server MAXDOP = 1 – é realmente necessário?

Olá SharePointers,

Hoje vou falar um pouco do MAXDOP (já ouviram falar?). MAXDOP é a propriedade no SQL Server que define o grau máximo de paralelismo (aka: Max Degree Of Parallelism) para as queries do SQL.

A microsoft recomenda que, para instâncias do SQL dedicadas ao SharePoint, esse valor seja fixado com 1 para uma performance otimizada (Storage and SQL Server capacity planning and configuration (SharePoint Server 2010)). Muito embora, até a versão 2010 do SharePoint encontramos várias instalações com configurações diferentes desse valor, isso não era um “blocker”. Na versão 2013 do SharePoint, isso passou a ser um blocker de instalação. Veja abaixo:

New-SPConfigurationDatabase : This SQL Server instance does not have the required "max degree of parallelism" setting of 1. Database provisioning operations will continue to fail if "max degree of parallelism" is not set 1 or the current account does not have permissions to change the setting. See documentation for details on manually changing the setting

3225_MAXDOP_0_png-550x0

Ainda de acordo com a Microsoft, o MAXDOP serve para mostrar para o SQL como aplicar o paralelismo, ou seja, se o MAXDOP estiver setado em 0 (valor default) o SQL detecta o melhor grau de paralelismo de acordo com a quantidade de CPUs disponíveis.

Se estiver setado em 1, os “parallels plans” são desabilitados por default.

Qualquer valor diferente disso serve para definir um grau específico.

 

Mas então o SharePoint não utiliza paralelismo? Certo?

ERRADO! Por questões de performance a melhor opção de performance é desabilitar esse recurso, mas, quando o SharePoint precisa, ele define Hints de paralelismo direto nas stored procedures (mais de 150 SP’s !!).

 

Para mais informações sobre o assunto, acessem os links abaixo:

 

Trabalhando com listas “grandes” – Parte 2

Olá SharePointers,

Como eu havia prometido, estou continuando a série de posts sobre como trabalhar com listas grandes no SharePoint 2010. Para quem não acompanhou, pode ler o primeiro post da série Trabalhando com listas “grandes” – Parte I.

Agora, vou demonstrar algumas técnicas para lidar com essas listas grandes para não impactar performance e gerar uma boa experiência para os usuários.

#VamosLá

Colunas Indexadas

A primeira opção, é indexar colunas para facilitar que a informação seja encontrada com rapidez. Entretanto, precisamos considerar algumas informações:

  • Cada índice é um objeto que fica armazenado no banco, portanto, para toda operação feita um certo overhead para atualização do mesmo;
  • Por tanto, devemos criar índices somente para colunas que serão utilizadas para filtros.
  • Toda coluna que deve ter valor único, obrigatoriamente será indexada.
    Veja abaixo a tabela que mostra qual coluna pode ou não ser indexadas:
Tipos de Colunas suportados Tipos de colunas não suportados
Uma linha de texto Múltiplas linhas de texto
Opção (valor simples) Opção (multivalorados)
Número Calculado
Moeda Hyperlink ou Figura
Data e Hora Colunas Customizadas
Consulta (valor simples) Consulta (multivalorados)
Pessoa ou Grupo (valor simples) Pessoa ou Grupo (multivalorados)
Sim/Não Dados externos
Metadados gerenciados

Para saber como indexar uma coluna, veja aqui: http://office.microsoft.com/en-us/sharepoint-foundation-help/manage-lists-and-libraries-with-many-items-HA010377496.aspx#_Create_a_simple.

Criar Views com Filtros baseados em Colunas Indexadas

Para evitar o List View Threshold (5000 itens por default), devemos criar Views Filtradas que retornem uma quantidade menor do que esse limite.

Fique atento, pois a Primeira coluna do filtro deve atender esse requisito, caso contrário não fará efeito.

Uma outra dica bastante importante é utilizar o operador And (E). Ele ajuda a diminuir a quantidade de itens retornados, mas ainda assim a primeira coluna precisa retornar menos do que 5000 itens.

Organizar os itens utilizando pastas

Uma forma de organizar melhor os itens é utilizar pastas. No behind the scenes o SharePoint cria um índice interno para cada pasta criada.

Fiquem atentos aos itens abaixo:

  • Uma pasta pode conter mais itens do que a quantidade especificada na propriedade List View Threshold, entretanto, para evitar que o SharePoint bloqueie o acesso, você deve utilizar uma view filtrada baseada em colunas indexadas.
  • Se você escolher a opção Mostrar todos os itens sem pastas você deverá utilizar um filtro baseado em colunas indexadas para não atingir o limite de itens imposto na opção List View Threshold.
  • O SharePoint não tem uma maneira automática de mover itens de uma pasta para outra.

Controlar as informações exibidas na página

A quantidade de código-fonte HTML levada para o navegador renderizar interfere na velocidade de como a página é apresentada para os usuários. Evite exibir uma grande quantidade de dados.

Utilize a paginação e o agrupamento.

Além disso, utilize o DATASHEET VIEW. O Datasheet View é um controle ActiveX desenhado especificamente para carregar os dados mais rápido e fazer atualizações assíncronas para o servidor.

Utilizar o período de “janela de manutenção”

Os administradores do SharePoint podem especificar um tempo chamado de janela de manutenção. Durante esse período no dia, os limites especificados (por exemplo o List View Threshold) são desabilitados, permitindo ao usuário fazer as operações que demandam acessar maior quantidade de informação sem que o SharePoint bloqueie.

Nesse artigo demonstrei formas de se trabalhar com listas grandes sem envolver programaçao. Permitindo a utilização do próprio SharePoint fazer alterações que podem ter impactos significativos na performance do SharePoint.

Devemos ter sempre essa preocupação com arquitetura da solução proposta e da performance da mesma.

No próximo artigo, escreverei sobre como trabalhar com listas grandes programaticamente.

#FicaADica