Arquivo

Arquivo da Categoria ‘SQL Server’

O DBA de alta performance.

6, agosto, 2010 Sem comentários

Hoje conversaremos a respeito do trabalho do profissional responsável por Banco de Dados e seus desafios. Sabemos que o grande objetivo de ter um banco de dados em uma empresa é registrar e manter suas informações mais importantes. O responsável pela manutenção e administração dessas informações e de todos os sistemas que rodam utilizando bancos de dados é o Administrador de Banco de Dados, mais conhecido como DBA.

A cada ano, o trabalho desse profissional está cada vez mais complexo, pois os fatores que mais o afetam estão em constante crescimento, mais dados, mais bancos de dados, virtualização e carência de profissionais eficientes no mercado de trabalho.

O crescimento de dados, por exemplo, tem sido enorme nos últimos anos. Há alguns anos (década passada), os DBAs se preocupavam com Megabytes; hoje, têm que lidar com Terabytes e, já em algumas grandes companhias, com Pentabytes.

Isso tem gerado tarefas bem complexas para seu gerenciamento. Como, por exemplo, monitorar com segurança seus backups, o monitoramento e planejamento desse crescimento, Multiplataforma, Virtualização, Tunning, Capacitação e muitos outros.

E isso é apenas parte de suas funções, o DBA deve se preocupar se as aplicações que rodam utilizando os bancos de dados foram criadas dentro dos padrões que o banco exige, com tabelas modeladas, quantidade de índices nas aplicações, usuários que as utilizarão, enfim uma série de outros fatores que podem, e muito, atrapalhar seu desempenho. Digo “seus”, pois à medida que cresce o volume dos bancos de dados crescem também os tipos de plataformas e de versões a serem administradas.

Hoje a grande maioria dos DBAs tem que gerenciar ambientes de múltiplos bancos de dados e o seu mais novo desafio é estender seus conhecimentos a outros tipos não conhecidos anteriormente pelo profissional.

Outro fator que está se tornando cada vez mais comum é a virtualização. Com o grande crescimento de “datacenters” virtualizados, criou-se outro tipo de problema para se administrar banco de dados, que vai desde o planejamento da capacidade de seus servidores ao monitoramento da performance.

Performance, esse é o grande desafio. Quem nunca ouviu “minha aplicação está travada” ou ainda “nosso sistema está com problemas hoje”, frases comuns que afetam diretamente os DBAs, pois todos acreditam ser deles a responsabilidade de uma aplicação rodar “a todo vapor”. O constante monitoramento da performance de um banco de dados é a garantia que os usuários acessem os dados mais rápidos com facilidade e que o banco de dados utilize seus recursos de maneira eficiente.

Hoje temos uma carência de bons profissionais. Administradores de bancos de dados experientes sempre foram difíceis de encontrar, o treinamento é fundamental na sua formação e para quem deseja estar atualizado para o mercado. Apesar de esses fatores aumentarem os desafios do dia-a-dia, fornecedores de banco de dados têm trabalhado para que seus bancos sejam cada vez mais “autogerenciáveis”, algo tremendamente positivo e com melhorias já notadas. Porém, a complexidade do ambiente de SGBD está aumentando e não parece ter um fim para a gestão e a intervenção humana.

Independente desses desafios, espera-se que o DBA, sobrecarregado de trabalho, mantenha os sistemas de banco de dados essenciais disponíveis e otimizados para ter alta performance. O DBA de alta performance deve concentrar-se nas áreas fundamentais do gerenciamento de banco de dados, que são: Armazenamento, Capacidade e Performance.

Segundo Scott Walz, diretor sênior de produtos da Embarcadero, “para cumprir essas metas, o DBA deve adotar uma estratégia e equipar-se com as ferramentas certas para enfrentar esses desafios, pois ainda há muito que aprender, compreender e dominar a cada novo lançamento de banco de dados”.

Fonte: Site IMasters

Categories: Oracle, SQL Server Tags: , ,

Função TRUNC (data e hora) no SQL Server.

28, novembro, 2009 4 comentários

Caros,

Estava ajustando um módulo de classificados em um sistema, quando me deparei com um obstáculo. O cliente quer que os anúncios dos classificados expirem automaticamente após um determinado número de dias, para isso criei uma stored procedure que faz um select e um update no banco, segue abaixo o trecho:

DECLARE
            
@VALIDADE                          NUMERIC(1)
BEGIN
             S
ET @VALIDADE = CONVERT(NUMERIC, (SELECT VALORSTRING FROM PARAMETRO WHERE ID = ‘VALIDADE’))
             
BEGIN TRAN
              U
PDATE CLASSIFICADO SET STATUS = ‘E’ WHERE DATAHORA <= DATEADD(D, @VALIDADE * – 1, GETDATE()) AND STATUS <> ‘E’
              
IF @@ERROR = 0 COMMIT TRAN ELSE ROLLBACK TRAN

Quando fui verificar se havia dado certo, qual não foi a minha surpresa, a validade para teste era de 2 dias, então ele fez o update em todos os registros até as 19h de antes de ontem, pois eu rodei a stored procedure as 19h, ou seja ele checou a hora completa, e essa não era a intenção.

Como eu também trabalho com Oracle, me lembrei da função TRUNC([valordata]) que tem no PL-SQL, então me lembrei que nunca tinha utilizado isso no SQL Server, e fui procurar no São Google, encontrei diversos perdidos com o mesmo problema e somente uma resposta, não achei muito atraente, mas foi a única que eu encontrei, então segue abaixo:

Utilize a função CONVERT(tipo, valor).

CONVERT(NUMBER, GETDATE()) –> isso vai retornar o número de dias desde 01/01/1900, o “NUMBER” deve estar sem definição mesmo, pois assim ele retorna um valor inteiro, então basta compará-lo com a data do registro, assim:

CONVERT (NUMERIC, DATAHORA) <= CONVERT(NUMERIC, DATEADD(d, @VALIDADE * 1, GETDATE()))

Quem não quiser utilizar essa adaptação técnica (gambiarra) pode criar uma função no banco:

CREATE   FUNCTION TRUNC(
         
@DATA                DATETIME
) RETURNS DATETIME
AS
BEGIN
          
SET @DATA = CONVERT(DATETIME, FLOOR(CONVERT(NUMERIC(18,6), @DATA)))
          RETURN @DATA
END
GO

Quem tiver sugestões ou idéia melhor, sinta-se em casa, faça seu comentário.

Encontrei também um site que ajuda nas diferenças entre os dois bancos:

http://www.dba-oracle.com/oracle_news/2005_12_16_sql_syntax_differences.htm

[]´s

Miranda.

Categories: SQL Server Tags: , , ,