sexta-feira, 10 de agosto de 2007
SQL Server 2005 Full-Text
Antes de começar é bom deixar claro que a performance fica realmente comprometida quando o resultado supera os 100.000 registros. Este post trata apenas de ajustes de software e não de hardware como separação física de bases de dados, etc, que podem trazer grandes melhorias do desempenho.
A base de dados ajustada contém pouco mais de 6 milhões de registros, ocupa 20Gb e possui um catálogo (utilizado pelo Full-Text Search para buscas) com 4 Gb.
Como otimizar as pesquisas (você precisa ter um conhecimento mínimo no FTS a partir de agora):
1) Utilizar CONTAINSTABLE no lugar de CONTAINS para grandes pesquisas
- Quando você utiliza o CONTAINS em uma condição WHERE, implicitamente é realizado um Join para combinar os IDs retornados pelo CONTAINS com os registros filtrados pelo WHERE, e isto degrada a performance quando utilizado em grandes bases de dados.
2) Incluir condições de pesquisa no texto indexado
- Ou seja, incluir no texto indexado pelo Full-Text Search todas as palavras utilizadas como restrição no WHERE, exemplo: suponha uma biblioteca com o conteúdo dos textos dos livros indexados, se você pesquisa por texto e restringe a pesquisa apenas para os livros de determinado assunto, o texto do assunto deve ser incluído no texto do livro, ou seja, após o texto do livro, inclú-a algo como: ASSUNTO:TECNOLOGIA, supondo que o livro seja do assunto Tecnologia, agora utilize a palavra acima com o CONTAINSTABLE.
3) Aumentar o time-out do full-text (SQL Server 2005 SP2)
EXEC sp_configure 'remote query timeout', 10000 -- o padrão é 600 segundos
combine com a seguir:
EXEC sp_fulltext_querytimeout @ftcat = 'nomedocatalogoFT', @timeout = 10000000 -- em milisegundos
4) Configure memória suficiente para o Full-Text Search
Deixe o ajuste de performance do sistema em "System cache", da seguinte forma: botão da direita em "Meu Computador", selecione "Propriedades", "Avançado", "Ajuste de performance", abra a caixa de diálogo "Avançado" na seção de uso de memória, selecione melhor performance para "Cache do sistema".
5) Outras configurações
Como regra geral, configure o serviço Full-Text para criar indices de acordo com SLA, para isto a opção full-text crawl deve ser definida como 2x o número de processadores físicos do servidor, no meu caso segue a configuração:
EXEC sp_configure 'max full-text crawl range', 2
(obs: se der erro, execute antes: EXEC sp_configure 'show advanced option', '1' para permitir visualização e ajustes das opções avançadas)
Em seguida, ajuste o uso de recursos para o full-text:
EXEC sp_fulltext_service 'resource_usage', 5 -- padrão 3
Neste caso, a máquina fica mais dedicada para o uso com pesquisas Full-text e irá utilizar até 100% do processador para isto.
Apenas com os ajustes acima, tive um ganho de 60% no retorno das pesquisas. Você pode também estudar e modificar suas cláusulas SQL. Para concluir, não existe uma 'receita de bolo' para otimizar as pesquisas com Full-Text, você terá que experimentar, ou seja, o processo é um pouco empírico.
Algumas fontes de referência:
http://www.microsoft.com/technet/prodtechnol/sql/bestpractice/ftslesld.mspx?pf=true
http://msdn2.microsoft.com/en-us/library/ms915345.aspx
Além do books online!
quinta-feira, 26 de julho de 2007
PASSO 8 - Criptografar o tráfico entre o servidor e os clientes do Banco de Dados
Como padrão, esta comunicação entre cliente e servidor é transmitida pela rede na forma de texto, desta forma qualquer um que utilizar um monitor de rede pode escutar ou capturar o texto e obter acesso à informação.
O SQL Server 2005 suporta o uso de SSL (Secure Sockets Layer) para criptografar o tráfego entre o cliente e o servidor, garantindo a identidade do servidor e evitando o risco de ataques do tipo acima.
Para proteger comunicações com SSL você precisa obter um certificado de um PKI (enterprise public key infrastructure) através do Microsoft's Certificate Services ou de outra instituição como VeriSign. O Certificado SSL deve conter o nome do host ou o FQDN (fully qualified domain name) do servidor da base de dados e deve estar armazenado no no computador local caso o SQL Server 2005 estiver executando no contexto de LocalSystem, caso contrário o certificado
deve estar armazenado no mesmo host que detém a conta que executa o serviço.
Uma vez que o certificado está instalado, abra o SQL Server Configuration Manager, expanda o SQL Server 2005 Network Configuration e dê um clique com o botão da direita em Protocols e selecione Properties. Na guia de Certificados, selecione o certificado desejado (na lista), na guia General selecione Force Encryption e modifique o valor para Yes. Uma vez configurado o SQL Server 2005 para usar o certificado, você precisa restartar o SQL Server 2005 para que as modificações tenham efeito.
Uma segunda maneira de criptografar o tráfego entre cliente e servidor é utilizando o IPsec. O benefício do IPsec é que nenhum configuração é exigida no SQL Server 2005, e pode ser utilizado para criptografar todo o tráfego (não só do SQL) e restringe o acesso ao servidor. Para mais informações sobre utilizar o IPsec com o SQL Server 2005, visite http://www.microsoft.com/sdisolation.
quarta-feira, 25 de julho de 2007
PASSO 7 - Executar o SQL Server Surface Area Configuration Tool
Você encontra o SQLSSAC em Configuration Tools, que é um submenu de Microsoft SQL Server 2005. O Surface Area Configuration Tool, quando executado, aponta automaticamente para o localhost, mas você pode utilizá-lo em outras instalações do SQL Server. Você pode escolher a visualização para configuração por serviços e conecções ou por características (features) (veja imagem). Para ajustes na segurança do SQL Server, esta ferramenta é a preferencial.
terça-feira, 24 de julho de 2007
PASSO 6 - Depois de instalar o SQL Server, aplicar suas atualizações e Service Packs
PASSO 5 - Instalar o SQL Server 2005
A primeira seleção que você deverá fazer é: quais componentes instalar ? Você não deve instalar componentes que não necessita (lembre-se que o objetivo é minimizar a superfície ou área de ataque). A recomendação é que quando for solicitado os Components para instalação no Setup Wizard, você clique em Advanced para selecionar apenas as ferramamentas que mais necessita.
Por exemplo, você pode escolher se instala ou não a replicação ou o full-text search e você está instalando uma instância individual do SQL Server 2005 que não será replicada para outros servidores e se não pretente utilizar buscas rápidas em texto então não selecione para instalação estas ferramentas.
Entre cuidadosamente com as credenciais criadas no Passo 4 para cada serviço. Quando for perguntando do mode de autenticação, selecione Windows Authentication Mode sempre que possível. Em algumas situações você ira precisar do Mixed Mode, que permite os dois métodos de autenticação. Se você escolher Mixed Mode, precisará entrar com a senha do SQL Server systems administrator (sa) Assim como as contas criadas no Passo 4, você deve assegurar que a senha é forte além de definir uma agenda para substituição/mudança dela.
PASSO 4 - Criar conta para executar o SQL Server
PASSO 3 - Limitar o acesso ao Servidor/Host
Você limita a interatividade assegurando que a base de dados SAM não contém contas desnecessárias e apenas contas do domínio possuem acesso. Você pode consultar e retirar contas do sistema utilizando o MMC (Microsoft Management Console) Gerenciamento do Computador (Computer Management snap-in) (compmgmt.msc).
A limitação de um logon interativo no servidor pode ser feita através do Group Policy ou utilizando o MMC Diretiva de Segurança Local (Local Security Settings snap-in)(secpol.msc), em Diretivas locais, Atribuição de direitos de usuários, Fazer logon local e Negar logon local. Você terá que dar uma atenção específica para membros do domínio, já que em muitos casos os membros do grupo Admins. do Domínio também são administradores do banco de dados, mas em alguns casos eles não 'devem' ser. Para retirar esta pré-definição, remova o grupo "Admins. do Domínio" do grupo local "Administradores" do servidor, e adicione quem você desejar.
Para previnir ataques remotos através da rede, você deve colocar o servidor em um segmento de rede seguro e utilizar pelo menos um firewall como por exemplo aquele que já vem incluído no Windows Server 2003 SP1 por exemplo. E finalmente, para garantir a segurança fisica do sevidor, ele deve permanecer em um local com acesso restrito, já que os 'attackers', se tiverem acesso ao equipamento, podem 'bootar' um SO alternativo e resetar a senha do administrador.
PASSO 2 - Aplicar todos os Service Packs e atualizaçõeses de segurança no Servidor/Host
segunda-feira, 23 de julho de 2007
PASSO 1 - Preparando para Instalar o SQL Server 2005
Neste sentido, o primeiro passo é preparar cuidadosamente o servidor que, particularmente, sugiro que seja dedicado à tarefa de servir um Banco de Dados, portanto, não utilize servidores IIS (web), controladores de domínio (DC), etc.Desinstale todos os aplicativos e desabilite todos os serviços desnecessários do servidor, deixe apenas o SQL Server 2005.
SQL SERVER 2005 – Segurança em 10 passos
Continua...
terça-feira, 10 de julho de 2007
FILL FACTOR do SQL Server
Imagine uma prateleira com 100 livros organizados, por exemplo, em ordem alfabética. Se você colar os livros um no outro, e tiver que adicionar algum novo livro, terá que empurrar os demais livros da prateleira para liberar espaço para este novo livro. Agora, se você deixar um espaço entre os livros, você não terá que fazer tanto esforço para incluir um novo.
Os índices das tabelas, no SQL Server, funciona da mesma forma, e quem define o percentual % livre por página[1] é a opção FILL FACTOR.
Quando você cria índices para suas tabelas, o SQL Server organiza os dados dentro de páginas de índices, desta forma qualquer alteração nos dados de um atributo (campo) pertencente a um índice, exige que o SQL Server reorganize a página de índice, e isto leva tempo. A opção FILL FACTOR define quanto de uma página de dados (em %) deve ser preenchida e quanto deve ser mantida em branco, que será reservada para uso futuro.
Após a criação do índice o espaço em branco deixado através da opção FILL FACTOR será utilizado para alterações, inclusões, etc.
A má notícia é que o SQL Server não refaz o índice, o que vai exigir que você, depois de um tempo, recrie para liberar novamente o espaço livre.
Não existe regra para a definição do FILL FACTOR, porém, o valor de 100% é utilizado quando o índice é destinado a uma tabela apenas para consulta. Você pode calcular um percentual com base nas tuplas (registros) que a tabela já tem, com a estimativa de quantas tuplas serão adicionadas ou alteradas por dia, e o tempo que você deseja ter para fazer nova manutenção na base de dados. Se o FILL FACTOR for muito baixo, o SQL Server deverá percorrer muitas páginas para localizar a informação tornando a consulta, tecnicamente, um pouco lenta.
[1] Página é a unidade fundamental/básica de armazenamento de dados do SQL Server. No SQL Server 2000 o tamanho de uma página é 8 Kb. A quantidade utilizada pelo índice irá depender do tipo do dado.
Mais informações em http://www.jcarvalhojr.eti.br/
segunda-feira, 9 de julho de 2007
DEFINIÇÃO DE UM PADRÃO BASEADO EM XML PARA DESCRIÇÃO DE NORMAS JURÍDICAS BRASILEIRAS
alteração das normas jurídicas brasileiras. Isto dificultou muito o processo de
estruturação e conseqüentemente o seu armazenamento em formato digital, criando
diversas soluções paliativas, mas não definitivas. Com o advento desta
regulamentação, a gerência de uma legislação tornou-se viável.
Este trabalho apresenta uma descrição XML para normas jurídicas brasileiras.
Esta descrição está baseada nas leis complementares 95 e 107, define uma
estrutura para a construção de arquivos XML e descreve as relações existentes
entre as normas.
O modelo proposto leva em conta aspectos temporais de controle de versões
e de interdependência entre as normas, utilizando referências cruzadas na descrição
XML.
Link para o documento final: http://dspace.c3sl.ufpr.br/dspace/bitstream/1884/2275/1/dissertacao+v8.pdf