A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

MySQL STORAGE & TRANSACTIONs Pedro da Silva. Índice 1. Storage 1.1. Tabelas MyISAM 1.1. Tabelas MyISAM 1.2 Tabelas InnoDB 1.2 Tabelas InnoDB 2. Transactions.

Apresentações semelhantes


Apresentação em tema: "MySQL STORAGE & TRANSACTIONs Pedro da Silva. Índice 1. Storage 1.1. Tabelas MyISAM 1.1. Tabelas MyISAM 1.2 Tabelas InnoDB 1.2 Tabelas InnoDB 2. Transactions."— Transcrição da apresentação:

1 MySQL STORAGE & TRANSACTIONs Pedro da Silva

2 Índice 1. Storage 1.1. Tabelas MyISAM 1.1. Tabelas MyISAM 1.2 Tabelas InnoDB 1.2 Tabelas InnoDB 2. Transactions

3 Storage MySQL suporta tabelas transaccionais e não transaccionais Motor de tabelas não transaccionais: MyISAM (motor por defeito em linux) MyISAM (motor por defeito em linux) Motores de tabelas transaccionais: InnoDB (motor por defeito em windows) InnoDB (motor por defeito em windows) BDB (última release) BDB (última release)

4 Storage Outros: NDB Cluster (tabelas particionadas em diversos computadores) NDB Cluster (tabelas particionadas em diversos computadores) ARCHIVE (tabelas grandes e sem índices) ARCHIVE (tabelas grandes e sem índices) EXAMPLE (motor de exemplo que serve de base para o desenho de novos motores) EXAMPLE (motor de exemplo que serve de base para o desenho de novos motores) Definir o motor usado para uma tabela: CREATE TABLE t (i INT) CREATE TABLE t (i INT) ENGINE = INNODB;

5 Tabelas MyISAM Características: Independente do Sistema Operativo e da Arquitectura Independente do Sistema Operativo e da Arquitectura Os dados são guardados num ficheiro.MYD Os dados são guardados num ficheiro.MYD Os índices são guardados em ficheiros.MYI Os índices são guardados em ficheiros.MYI Suporta registos fixos e dinâmicos Suporta registos fixos e dinâmicos Existem locks nas tabelas Existem locks nas tabelas Os scans são rápidos porque é possível ler sequencialmente Os scans são rápidos porque é possível ler sequencialmente

6 Tabelas MyISAM Estrutura dos registos: Cabeçalho para registos fixos: Cabeçalho para registos fixos: Bit X – 0 se registo apagado, 1 se registo não apagado Bits NULL – 0 se coluna não nula, 1 se coluna nula Bits preenchimento – com o valor 1 Colunas guardadas pela ordem em que foram criadas Colunas guardadas pela ordem em que foram criadas

7 Tabelas MyISAM Exemplo de um cabeçalho para registos fixos: INSERT INTO Table1 VALUES ('d', NULL, 'e') Valor do cabeçalho 11110101 Valor do cabeçalho 11110101 Bit menos significativo é o Bit X (a 1 - não foi apagado) 2º bit menos significativo, após o Bit X (coluna a NULL) Bits a 0 indicam que as colunas não estão a NULL Restantes Bits são de preenchimento

8 Tabelas MyISAM Cabeçalho para registos dinâmicos: Campos adicionais: Campos adicionais: Tamanho Actual – número total de bytes em todas as colunas Tamanho não usado – número total de bytes entre um registo e o próximo Ponteiro de Overflow – local do resto do registo (se este está dividido)

9 Tabelas MyISAM Código fonte: Registos dinâmicos Registos dinâmicos /myisam/mi_dynrec.c Registos fixos Registos fixos /myisam/mi_statrec.c

10 Tabelas InnoDB Características: Suporta Locks ao nível dos registos Suporta Locks ao nível dos registos Suporta chaves estrangeiras Suporta chaves estrangeiras Ocupa mais espaço em disco do que tabelas MyISAM Ocupa mais espaço em disco do que tabelas MyISAM Ocupa mais memória do que tabelas MyISAM Ocupa mais memória do que tabelas MyISAM

