TableSpace ;
Tags: database, learning
Published: 2023-11-14 00:54:18

A administração do armazenamento de um banco de dados é fundamental em qualquer sistema de software, e um dos conceitos essenciais dentro desse contexto é o de "tablespace". Neste artigo, mostraremos o que é um tablespace, sua sintaxe, vantagens e desvantagens, e exemplos de aplicações no mercado.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lugxgukruo3ivr2goru9.gif)

**O que é uma TableSpace?**
 
A tablespace no Oracle é uma unidade lógica de armazenamento que serve como uma área para armazenar dados do banco de dados. O Oracle organiza os dados logicamente em tablespaces, que, por sua vez, são compostos por um ou mais arquivos de dados (datafiles), cada arquivo de dados está ligado exclusivamente a uma tablespace.

Em resumo, tablespaces são unidades organizacionais lógicas que agrupam segmentos, como tabelas e índices, enquanto os arquivos de dados (datafiles) representam a implementação física dessas tablespaces, armazenando coletivamente todos os dados do banco de dados Oracle.

A figura a seguir ilustra o relacionamento entre um banco de dados, espaços de tabela e arquivos de dados:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o5xs4y30hz66j57pbphw.png)



**O que posso fazer em uma Tablespace?**

- Controlar o tamanho do armazenamento que será alocado para os dados do banco de dados;
- Conceder cotas de espaço específicas aos usuários do banco de dados;
- Melhorar o desempenho do banco de dados alocando armazenamento de dados entre dispositivos;
- Executar backup ou recuperação parcial do banco de dados.

**Quais os tipos de Tablespace?**

- **TABLESPACE para Dados:** Armazena os dados das tabelas e clusters.
- **TABLESPACE para Índices:** Destinado exclusivamente ao armazenamento de índices. Separar dados e índices pode otimizar a performance.
- **TABLESPACE Temporária:** Utilizada para operações que necessitam de espaço temporário, como as operações de ordenação.
- **TABLESPACE de Desfazer (UNDO):** Armazena informações de desfazer, que são usadas para reverter transações e manter a consistência dos dados.

**Criação de uma Tablespace:**
A criação de TABLESPACES é realizada através do comando CREATE TABLESPACE. A sintaxe é:

```
CREATE TABLESPACE nome_tablespace 
    DATAFILE 'caminho/arquivo.dbf' 
    SIZE tamanho_inicial 
    AUTOEXTEND ON NEXT tamanho_incremental 
    MAXSIZE tamanho_maximo;
```

**Alteração de uma Tablespace:**
Para modificar um TABLESPACE existente, utiliza-se o comando ALTER TABLESPACE. Por exemplo, para adicionar ou redimensionar um arquivo de dados:

**Adicionar um arquivo:**

```
ALTER TABLESPACE  tbs_exemplo
    ADD DATAFILE '/oradata/tbs_exemplo02.dbf' 
    SIZE 100M;
```

**Redimensionar um arquivo:**

```
ALTER DATABASE tbs_exemplo
    DATAFILE '/oradata/tbs_exemplo.dbf' 
    RESIZE 150M;
```

**Exclusão de uma Tablespace:**
A exclusão é realizada com o comando DROP TABLESPACE, seguido pelo nome do TABLESPACE e, opcionalmente, pela cláusula INCLUDING CONTENTS para eliminar também os objetos associados. Por exemplo:

```
DROP TABLESPACE tbs_exemplo
    INCLUDING CONTENTS;
```

**Quais são as vantagens e desvantagens de uma Tablespace?**


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4njd350leg4jn87jv2p3.jpg)

**VANTAGENS:**

