PostgreSQL Database Management - arquitetura Capítulo II

PostgreSQL Database Management

arquitetura Capítulo II

esboço

PostgreSQL é um poderoso código fonte, aberta para o sistema / relacional de gerenciamento de banco de dados cliente-servidor (RDBMS). tipos de dados (como JSON e tipo JSONB, tipo array) suporta tipo rico e personalizado. O tamanho de página padrão de memória PostgreSQL é 8kB.

 

PostgreSQL tem as seguintes características principais:

1 suporte ao idioma Boa SQL, apoiar o ACID , integridade associado, transações de banco de dados, Unicode multilíngue.

2 concepção alta simultâneo de leitura e escrita e não obstruem

3 suporta um número de tipos de modelos de base de dados relacional,: tipo de documento (tais como JSON e tipo JSONB, tipo de matriz), Chave / tipos de valor.

 

 

2,1 estrutura processo PostgreSQL

 

 

 

PostgreSQL é um cliente de um servidor usuário processo / aplicativo. Vários processo começa quando os começos de banco de dados, incluindo postmaster (daemon), postgres (processo de serviço), syslogger, CheckPointer, bgwriter, walwriter e outros processos auxiliares.

2.1.1 agente postal (daemon)

postmaster (Daemon) principais responsabilidades são:
banco de dados de start-stop 1.
2. escutar para conexões de cliente
3. Para cada processo servidor separado garfo de conexão do cliente postgres
4. Quando erro postgres processo serviço de reparo
5. Data Management Arquivo
6. gestão e operação da base de dados relacionada com processo de trabalho

2.1.2 processo de serviço Postgres

processo do servidor Postgres aceita e executa o enviado cliente (como psql, ou aplicações do usuário por meio de interfaces JDBC) comandos (consulta interativa SQL). Ele chama sobre um módulo subjacente (por exemplo, armazenamento, gestão de transacção, índice, etc.) de cada uma das principais módulos de função (por exemplo, compilador, optimizador, actuadores, etc.), realizar as várias operações da base de dados do cliente, e devolve o resultado.

 

2.1.3 syslogger (processo de registo do sistema)

Há muitos associados com os parâmetros de registro no arquivo de configuração postgresql.conf dos quais apenas está ligado, o processo principal começará parâmetros do processo de trabalho syslogger logging_collect configurações.

- Aquisição de PostgreSQL correndo estado e funcionando log gravadas no arquivo de log

- logging_collector no parâmetro de arranque não é recomendado para perto

- log_directory definir o diretório de log

- log_destination definir a saída de log, mesmo o formato

- log_filename definir o nome do arquivo de log

- conjunto log_truncate_on_rotation se repetir o uso da bicicleta e excluir o log

- tempo de ciclo conjunto log_rotation_age

- ciclo linha dimensão conjunto de log log_rotation_size

2.1.6 Processo auxiliar Checkpoint:

- para assegurar a consistência da base de dados

- ele aciona bgwriter ação e wal escritor

- tem mais parâmetros para controlar o intervalo de partida

 

2.1.7 processo de auxiliares backgroup escritor (processo de escrita de fundo):

Em PostgreSQL, processo de trabalho Bgwriter é o processo na memória compartilhada disco escreve páginas sujas. Quando inserido os dados do banco de dados ou atualização, e os dados não serão imediatamente persistiu ao arquivo de dados. Isto é principalmente para melhorar a inserção, atualização, o desempenho de exclusão dois dados de processos de trabalho Bgwriter pode periodicamente atualizar os dados sujos na memória para o disco, escova suja dados nem muito rápido nem muito lento se um bloco de dados é ele mudou várias vezes, mas desta vez para atualização muito rápido, então essas mudanças cada vez que é salvo em disco, o que pode levar a um aumento no 1/0 vezes. No caso de atualização lenta, se uma nova consulta ou atualização necessidade de uso de memória para blocos de dados armazenar lido do disco, porque não há espaço livre para armazenar esses blocos de dados, é necessário a desocupar a memória, que um número de primeira em memória de páginas sujas gravados no disco, o que levaria a mais necessidade de esperar por consultas ou atualizações, naturalmente, reduz o desempenho desses mecanismos por ordem mencionada-L " 'bgwriter _" no início de parâmetros de configuração para o controle

