[firebase-br] RES: [firebird - br] Dividir banco de dados, realmente ajuda?

Sandro Souza escovadordebits em gmail.com
Dom Maio 3 06:06:26 -03 2009


Bom dia/tarde amigos.

Posso estar enganado, e se eu estiver, por favor corrijam-me, mas acredito
que o Firebird ainda não tenha o recurso de dividir uma mesma tabela em mais
de uma base de dados, ou seja, todos os registros/linhas de uma tabela
necessariamente estão em uma mesma base de dados, ou seja, estarão em um
mesmo "cesto" (usando as palavras de nosso amigo Magnos).

Nesse cenário, realmente não fará diferença alguma dividir a base de dados
em dois ou mais arquivos.

O exemplo, de nosso amigo Magno System é interessante, e podemos utilizá-lo
para exemplificar a idéia.

Se você tem uma tabela com 120000 registros/linhas, necessariamente todos
esses registros/linhas estarão na mesma base de dados, a não ser que eu
esteja enganado e o Firebird já consiga distribuir os registros de uma mesma
tabela em mais de uma base de dados, caso contrário, tudo estará em uma base
de dados, seja ela a primária ou não.

Sendo assim, não haverá qualquer diferença de performance no sentido de ter
dividido ou não a sua base de dados original, a final, todos os dados dessa
mesma tabela estarão no mesmo "cesto".

Lembrem-se também que o Firebird não necessita percorrer sequencialmente
todas as páginas da(s) base(s) de dados para localizar uma determinada
página, pois sua organização interna foi construida pensando em todas essas
situações.

Podemos até comparar a estrutura das bases de dados com a estrutura de um
sistema de arquivos (como a FAT16/32, NTFS, ReiserFS, etc...), em que as
páginas equivaleriam aos clusters (agrupamentos), já que também representam
o menor bloco de dados onde as informações são armazenadas.

Já pensou se o sistema operacional tivesse que percorrer todos os clusters
(agrupamentos) de sua partição só para encontrar um cluster específico?
Seria o pior sistema de arquivos já existente, merecendo o título de "lesma
paralítica do milênio".

Da mesma forma, a estrutura interna de cada base de dados também possui
áreas que mapeiam as páginas e suas respectivas localizações, para agilizar,
ao máximo, a pesquisa das mesmas.

Portanto, o que fará realmente alguma diferença, é a forma que são feitas as
pesquisas, ou seja, se você tomou o cuidado de consultar por campos/colunas
que já possuam algum índice, para que dessa forma, a consulta seja otimizada
ao máximo.

Uma situação é fazer uma pesquisa por campos/colunas que não possuam índice,
em uma tabela que está ocupando cerca de 1Gb de dados, obrigando o SGBD a
fazer uma pesquisa sequencial em todos os registros (FULL SCAN). Outra
situação é efetuar uma pesquisa por campos/colunas que já possuam um índice,
fazendo com que o SGBD utilize sua "mira telescópica" para encontrar os
registros que deseja.

Nesse exemplo citado acima, não importa se a base de dados contém apenas
essa tabela de 1Gb ou outras tabelas que deixem essa base de dados com mais
de 120Gb. A performance será a mesma pois os outros 119Gb não serão
utilizados utilizados, mesmo no caso da pesquisa sequencial.

Se eu estiver enganado, por favor me corrijam. mas acredito que essa seja a
lógica correta. Procure sempre estruturar suas tabelas da maneira mais
otimizada possível, pensando sempre nas consultas (criando índices, etc...)
e tudo ficará rápido.

Espero ter ajudado mais que atrapalhado. :D

2009/4/30 Magno System <magno em speet.com.br>

> Imagine você procurando uma foto no meio de 120000 fotos. Faz diferença se
> elas estão em 1 ou 120 cestos, visto que você não sabe qual cesto ela está
> ???
>
>
> ----- Original Message ----- From: "Renato André" <renato em keninfo.com.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Thursday, April 30, 2009 5:59 PM
>
> Subject: Re: [firebase-br] RES: [firebird - br] Dividir banco de
> dados,realmente ajuda?
>
>
> No caso de um select deve ser retornado para o usuário o registro
> procurado,
> neste caso, não visualizo que a pessoa tenha o mesmo desempenho em um banco
> de dados por exemplo de 120g e um de 1g, no meu raciocício a busca feita no
> banco de 1g será mais rápida que a feita no banco de 120g... eu realmente
> estou enganado?
>
>
> ----- Original Message ----- From: "Douglas Tosi" <douglasht em gmail.com>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Thursday, April 30, 2009 5:35 PM
> Subject: Re: [firebase-br] RES: [firebird - br] Dividir banco de
> dados,realmente ajuda?
>
>
> 2009/4/30 Renato André <renato em keninfo.com.br>:
>
>> Depende ... no caso de dividir o banco, creio que adiantaria em se
>> tratando
>> de desempenho, pois creio que isso agilizaria muito o desempenho pois
>>
>
> Errado.
> Não existe diferença entre um banco dividido em 10 arquivos de 1GB e o
> mesmo banco em um único arquivo de 10GB.
>
> A divisão de arquivos só é útil se você não tiver espaço suficiente em
> uma partição e quiser "continuar" a base de dados em outra partição.
>
> hth,
> --
> Douglas Tosi
> www.sinatica.com
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
> --------------------------------------------------------------------------------
>
>
>
> No virus found in this incoming message.
> Checked by AVG - www.avg.com
> Version: 8.0.238 / Virus Database: 270.12.10/2088 - Release Date: 04/30/09
> 06:01:00
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista