1 / 56

Arquiteturas Avançadas de SGBDs

Arquiteturas Avançadas de SGBDs. Por que processamento em paralelo? Consultas 'paralelizáveis' Formas de processamento em paralelo Critérios de escolha de processamento em paralelo Solução Oracle p/ processamento em paralelo Conclusões. Por que processamento em paralelo?.

Download Presentation

Arquiteturas Avançadas de SGBDs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arquiteturas Avançadas de SGBDs • Por que processamento em paralelo? • Consultas 'paralelizáveis' • Formas de processamento em paralelo • Critérios de escolha de processamento em paralelo • Solução Oracle p/ processamento em paralelo • Conclusões

  2. Por que processamento em paralelo? • Contar os registros de um imenso arquivo SQL> SELECT degree, instances FROM user_tables WHERE table_name = 'Faturamento'; DEGREE INSTANCES 1 1 SQL> SET TIMING ON SQL> SELECT COUNT(*) FROM Faturamento; COUNT(*) 12384004 Elapsed: 00:58:49.01

  3. Por que processamento em paralelo? • Contar os registros de um imenso arquivo SQL> ALTER TABLE Faturamento PARALLEL (DEGREE 8); Table altered. SQL> SELECT degree, instances FROM user_tables WHERE table_name = 'Faturamento'; DEGREE INSTANCES 8 1 SQL> SET TIMING ON SQL> SELECT COUNT(*) FROM Faturamento; COUNT(*) 12384004 Elapsed: 00:08:13.23

  4. CLIENT QC - Query Coordinator PQ - Parallel Query Slave QC PQ1 PQ2 PQ3

  5. SEQUENCIAL 0 2 segundos PARALELO 0.2 segundos 0 5 10 15 20

  6. SEQUENCIAL 2 horas 0 PARALELO 10 segs 10 segs 0 15 minutos

  7. Requisitos de Consultas com Paralelização • Resultados simples • Facilidade de integrar subresultados • Subconsultas não-correlacionadas • Uma subconsulta não passa/recebe parâmetro de outra (subconsultas independentes) • Subconsultas não-concorrentes • Uma subconsulta não disputa recursos com outra

  8. Formas de Processamento em Paralelo • Consulta • "Table full scan" • "Dynamic partitioning" • "Indexed range scan" • "Static Partitioned table" • "Static Partitioned index" • Consultas distribuídas • SGBD • “Parallel query” • “Parallel server” • “Distributed DB”

  9. Formas de Processamento em Paralelo • Hardware Paralelo • "Uniprocessor system“, com “threads” • "Symetric multiprocessing (SMP) system" • "Massively parallel processing (MPP) system"

  10. Hardware Paralelo

  11. Uniprocessor System CPU SYSTEM BUS I/O CONTROLLER I/O CONTROLLER MEMORY DISK DISK

  12. SMP System CPU CPU SYSTEM BUS I/O CONTROLLER I/O CONTROLLER MEMORY DISK DISK

  13. CPU SYSTEM BUS I/O CONTROLLER I/O CONTROLLER MEMORY DISK DISK

  14. MPP System SYSTEM INTERCONNECT NÓ-1 NÓ-2 NÓ-4 NÓ-3

  15. Hardware para consultas distribuídas

  16. 1.2 Terabytes of Disk Storage 16 Node MPP Cost: $10M

  17. 300 GB of Disk Storage 300 GB of Disk Storage 1.2 Terabytes of Disk Storage 4 Node MPP Cost: $3M 300 GB of Disk Storage 300 GB of Disk Storage Total Hardware Cost: $7M 4 SMP Servers Cost: 4x$1M = $4M

  18. Máquina SMP Máquina MPP Internet (Extranet) (Intranet) Máquina SMP Máquina SMP Máquina SMP

  19. Critérios de Escolha de Hardware para Processamento em Paralelo

  20. Critérios de Escolha de Hardware para Processamento em Paralelo

  21. Solução Oracle p/ Consulta em Paralelo Opção “Parallel Query”

  22. Consulta em Paralelo: Full Table Scan • Arquitetura SMP • Tabelas espalhadas em vários discos Create tablespace exemplo Datafile `datafile_on_disk1´ size 536879004, Datafile `datafile_on_disk2´ size 536879004, Datafile `datafile_on_disk3´ size 536879004, Datafile `datafile_on_disk4´ size 536879004 ... • Grau de paralelismo > no. de CPUs • No. de “threads” por CPU

  23. Full Table Scan Dynamic Partitioning CLIENT Bloco cheio Bloco vazio QC PQ1 PQ2 PQ3 9/13 3/13 1/13

  24. Full Table Scan Dynamic Partitioning CLIENT QC PQ1 PQ2 PQ3 9/13 3/13 1/13

  25. Full Table Scan: Dynamic Partitioning REQUESTS DATA ORACLE SERVER PROCESS (QC) PARALLEL QUERY SLAVE PROCESS (PQ) DATA REQUESTS

  26. TABLE 1 Full Table Scan: Dynamic Partitioning QUERY QC CREATE INSERT TABLE 2

  27. SET TIMING ON • CREATE TABLE n_faturamento • PARALLEL (DEGREE 8) • TABLESPACE fat • STORAGE (INITIAL 4M NEXT • 4M PCTINCREASE 0) • AS • SELECT * • FROM faturamento • WHERE data_fat ≥ ´01-JAN-96´; • Elapsed: 00.50.03.43 • RENAME faturamento TO ant_faturamento; • Elapsed: 00:00:01.01 • RENAME n_faturamento TO faturamento; • Elapsed: 00:00:02.03 SET TIMING ON DELETE FROM faturamento WHERE data_fat < ´01-JAN-96´; 1803773 rows deleted. Elapsed: 22:44:55.03

  28. CREATE TABLE ... AS SELECT (pCTAS) CREATE INDEX high-water mark (HWM) unused space PQ1 PQ2 PQ3 TEMPORARY SEGMENT TEMPORARY SEGMENT TEMPORARY SEGMENT EXTENT 1 EXTENT 2 EXTENT 3 EXTENT 4 EXTENT 5 TABLESPACE SEGMENT

  29. Indexed Range Scan Static Partitioned Table Static Partitioned Index QC PQ Slave Process P001 P002 P003 Local (Non/Prefixed, Prefixed) Index Partitions Table Partitions

  30. Partitioned Table • CREATE TABLE Vendas • (Mes NUMBER(6), • Prod_id NUMBER, • Loja_id NUMBER, • Faturamento NUMBER, • Custo NUMBER) • STORAGE (...) • PARALLEL (DEGREE 8) • ... • PARTITION BY RANGE (Mes) • (PARTITION 01 VALUES LESS THAN (`199901´) • TABLESPACE Vendas_1999Jan, • PARTITION 02 VALUES LESS THAN (`199902´) • TABLESPACE Vendas_1999Fev, • ... • PARTITION 12 VALUES LESS THAN (`199912´) • TABLESPACE Vendas_1999Dec );

  31. Partitioned Index • CREATE INDEX Mes-Loja ON Vendas (Mes, Loja_id) • STORAGE (...) • PARALLEL (DEGREE 8) • ... • LOCAL • (PARTITION I-01 TABLESPACE I_1999Jan, • PARTITION I-02 TABLESPACE I_1999Fev, • ... • PARTITION I-12 TABLESPACE I_1999Dez);

  32. Index Range Scan SELECT degree FROM user_tables WHERE table_name = `Vendas´; DEGREE 8 SELECT Loja_id, SUM(Faturamento) FROM Vendas WHERE Mes IN (`199902´, `199903´, `199904´) GROUP BY Loja_id;

  33. Full Scan em Tabelas Fragmentadas • CREATE INDEX Loja_Mes ON Vendas (Loja_id, Mes) • STORAGE (...) • PARALLEL (DEGREE 8) • ... • LOCAL • (PARTITION I-01 TABLESPACE I_1999Jan, • PARTITION I-02 TABLESPACE I_1999Fev, • ... • PARTITION I-12 TABLESPACE I_1999Dez); SELECT COUNT(*) FROM Vendas WHERE Loja_id = 08;

  34. Indexed Range Scan Static Partitioned Table Static Partitioned Index QC PQ1 PQ2 PQ3 UPDATE OR DELETE UPDATE OR DELETE UPDATE OR DELETE QUERY QUERY QUERY PARTITION 1 PARTITION 2 PARTITION 3 TABLE X

  35. Consulta em Paralelo Opção “Parallel Server”

  36. Accounting Department End-users Marketing Department End-users Database Instance 1 Database Instance 2 Oracle Parallel Server Database Node 1 Node 2

  37. PARALLEL (DEGREE 4 and INSTANCES 3) NODE 1 NODE 2 NODE 3 PQ PQ PQ PQ PQ PQ PQ PQ PQ PQ PQ PQ 1 2 3 4 5 6 7 8 9 10 11 12

  38. Table Full Scan SELECT degree FROM user_tables WHERE table_name = `Vendas´; DEGREE INSTANCES 1 1 SELECT COUNT(*) FROM Vendas; COUNT(*) 12384004 Elapsed: 00:58:49.01 SELECT degree, instances FROM user_tables WHERE table_name = `Vendas´; DEGREE INSTANCES 4 3 SELECT COUNT(*) FROM Vendas; COUNT(*) 12384004 Elapsed: 00:05:13.23

  39. Parallel Cache Management DLM transmits lock attempt to all maching instances Instância A Instância B Attempt to obtain EXCLUSIVE LOCK 2 Oracle Parallel Server Database

  40. Parallel Cache Management 1. May I exclusively lock this block? Instância A Instância B 1 3 OK, now you may have the lock 4 2. First, let me write my changes to the datafile 4. Read block into cache 2 Oracle Parallel Server Database

  41. Consulta em Paralelo BD Distribuído

  42. Accounting Department End-users Marketing Department End-users Occasional Transactions Database Instance 1 Database Instance 2 Occasional Transactions Database 1 Database 2 Node 1 Node 2

  43. A REMOTE QUERY DATABASE SERVER #1 DATABASE SERVER #2 a b c Oracle Instance LOCL Oracle Instance RMOT Select CLIENT Select @RMOT d e f a b c

  44. BD Oracle Distribuído • CREATE [PUBLIC] DATABASE LINK rmot • CONNECT TO username IDENTIFIED BY password • USING `connect_string´; • CREATE PUBLIC SYNONYM projetos • FOR projetos@rmot; • SELECT * • FROM projetos;

  45. A DISTRIBUTED QUERY DATABASE SERVER #1 DATABASE SERVER #2 a b d Oracle Instance LOCL Oracle Instance RMOT Select CLIENT Select @LOCL, @RMOT d e f a b c

  46. BD Oracle Distribuído • CREATE VIEW todos_os_projetos AS • SELECT * • FROM projetos • UNION ALL • SELECT * • FROM projetos@europa • UNION ALL • ... • ; • SELECT nome_projeto, data_inicio • FROM todos_os_projetos;

  47. Propriedades de uma Transação • Transação Centralizada • Transação Distribuída • Propriedades ACID • Atomicidade a Falhas (A) • Consistência (C) • Isolação (I) • Durabilidade (D)

  48. A REMOTE TRANSACTION DATABASE SERVER #1 DATABASE SERVER #2 a´ b´ Oracle Instance LOCL Oracle Instance RMOT Update CLIENT Update @RMOT d e f a´ b´ c

  49. A DISTRIBUTED TRANSACTION DATABASE SERVER #1 DATABASE SERVER #2 a´ b´ d´ Oracle Instance LOCL Oracle Instance RMOT Updade CLIENT Update @LOCL, @RMOT d´ e f a´ b´ c

  50. Protocolo de Validação de Transações Distribuídas • Protocolo de Validação em Duas Fases

More Related