- tarefas páginas de dados sujas no buffer compartilhado é gravada no arquivo de disco

- Use o algoritmo LRU para limpar páginas sujas

- passar mais tempo no sono, trabalho quando ativado

 

 

2.1.8 processo de auxiliares WAL escritor (log write-ahead):

WAL é WriteAheadLog sigla, chinês chamado log write-ahead. WALlog também referida como xlog.

processo WalWriter é o processo de escrever log WAL. O conceito é que write-ahead log antes de modificar os dados, você deve fazer essas modificações gravados no disco, então as seguintes atualizações para os dados reais, você não precisa de dados em tempo real persistiu até o arquivo. Mesmo se a máquina de repente o tempo de inatividade do banco de dados ou saída anormal, resultando em parte suja dos dados na memória não é atualizada em tempo hábil para um arquivo, o banco de dados é reiniciado, lendo o log de WAL, e registrar o WAL a última parte do re-correr novamente, ele pode ser restaurado para o estado de inatividade.

WAL seja mantido em xlog pg_. Cada arquivo xlog padrão é 16MB, a fim de atender aos requisitos de recuperação, gerado em uma pluralidade de diretório xlog WAL registra Isso garante tempo de inatividade depois, os dados não persistentes podem ser recuperados por log WAL, que não exigem que o WAL será substituído automaticamente.

 

- O log write-ahead para arquivo em disco

- Gatilho tempo:

• WAL buffer está cheio

• confirmação de transação;

processo escritor • WAL atinge o intervalo;

Quando • checkpoint ocorre;

 

 

2.1.9 processo auxiliar do arquivador (arquivo):

- será preenchido para os arquivos de log do WAL transferidos para o diretório do arquivo, o processo é ativado somente no modo de arquivamento

WAL seja reciclado, ou seja, ingresse WAL momento anterior seria coberto. PgArch antes do processo de arquivamento será coberto pelo WAL logout backup. WAL registra após o início do PostgreSQL a partir 8.X versão fornece tecnologia PITR (Point-In-Time-Recoery), popular dizer, é no banco de dados tinha um backup completo, o ponto de backup em tempo a tecnologia vai ser apoiado por arquivamento WAL gerados logs, banco de dados de backup completo mais para trás, empurrou para a frente para o banco de dados a qualquer um o backup completo - um ponto de tempo.

processo 2.1.10 trabalhador Statistics Collector (processo de coleta de estatísticas):

- estatísticas processo de coleta. mesas Tuple informações de espaço e de recolha de informação e índices, e até mesmo tabela de informações de acesso. Além da informação recolhida pode ser optimizada utilizando fora, não autovaccum pode utilizar, assim como informações de referência para a gestão de base de dados de dados administrador

2.1.11 processo de trabalho Autovacuum lançador / trabalhadores (processo de limpeza sistema automático):

- processo de coleta de lixo automaticamente limpa

- activar a função de limpeza automática quando o parâmetro é definido quando autovacuum

- Launcher é um daemon para limpar cada vez que você começar o tempo vai chamar um ou mais trabalhadores

- trabalhador é responsável pela verdadeira processo de limpeza, que é definido pelo número de parâmetros autovacuum_max_workers

No banco de dados PostgreSQL, operações DELETE depois da tabela, os dados antigos não serão imediatamente apagados. E, ao atualizar os dados, ele não faz atualizações em dados antigos, mas uma nova geração - linhas de dados. Este foi introduzido na frente do "bloqueio" na respectiva secção, chamada multi-versão. Neste caso, os dados antigos é identificado apenas como um estado excluído, somente se há outras transações concorrentes ler esses dados antigos, eles serão apagados. O processo de limpeza é para ser completada pelo Autovacuum.

 

 

2.2 estrutura de memória PostgreSQL

Após o início PostgreSQL, gerado - um bloco de memória compartilhada, o buffer de memória compartilhada é usado principalmente como um bloco de dados, a fim de aumentar ler e desempenho de gravação. tampão de log WAL e entupir (Commit log) também está presente na memória tampão partilhada. Além disso, algumas informações globais também é armazenado na memória compartilhada, como informações do processo, informações de bloqueio, as estatísticas globais, e assim por diante.

