WordPress.com



Comparativo entre Varchar(14) e BigIntUma das principais análises necessárias que devemos fazer antes de armazenar um dado dentro de uma table é verificar qual seria o melhor ou o mais indicado datatype para contêr o valor.Pensando nisso, um dos casos mais interessantes em rela??o á esta análise relaciona-se com o armazenamento de informa??es vinculadas ao CPF ou o todos sabem o CNPJ é um Cadastro Nacional de Pessoa Jurídica existente no Brasil, este cadastro é composto basicamente por 14(quatorze) digitos numéricos. Justamente por esta quantidade de números um pouco acima do normal que se ínicia uma grande discuss?o.O que é melhor fazer armazenar armazenar estes valores em um datatype do tipo Varchar ou ent?o utilizar o datatype BigInt.O datatype BigInt consiste em um tipo de dados utilizado para armazenar valores numéricos, com a capacidade de armazenamento de uma faixa de valores superior a suportada para datatype Int, a única desvantagem em rela??o ao Int e vinculada com o tamanho de espa?o ocupado pelo BigInt que neste caso representa 8 bytes, sendo que, o Int ocupado no máximo 4 bytes.Por outro lado utilizar o datatype Varchar com o tamanho de 14 posi??es poderá facilitar o armazenamento destes dados, mas é claro somente os números, por outro estaremos proporcionando e até mesmo for?ando uma possível aloca??o de dados um pouco maior que o BigInt. Outra considera??o que devemos levar em conta, é que se for necessário realizar uma pesquisa sobre estes dados armazenados no Varchar, o SQL Server normalmente apresenta uma certa perda de performance na busca de dados armazenados em campos do tipo Char, VarChar, Nchar ou Nvarchar.Desta forma, decidi criar um pequeno laboratório para testes e tentarmos evidenciar o que seria melhor para uma pequena por??o de dados armazenados em duas tabelas muito similares.Veja abaixo código de exemplo:--Criando a Table para armazenar o CNPJ em VarChar--Create Table TB_VarChar_CNPJ (Codigo Int Identity(1,1), CNPJ Varchar(14) Not Null)--Criando a Table para armazenar o CNPJ em BigInt-- Create Table TB_BigInt_CNPJ (Codigo Int Identity(1,1), CNPJ BigInt Not Null)--Inserindo os dados--Insert Into TB_VarChar_CNPJ Values('1234567891234')Go 10Insert Into TB_BigInt_CNPJ Values(1234567891234)Go 10--Verificando os dados armazenados em ambas as tables--Select * from TB_VarChar_CNPJSelect * from TB_BigInt_CNPJVamos come?ar a análise através de uma verifica??o do espa?o ocupado pelos dados inseridos em nossas tabelas.-- Verificando o espa?o ocupado por cada table --sp_spaceused 'TB_VarChar_CNPJ'sp_spaceused 'TB_BigInt_CNPJ'Após realizar esta primeira análise o podemos identificar que n?o ocorreu nenhuma varia??o de espa?o ocupado em cada table, mesmo utilizando tipos de dados diferentes.Agora vamos utilizar outra técnica para nossa compara??o através do comando DBCC ShowContig.-- Obtendo informa??es estatísticas sobre a Table TB_VarChar_CNPJ --Através do comando DBCC ShowContig, temos a possibilidade de obter informa??es sobre as estatísticas de dados armazenados em uma tabela, seu área de dados armazenados por página, quantidade de espa?o livre por página, entre muitas outras informa??es que podem fazer a diferen?a no momento de definir qual datatype poderá ser melhor.Dbcc ShowContig ("TB_VarChar_CNPJ")Observando o resultado da tabela TB_VarChar_CNPJ, podemos verificar que os dados armazenados no datatype Varchar est?o ocupando 3.68% da densidade de dados alocados por página e a média de espa?o livre por página é de 7796.0%.O próximo passo é executar o mesmo comando para a tabela TB_BigInt_CNPJ, conforme apresenta?o código abaixo e?demonstrado na Figura 5.?--Obtendo informa??es estatísticas sobre a Table TB_BigInt_CNPJ--Dbcc ShowContig ("TB_BigInt_CNPJ")Por outro lado o resultado da tabela TB_BigInt_CNPJ mostrou uma diferen?a interessante de dados armazenados no datatype BigInt, ocupando 2.57% da densidade de dados alocados por página e a média de espa?o livre de aproximadamente 7886.0%Com isso podemos dizer, que esta pequena quantidade de registros armazenados por cada table o datatype BigInt esta ocupando uma quantidade menor de espa?o em nossa página de dados para cada registro. Mas se analisarmos toda a capacidade de armazenamento da página de dados, o BigInt esta alocando menos dados por cada linha de registros do que o Varchar(14). Essa análise nos indica que com o passar do tempo o datatype Varchar irá ocupar um pouco mais de espa?o em cada página de dados que esta formando cada tabela, como também ira proporcionar uma aloca??o de mais registros por linha em cada página de dados um pouco maior que o BigInt.Sendo assim, vale a pena perder um pouco de espa?o no armazenamento de dados utilizando o Varchar com uma quantidade pequena, com o passar do tempo e o aumento de registros armazenados por página. Você poderá ser beneficiado com a capacidade de alocar mais dados por cada linha de registro, diminuindo de foma considerável algum tipo de fragmenta??o de dados e possibilitando uma melhor ocupa??o da área de armazenaento de dados existente em cada página.Importante destacar que em nenhum momento esta análise tem por objetivo for?ar o leitor a escolher o que supostamente foi apresentado com o resultados. Mas sim demonstrar algumas atividades que devemos realizar antes de escolher um tipo de dados que aparentemente é melhor. ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download