- **Gerenciar um Armazenamento Flexível:** O Tablespace nos permite que o banco de dados seja alocado e redistribuído de uma forma mais flexível em seu armazenamento, de acordo com o que for necessário, assim facilitando a adaptação que este banco de dados teve devido às mudanças que foram feitas em seu armazenamento.
- **Melhorias no Desempenho:** Ao se distribuírem as tabelas e índices em tablespaces separadas, podemos ter um melhor desenho, isso porque os dados serão distribuídos em diferentes sistemas de armazenamento, o que reduz a limitação do E/S.
- **Backup e Recuperação mais Eficientes:** É possível colocar tablespaces em locais de backup e restauração granulares, isso nos ajuda porque assim podem ser realizados backups individuais dos tablespaces,  facilitando e tornando o processo mais eficiente do backup de todo o banco de dados.
- **Gerenciar Espaço Temporário:** É possível criar tablespaces temporários, que armazenará dados temporários que são usados apenas para consultas e operações de classificação, o que melhora o desempenho por estar separando dados temporários dos dados permanentes.
- Isolar Dados: O tablespace consegue nos ajudar na hora que precisamos isolar algum dado, o que nos facilita uma administração e manutenção maior, ao separar alguns dados de de outros projetos.

**DESVANTAGENS:**

- **Planejamento Adequado:** O tablespace tem muito benefícios, porém para usufruir dos mesmo é necessário um melhor planejamento, bem mais cuidadoso e bem gerenciado, o que exige maior tempo e trabalho no projeto.
- **Aloca em Espaço Desigual:** Além de um bom planejamento, também é necessário gerenciar muito bem os tablespace, isso porque se houver qualquer erro ele pode acabar colocando os dados em espaços desiguais, o que prejudica o desempenho.
- **Complexidade: **Ao usarmos o tablespace, ele nos traz uma maior complexibilidade ao nosso projeto, isso porque é necessário maior cuidado e planejamento para criação do mesmo.
- **Recuperação Granular Complexa:** Neste caso aqui, a recuperação além de vantajosa, traz também uma desvantagem, isso porque ao fazermos uma recuperação, é necessário saber bem qual dado será recuperado, para não trazer falhas ao projeto.


**Exemplos de aplicações no mercado:**


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m4gtzpg5i9jezpsiah2c.gif)
**Oracle Database**
No dia-a-dia usando o Oracle Database para ter um Ambientes de Desenvolvimento e Teste criando cópia do sistema que está em produção tendo a segurança de fazer simulações com as informações atualizadas e originais sem ter risco de corromper a estrutura em produção, para aumentar a segurança de que os dados armazenados não serão perdidos nesse processo de Testes ou por uma possível falha, a utilização da tablespace contém Backups e Recuperação podendo realizar backups de tablespaces específicas garantindo teste seguros e acelerando o consumo de dados em grandes volumes. Uma outra função interessante é a Manutenção Online que se baseia em atualizar uma tabela minimizando o impacto nos usuários finais, como por exemplo, criar um índice em uma tabela temporária e já atualizar essa opção em produção para o usuário sem a necessidade de interromper o sistema que está em produção.

**MySQL**
Já no MySQL a tablespace é utilizada para algumas funções semelhantes mas outras também como Organização de Dados, dando a possibilidade de organizar os dados relacionados a áreas específicas, facilitando a manutenção e a administração do sistema. Como pode acontecer de existir estruturas com um tamanho grande para o banco de dados, a utilização do Particionamento de Tabelas é muito utilizado, já que aquela tabela será dividida em tabelas menores, fazendo com o que a busca, manutenção e atualização do banco seja simplificada, não tendo a necessidade de acessar toda a tabela que deseja gerenciar. Também é possível fazer Backups e Recuperação que é igual ao Oracle, podendo selecionar tabelas, objetos e estruturas específicas, acelerando o consumo de dados em grandes volumes.




                    
**CONCLUSÃO**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b3r5eoo5vobon69vcxir.gif)
As tablespaces desempenham um papel fundamental no gerenciamento de um bancos de dados, pois permite que o seu administrador tenha eficiência, segurança, controle das ações feitas dentro do banco, controle de desempenho e a capacidade de restaurar dados de maneira simples e eficaz. Ao mesmo tempo que essa ferramenta auxilia muito, ela exige conhecimento detalhado, tendo em vista a complexibilidade, responsabilidade e além de tudo se a utilização dela é realmente necessária para o banco de dados no gerenciamento das funções e dos dados armazenados nas estruturas. Por esses motivos o estudo e experiência dessa ferramenta é de vital importância ao utilizar, assim garantimos a integridade e a confiabilidade de todo o gerenciamento do banco de dados.