2.2.1 Memória Compartilhada

Equivalente ao SGA Oracle é um grupo de estruturas de memória compartilhada, é compartilhada por todos os processos dos serviços e fundo. Quando a instância de banco de dados é iniciado, a memória do sistema é alocado área automaticamente global. Fechou-se quando a instância de banco de dados, a memória SGA é recuperado. SGA é uma das maiores área ocupada pela memória, mas também é um fator importante que afeta o desempenho do banco de dados.

Buffer compartilhado:

- uma tabela de cache e índice | bloco de dados

A leitura de dados estão diretamente operação de buffer, se os blocos de cache não são mais necessários, é necessário ler a partir do disco

- é modificado no buffer, mas não por escrito para blocos de arquivos de disco são chamados blocos de sujos

- controlar o tamanho do parâmetro buffers compartilhado

WAL (Write Ahead Log) Buffer:

- write-ahead log de buffer para o log de transações escreve as adições de cache gerados e exclusões, etc.

- controlada pelo tamanho buffers wal

Clog Buffer:

Log Buffer -commit é o cache de log registrando o estado de coisas

2.2.2 Memória Local

A Oracle equivalente a PGA

A PGA é uma área exclusiva de memória, o Oracle processa de uma forma proprietária para usá-lo para armazenar dados e informações de controle. Quando o processo do Oracle começa, PGA também criado pelo banco de dados Oracle. Quando um processo do usuário para se conectar ao banco de dados e criar uma sessão correspondente, processo servidor Oracle irá criar uma área especial para o usuário PGA para armazenar o conteúdo deste usuário sessões. Quando a sessão do usuário é terminada, o sistema lançará automaticamente a área de PGA ocupada pela memória.

memória local é a estrutura exclusiva de memória do processo servidor, cada sub-processo é atribuído um postgre - a respectiva memória pequeno, como a sessão de conexão é aumentada, não é parte de um exemplo de

work_ mem: memória para a classificação

trabalhos de manutenção mem: memória é usada para operações internas e trabalhos de manutenção, tais como coleta de lixo a vácuo, criar e recriar índices, etc.

tampões temp_: uma tabela temporária para armazenar dados

estrutura de diretórios de memória 2.3 do PostgreSQL

hierarquia PostgreSQL
  1. A lógica hierarquia
    Banco de Dados do Cluster (exemplo) - "Banco de dados -" o esquema - "Objects (tabela) -> Tuples são
  2. hierarquia física
    Banco de Dados Cluster -" Tablespaces - "Arquivos - "Blocos

 

 

2.3.1 estrutura de diretório de instalação

PGHOME = / opt / pgsql11.4 PostgreSQL é o diretório para instalar o software.

 

 

Estrutura 2.3.1 Diretório de Dados

PGDATA uso geral variáveis ​​de ambiente apontar para a raiz do diretório de dados. Este diretório é especificado durante a instalação, você precisa especificar um diretório apropriado como a raiz do diretório de dados durante a instalação, e cada instância de banco de dados precisa ter um tal diretório. Directory é inicializado usando initdb para ser concluído. Após conclusão, a raiz de dados será gerado

Três arquivos de configuração.

conf postgresql :. exemplo base de dados de arquivo de configuração principal, substancialmente todos os parâmetros de configuração do processo.

pg_ hba.conf: arquivos de configuração autenticação, configuração que permite hosts IP para acessar o banco de dados, método de autenticação é que outras informações.

pg_ ident.conf: arquivo de mapeamento de usuário "ident" método de autenticação.

1 estrutura geral diretório

base, global, arquivo de log, pg_clog, pg_multixact, pg_notify

, pg_serial, pg_snapshots, pg_stat_tmp, pg_subtrans

, Pg_tblspc, pg_twophase, PG_VERSION, pg_xlog

 , Postgresql.conf, pg_hba.conf, pg_ident.conf

2 diretório de arquivos entidade diretório base

 

  1. diretório base usada para armazenar arquivos no banco de dados de todas as entidades.
  2. Subdiretórios são nomeados sob o banco de dados OID.
  3. Sob o subdiretório do banco de dados é o OID objeto nomeado arquivo.
  4. banco de dados PG VERSÃO correspondente ao formato de dados atual do número da versão.

