O documento apresenta a arquitetura de memória do PostgreSQL, discutindo como os dados são alocados e armazenados na memória e como a memória é dividida e configurada entre os subsistemas. É apresentada a hierarquia de memória do sistema e como os dados são carregados da memória secundária para a memória principal.
2. Raul Oliveira
Especialista em Bancos de Dados
@rauldoliveira
raul.oliveira@tecnisys.com.br
raul.oliveira@msn.com
✓ Meetup Brasília DataGroup
http://www.meetup.com/pt-BR/Brasilia-DataGroup/
✓ SQLServerDF
http://groups.google.com/group/sqlserverdf
✓ MTAC
http://www.mtac.org.br
3.
4. Agenda da Apresentação
• Memória
• Arquitetura de Memória
• Alocação de memória
• Armazenamento dos dados
• Utilização de memória
5. Motivadores dessa Palestra
• Entender o Funcionamento
• Facilitar a configuração
• Realizar leitura mais eficientes
dos contadores
• Essa palestra é o resumo de
muitas dúvidas sanadas
• É a causa de muitas outras
dúvidas
• Ainda bem longe de ser
concluído ☺
7. Crédito: Amit Tiwari
BUFFER POOL
34%
LATCHING
14%
LOCKING
17%
LOGGING
12%
OTHERS
16%
TRABALHO REAL
7%
Distribuição de Trabalho de um SGBD
BUFFER POOL
LATCHING
LOCKING
LOGGING
OTHERS
TRABALHO REAL
12. Como o dado é representado:
• Integer / Bigint / Smallint / Tinyint
• Formato nativo C / C++
• Float / Real
• IEEE 754
• Numeric / Decimal
• Decimal ponto-fixo
• Varchar / Varbinary / Text / Blog
• Text ou Toast
• Time / Date / Timestamp
• 32/64-bit integer (Unix Epoch)
13. Backend – Process Local Memory
Backend – Process Local Memory
Shared Memory
Como que a memória é dividida?
Shared Buffer
Commit Log WAL BufferLocks
Buffer
Descriptors
Proc Array Statistics ...
Backend – Process Local Memory
Work_mem Temp_buffers
Maintenance_
work_mem
15. Alinhamento
Créditos: Andy Pavlo
CREATE TABLE teste (
id INT PRIMARY KEY,
data TIMESTAMP,
nome CHAR(2),
cep INT
)
32 bits
64 bits word 64 bits word 64 bits word 64 bits word
64 bits
16 bits
32 bits
id data n cep
Reg
Cache
L1
Cache L2
Memória
Disco
64 bits word 64 bits word 64 bits word 64 bits word
id data n cep
22. Shared Buffer
8K
Buffer Pool
Buffer Descriptor
Hash Element
hash val Tag + ID hash val Tag + ID
hash val Tag + ID
Hash Table
Bucket [0]
Bucket [1]
...
Hash
Segment
Hash
Segment
Hash
Segment
Buffer
Partition
Buffer
Partition
Buffer Tag: (13348,0,6)
13348: oid
0: Fork Number
6: Block
Fork Number 0: Data File
Fork Number 1: FSM
Fork Number 2: VM