11 Tabelas InnoDB Estrutura dos registos: Cada registo físico contém 3 partes: Cada registo físico contém 3 partes: FIELD START OFFSETS – uma lista de números que indicam onde começa um registo EXTRA BYTES – um cabeçalho de tamanho fixo FIELD CONTENTS – dados do registo FIELD START OFFSETS: Lista em que cada entrada é a posição, relativamente à origem, do início do próximo campo. Lista em que cada entrada é a posição, relativamente à origem, do início do próximo campo.

12 Tabelas InnoDB FIELD CONTENTS As colunas são guardadas na mesma ordem em que foram criadas As colunas são guardadas na mesma ordem em que foram criadas Não existem “marcas” entre colunas pois a informação de início e fim dos campos é guardada no FIELD START OFFSETS: Não existem “marcas” entre colunas pois a informação de início e fim dos campos é guardada no FIELD START OFFSETS:

13 Tabelas InnoDB Estrutura das páginas (7 partes): Fil Header – onde se encontram os ponteiros para outras páginas da mesma tabela (página anterior e seguinte) Fil Header – onde se encontram os ponteiros para outras páginas da mesma tabela (página anterior e seguinte) Page Header – dados referentes à página (ponteiro para espaço vazio, bytes em registos apagados, etc.) Page Header – dados referentes à página (ponteiro para espaço vazio, bytes em registos apagados, etc.) Infimum + Supremum Records – definem os valores mínimos e máximos que os registos podem ter Infimum + Supremum Records – definem os valores mínimos e máximos que os registos podem ter User Records – onde se encontram os registos User Records – onde se encontram os registos Free Space – espaço livre da página (para mais registos) Free Space – espaço livre da página (para mais registos) Page Directory – número variável de ponteiros para registos pela ordem da chave (normalmente usado para fazer pesquisas nos registos da página) Page Directory – número variável de ponteiros para registos pela ordem da chave (normalmente usado para fazer pesquisas nos registos da página) Fil Trailer – 8 bytes de checksum para garantir integridade Fil Trailer – 8 bytes de checksum para garantir integridade

14 Tabelas InnoDB Código fonte: Dentro da pasta page: Dentro da pasta page: pageOpage.c pageOpage.ic pageOpage.h

15 Transactions Suportadas nas tabelas InnoDB e BDB Utilizam segmentos rollback Garante Atomicidade, Consistência, Isolamento e Durabilidade (ACID) Geridas numa tabela estatistica denominada transactions

16 Transactions Tabela TRANSACTIONS:

17 Transactions Tabela TRANSACTIONS (continuação):

18 Transaction Código fonte: Trx0trx.c – A transacção Trx0roll – O Rollback Trx0undo – Desfazer o log

19 Bibliografia Internals - http://downloads.mysql.com/docs/internals-en.pdf http://downloads.mysql.com/docs/internals-en.pdf Documentação geral - http://dev.mysql.com/doc/ http://dev.mysql.com/doc/ Artigos - http://dev.mysql.com/tech-resources/articles/ http://dev.mysql.com/tech-resources/articles/ Manual de Referência - http://dev.mysql.com/doc/refman/5.0/en/ http://dev.mysql.com/doc/refman/5.0/en/ Transacções - http://dev.mysql.com/doc/maxdb/en/31/f1fd3d4aefd95ee10000000a 114084/content.htm http://dev.mysql.com/doc/maxdb/en/31/f1fd3d4aefd95ee10000000a 114084/content.htm http://dev.mysql.com/doc/maxdb/en/31/f1fd3d4aefd95ee10000000a 114084/content.htm


Carregar ppt "MySQL STORAGE & TRANSACTIONs Pedro da Silva. Índice 1. Storage 1.1. Tabelas MyISAM 1.1. Tabelas MyISAM 1.2 Tabelas InnoDB 1.2 Tabelas InnoDB 2. Transactions."

Apresentações semelhantes


Anúncios Google