nome do arquivo Fsm até o fim do arquivo de dados FSM correspondente (livre

mapa espaço) arquivo, um bitmap identificar qual bloco está vazio

Lazer.

  1. arquivo terminando vm é um arquivo de dados VM correspondente (visibilidade

MAP), no controle de concorrência multi-versão é feita pelo chefe do identificador tupla

"Não é mais válida" para alcançar excluída ou atualizada, e finalmente por VÁCUO

Função para limpar os dados inválidos recuperar espaço livre.

3 de agenda global compartilhada global

■ controlo pg_

Usado para obter informações controle global

■ pg_ filenode.map

OID para as tabelas do sistema diretório atual com nomes de arquivo específico

mapas codificados (diretório de banco de dados para cada usuário-criado

Há também sob o mesmo nome do arquivo).

■ pg_ internal.init

A cache de tabelas do sistema, leia acelerar tabelas do sistema (cada

arquivos do diretório de banco de dados criado pelo usuário ter o mesmo nome).

 

■ tabela global do sistema de arquivos

arquivo digital nomeado para tabelas do sistema de armazenamento de conteúdo. ele;

Eles relfilenode na classe pg_ em são zero, dependendo

arquivo filenode.map pg_ com o mapa codificado OID.

4 Outro diretório comum

 

 

  1. pg_ wal, diretório de log WAL é muito importante
  2. pg_ xact, Commit diretório de log é muito importante. versão V9 do diretório anteriormente pg_ obstrução
  3. pg_ arquivo de configuração de autenticação do cliente hba.conf, você pode configurar os protocolos de conexão do cliente, criptografia, ACL, etc.
  4. O arquivo de configuração postgresql.conf agrupamento de banco de dados em formato de texto
  5. postgresql.auto.conf, também o arquivo de configuração de parâmetros, todos os comandos modificados pelo comando alter serão salvos neste arquivo, esse arquivo irá substituir parâmetro, o valor do mesmo arquivo de parâmetro postgresql.conf para binário
  6. postmaster.pid, o principal sistema operacional processo Postmaster PID, o arquivo será gerado depois que a instância de banco de dados é iniciado normalmente.

diretório de espaço 2.3.4 Tabela

 

  Depois de criar um espaço de tabela será gerada com o subtítulo "versão de catálogo" no espaço de tabela diretório raiz

Record, tais como:

   CREATE TABLESPACE tbs01 LOCALIZAÇÃO '/ home / OSDBA / tbs01" ;

   Ele também irá gerar - um nome de subdiretório "PG, 9.3_ 201306121":

   osdbatosdba-laptop: ~ s 1s -1 / home / OSDBA / tbs01

   total de quatro

   DRW ------ 3 OSDBA OSDBA 4096 10 19 de maio 14:29 pg_ 9.3_ 201306121

 

   nome do subdiretório "PG 93 201306121" no "* 201 306 121" é a "versão Catalog", versão de catálogo "

Você pode conferir o comando pg_ controldata:

   osdbadosdba-laptop: - / pgsql / BI5 pg_ controldata

   P9_ número da versão de controle: 937

  Catálogo número da versão: 201306121

  Banco de dados de identificador de sistema: 5925271200006401779

  estado do cluster de banco de dados: na produção

   No "PG 9.3 _201306121" subdiretório, e haverá um - alguns subdiretórios que é o nome do banco de dados

A OID, como segue:

  OSDBA @ OSDBA-laptop: - $ 1s -1 / home / OSDBA / tbs01 / pg_ 9.3_ 201306121 /

   total de quatro

   DRW ------ 2 OSDBA OSDBA 4096 10 19 de maio 14:29 16384

   Por exemplo, a acima "16384" subdirectório é "OSDBA" oid base de dados, como se segue:

   osdbaf selecionar oid, datname do banco de dados P9_;

  datname oid

     1 template1

 12065 template0

12070 postgres

16384 oadba

Publicado 37 artigos originais · ganhou elogios 0 · Vistas 2401

Acho que você gosta

Origin blog.csdn.net/syjhct/article/details/100813693
Recomendado
Clasificación