Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tidinas

[Resolvido] Como estimar o tamanho de uma tabela?

Recommended Posts

Olá turma!

 

Estou tentando encontrar uma formula para estimar o tamanho de uma tabela que ainda não foi criada. Pesquisando, cheguei a uma fórmula assim:

 

tamanho tabela = (tamanho medio linha) * (quantidade de registros)

 

No entanto, como vocês devem perceber, falta algo nesta fórmula... Ela não cita PCTFree nem reader de linha, por exemplo. Vamos às perguntas:

 

- Como faço para calcular o tamanho médio de uma linha?

 

- Como devo calcular o PCTfree e o Reader das linhas e como faço para integrar esses dados ao calculo acima?

 

- Estou esquecendo de algo (além do PCTfree e do Reader)?

 

Grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Do manual

 

Estimating the Space Use of a Table The size of a database table can vary greatly depending on tablespace storage attributes, tablespace block size, and many other factors. The CREATE_TABLE_COST procedure of the DBMS_SPACE package lets you estimate the space use cost of creating a table. Please refer to Oracle Database PL/SQL Packages and Types Reference for details on the parameters of this procedure.

 

The procedure has two variants. The first variant uses average row size to estimate size. The second variant uses column information to estimate table size. Both variants require as input the following values:

 

•TABLESPACE_NAME: The tablespace in which the object will be created. The default is the SYSTEM tablespace.

 

•ROW_COUNT: The anticipated number of rows in the table.

 

•PCT_FREE: The percentage of free space you want to reserve in each block for future expansion of existing rows due to updates.

 

In addition, the first variant also requires as input a value for AVG_ROW_SIZE, which is the anticipated average row size in bytes.

 

The second variant also requires for each anticipated column values for COLINFOS, which is an object type comprising the attributes COL_TYPE (the datatype of the column) and COL_SIZE (the number of characters or bytes in the column).

 

The procedure returns two values:

 

•USED_BYTES: The actual bytes used by the data, including overhead for block metadata, PCT_FREE space, and so forth.

 

•ALLOC_BYTES: The amount of space anticipated to be allocated for the object taking into account the tablespace extent characteristics.

 

 

Fonte

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta!Agradeço sua ajuda!

 

Acho que não fui muito específico. Já conheço a procedure que você citou, mas o que preciso é de uma espécie de fórmula que calcule o tamanho de uma tabela, como se eu fosse passar uma tabela de uma folha de papel para o Oracle, ou saber quanto uma tabela do DB2 irá ocupar no Oracle. Uma fórmula que eu possa fazer em uma folha de papel, entende?

 

Trata-se de um trabalho da faculdade e acho que o professor quer aprendamos a fazer o calculo manualmente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eu faço GROSSO MODO é :

 

Para cada campo

__N/2 para NUMBER

__8 para DATE

__N para CHAR

__(média do tamanho esperado)+2 para VARCHAR2

__(média do espaço esparado) para BLOB´s

 

Tendo o somatório multiplica isto pelo número de registros esperados.

 

Academicadamente fraco mas na prática dá uma boa estimativa, pois em geral o número de registros que é o mais difícil de prever.

 

Achei até curiosa a pergunta e fucei se alguém havia publicado alguma solução do tipo FUNCTION mas não achei nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eu faço GROSSO MODO é :

 

Para cada campo

__N/2 para NUMBER

__8 para DATE

__N para CHAR

__(média do tamanho esperado)+2 para VARCHAR2

__(média do espaço esparado) para BLOB´s

 

Tendo o somatório multiplica isto pelo número de registros esperados.

 

Academicadamente fraco mas na prática dá uma boa estimativa, pois em geral o número de registros que é o mais difícil de prever.

 

Achei até curiosa a pergunta e fucei se alguém havia publicado alguma solução do tipo FUNCTION mas não achei nada.

 

 

Legal Motta, você está chegando exatamente no ponto que preciso. Mas não estou entendo sua notação... O que significa "n/2 para NUMBER" e os outros? Poderia dar um exemplo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

N é o tamanho do campo para um NUMBER(10) conte 5 bytes por exemplo.

 

Um varchar usa 2 bytes internos para guardar seu tamanho por isto o acréscimo.

 

Ok ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi Motta! A metodologia é bastante coerente... Vou ver se pode ser aceita no trabalho!

 

Grato!

 

Valew Motta, agora entendi. Verei com o professor o que ele acha do seu método...

 

Muito obrigado cara!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.