Slide 1

Slide 1 text

Arquitetura e estruturas internas do PostgreSQL

Slide 2

Slide 2 text

Sumário Arquitetura e estruturas internas do PostgreSQL Roteiro ● Introdução ● Catálogo do sistema ● Information schema ● Visualizando metadados ● Automatização de tarefas administrativas

Slide 3

Slide 3 text

Arquitetura e estruturas internas do PostgreSQL Introdução

Slide 4

Slide 4 text

Introdução Importância e utilidade ● Diagnóstico avançado de problemas ● Auditoria e introspecção de metadados ● Migração e Upgrades ● Manutenção eficiente

Slide 5

Slide 5 text

Introdução Aplicativos cliente ● psql ● pg_dump e pg_restore ● pg_basebackup ● createdb e dropdb ● … Documentação em: https://www.postgresql.org/docs/16/reference-client.html

Slide 6

Slide 6 text

Introdução Aplicativos servidor ● postgres ● initdb ● pg_ctl ● pg_upgrade ● … Documentação em: https://www.postgresql.org/docs/16/reference-server.html

Slide 7

Slide 7 text

Introdução Processos ● Postmaster; ● Backend; ● Listagem dos processos Postgres com o comando ps faux | grep postgres : Documentação em: https://www.postgresql.org/docs/16/bgworker.html https://savepoint.blog.br/2024/09/02/arquivos-diretorios-e-processos/

Slide 8

Slide 8 text

Introdução Diretórios e arquivos Fonte: https://www.interdb.jp/pg/pgsql01/02.html Documentação em: https://www.postgresql.org/docs/16/bgworker.html https://savepoint.blog.br/2024/09/02/arquivos-diretorios-e-processos/

Slide 9

Slide 9 text

Arquitetura e estruturas internas do PostgreSQL Catálogo do sistema

Slide 10

Slide 10 text

Catálogo do sistema Documentação em: https://www.postgresql.org/docs/current/catalogs.html https://savepoint.blog.br/2024/09/09/catalogo-do-sistema-pg_catalog/ Catálogo do sistema ● Conjunto de tabelas que contém metadados sobre o banco de dados e se encontram no schema pg_catalog; ● Algumas das principais tabelas: ○ pg_class ○ pg_roles ○ pg_database ○ pg_namespace ○ pg_attribute ○ pg_constraints ○ pg_proc ○ pg_sequence ○ pg_stats ○ pg_settings

Slide 11

Slide 11 text

Catálogo do sistema Information schema ● Schema padronizado definido pelo ISO que traz informações sobre os objetos do banco de dados, assim como o pg_catalog (roda em cima dele); ● Composto principalmente de views; ● Suportado por diversos SGBDs; ● Algumas das views: Documentação em: https://www.postgresql.org/docs/current/information-schema.html

Slide 12

Slide 12 text

Catálogo do sistema Objetos lógicos e físicos Lógicos ● Não têm uma representação física no sistema de arquivos, mas são gerenciados pelo Postgres (schemas, views, funções etc). Físicos ● Têm representação física no sistema de arquivos, ou seja, também são representados por arquivos em disco (tabelas- incluindo as do catálogo, índices, tablespaces, databases etc); ● Ficam nos diretórios global ou local, dentro do $PGDATA.

Slide 13

Slide 13 text

Catálogo do sistema Objetos globais e locais Globais ● Não pertencem a um banco de dados específico e podem ser acessados por qualquer banco de dados de uma instância no Postgres; ● Ficam especificamente no diretório global, no $PGDATA; ● Listagem de arquivos no diretório $PGDATA/global :

Slide 14

Slide 14 text

Objetos globais e locais Locais ● Pertencem a um banco de dados específico e só podem ser acessados dentro desse banco; ● Ficam no diretório base, no $PGDATA, cada objeto dentro da pasta do seu respectivo banco de dados; ● Listagem de arquivos nos diretórios $PGDATA/base e$PGDATA/base/16393 : Catálogo do sistema

Slide 15

Slide 15 text

Catálogo do sistema Objetos globais e locais Caso de uso ● Disco corrompido; ● Como encontrar o arquivo com erro? ● Exemplo:

Slide 16

Slide 16 text

Arquitetura e estruturas internas do PostgreSQL Visualizando metadados

Slide 17

Slide 17 text

Visualizando metadados Usuários e privilégios ● Consultando privilégios e membros das roles nas tabelas pg_auth_members e pg_roles:

Slide 18

Slide 18 text

Visualizando metadados Usuários e privilégios ● Consultando privilégios de um usuário sobre tabelas no information_schema :

Slide 19

Slide 19 text

Visualizando metadados pg_hba.conf ● Consultando informações do arquivo pg_hba.conf na tabela pg_hba_file_rule

Slide 20

Slide 20 text

Visualizando metadados Índices ● Consultando índices duplicados nas tabelas pg_index, pg_class, pg_am e pg_namespace:

Slide 21

Slide 21 text

Visualizando metadados Tablespaces ● Consultando índices duplicados nas tabelas pg_index, pg_class, pg_am e pg_namespace:

Slide 22

Slide 22 text

Arquitetura e estruturas internas do PostgreSQL Automatização de tarefas

Slide 23

Slide 23 text

Automatização de tarefas Limpeza de tabelas com mais de 20% de espaço inutilizado ● Geração de comandos para VACUUM usando as tabelas pg_class, pg_namespace e extensão pgstattuple_aprox:

Slide 24

Slide 24 text

Dúvidas? Contatos: ● Savepoint ● Slides: Speaker decker (Ludmila Mariana) ● Email profissional: [email protected] ● Email pessoal: [email protected] ● LinkedIn: Ludmila Chagas