Particionamento de tabelas

Projeto de banco de dados

Lis Sulmont

Curriculum Manager

Por que particionar?

As tabelas crescem (100 Gb / Tb)

Problema: as consultas/atualizações ficam mais lentas

Porque: por exemplo, os índices não cabem na memória.

Solução: dividir a tabela em partes menores (= particionamento)

Imagem dos arquivos por data

Projeto de banco de dados

Atualização sobre modelagem de dados

 

**1. Modelo de dados conceituais  

**2. Modelo de dados lógicos

Para particionamento, o modelo de dados lógico é o mesmo.

**3. Modelo de dados físicos

A partição faz parte do modelo físico de dados.

Projeto de banco de dados

Particionamento vertical

Particionamento vertical

Dividir a tabela mesmo quando totalmente normalizada

Projeto de banco de dados

Divisão vertical: um exemplo

Exemplo de divisão vertical

Por exemplo, armazene long_description em um meio mais lento.

Projeto de banco de dados

Particionamento horizontal

Particionamento horizontal

Projeto de banco de dados

Partição horizontal: um exemplo

Particionamento horizontal: tabela de exemplo

Projeto de banco de dados

Partição horizontal: um exemplo

 

Divisão horizontal: exemplo

 

CREATE TABLE sales (
    ...
    timestamp DATE NOT NULL
)
PARTITION BY RANGE (timestamp);

CREATE TABLE sales_2019_q1 PARTITION OF sales FOR VALUES FROM ('2019-01-01') TO ('2019-03-31'); ... CREATE TABLE sales_2019_q4 PARTITION OF sales FOR VALUES FROM ('2019-10-01') TO ('2020-01-31');
CREATE INDEX ON sales ('timestamp');
Projeto de banco de dados

Prós e contras da partição horizontal

Vantagens

  • Índices de partições muito usadas cabem na memória
  • Mudar para um meio específico: mais lento vs. mais rápido
  • Usado tanto para OLAP quanto para OLTP

Desvantagens

  • Particionar uma tabela já existente pode ser um pouco complicado.
  • Algumas restrições não podem ser definidas
Projeto de banco de dados

Relação com o fragmentação

Fragmentação

Projeto de banco de dados

Vamos praticar!

Projeto de banco de dados

Preparing Video For Download...