Performance de Sistemas

Documentos relacionados
SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Banco de Dados II. Transações (Oracle) Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

IMPLEMENTAÇÃO DE BANCO DE DADOS

Administração de Banco de Dados

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única

Manipulação de Dados com SQL

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

Análise e otimização de queries no MySQL. Jeronimo Fagundes da Silva

Introdução à linguagem SQL

SQL. Prof. Roger Cristhian Gomes

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

MySql. Introdução a MySQL. Andréa Garcia Trindade

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

Rápida revisão do Modelo Relacional

Tuning para Desenvolvedores DB2

SQL CREATE MATERIALIZED VIEW. Processamento Analítico de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. OLAP: Modelagem Multidimensional

Banco de Dados. Professora: Luciana Faria

Linguagem de pesquisa declarativa para banco de dados relacional; 1ª Versão - Desenvolvida pela IBM no laboratório de pesquisa de San José;

NoSQL Apache Cassandra para DBAs. Conceitos básicos que todo DBA deve conhecer sobre Apache Cassandra.

Oracle Database 12c: Introdução ao SQL Ed. 2

Linguagem de Consulta - SQL

Manter estatísticas atualizadas é uma das regras de ouro na busca por performance.

Reindexação Automática em SGBDs Relacionais

Linguagem SQL. ENG1518 Sistemas de Informação Gerenciais Prof. Marcos Villas

Bancos de Dados IV. Tuning de Bancos de Dados. Rogério Costa

Banco de Dados. Prof. Antonio

Sumário Introdução Breve História da Linguagem SQL l 0.3 Características da Linguagem SQL A Composição deste Livro 3

Linguagem SQL (Parte I)

Projeto de Banco de Dados

Comandos de Manipulação

O que são Bancos de Dados?

Índices no Oracle Database

COMO MELHORAR A PERFORMANCE DE SUA APLICAÇÃO APEX Anderson Rodrigues Ferreira

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

SQL Linguagem de Definição de Dados

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

Linguagem de Consulta Estruturada SQL- DML

Oracle Database 10g: Fundamentos de SQL e PL/SQL

Aula 06 Sistemas Embarcados LT38C

Escrito por Sex, 14 de Outubro de :12 - Última atualização Seg, 26 de Março de :33

Bases de Dados 2005/2006. Aula 5

Um objeto de estatística contém informações de distribuição de valores de uma ou mais colunas de uma tabela ou view indexada

Banco de Dados. Maurício Edgar Stivanello

SQL - Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL

Administração de Banco de Dados

Catálogo de Treinamentos 2017

Prova de Tecnologia da Informação

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

Projeto de Otimização de Performance e Redução de Custos. Sistema On-line. Empresa de Serviços

SQL (Tópicos) Structured Query Language

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho

Fundamentos de Banco de Dados (Prática)

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

Definida pelo American National Standard Institute (ANSI) em 1986

EXEMPLOS DE COMANDOS NO SQL SERVER

4.6. SQL - Structured Query Language

Planificação Anual. Departamento Expressões e Tecnologias

ORACLE IN-MEMORY 12c. Vantagens e Cenários de Utilização do Oracle In-Memory 12c. Willian Frasson

MYSQL - PRIMEIROS COMANDOS CRIAÇÃCO DO BD E DAS TABELAS, INSERÇÃO E CONSULTA DE REGISTROS. create database [if not exists] <nome>

SQL DML. Frederico D. Bortoloti

Apresentação Modelo e SQL. André Luiz Montevecchi

Testes Automatizados com Banco de Dados

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

INSERT INTO shop VALUES (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69), (3,'D',1.25),(4,'D',19.95);

Introdução em Banco de Dados

MANUAL INSTALAÇÃO WEB SERVICE

SQL Básica DML. Prof. Marcos A. Schreiner. 22 de outubro de Curso de Licenciatura em Computação

Structured Query Language (SQL) Aula Prática

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

Tuning de Banco de Dados

Jeferson Betarello DBA Brasil 1.0 abril de 2016

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

1. Assinale as afirmações que são verdadeiras e as que são falsas, corrigindo-as:

- Um "query block" permite a implementação das operações de selecção, projecção e junção da álgebra relacional.

Projeto de Banco de Dados: Empresa X

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

Licenciatura em Informática

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Testes Automatizados e Bancos de Dados

AUMENTO DE PERFORMANCE POR MEIO DA OTIMIZAÇÃO DE BANCO DE DADOS

ANÁLISE E PROJETO DE BANCO DE DADOS

Algumas Opções do SGBDR Oracle. Algumas opções do SGBDR Oracle

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003

Programação SQL. Manipulação de Dados. DML Data Manipulation Language

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

Banco de Dados com PHP

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

Banco de Dados - Senado

Structured Query Language (SQL) SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.

consistent gets é o número de vezes que uma leitura consistente foi requisitada para um bloco do buffer cache.

Transcrição:

Performance de Sistemas Dicas de Tuning desenvolvimento Gustavo Braga

Tópicos APRESENTAÇÃO INTRODUÇÃO PROBLEMA CAUSAS SOLUÇÕES DICAS CONCLUSÃO OBJETIVO: APRESENTAR CASOS E TÉCNICAS PARA AJUDAR A ENTENDER E RESOLVER PROBLEMAS DE PERFORMANCE EM PROCESSOS DE BANCO DE DADOS. 2

APRESENTAÇÃO - Gustavo Braga GAÚCHO, 44 ANOS, 2 FILHOS 25 ANOS EM PROJETOS DE TI 10 ANOS ANTERIORES BRINCANDO COM BASIC 20 ANOS EM TECNOLOGIAS ORACLE CERTIFICAÇÃO SQL/PLSQL 16 ANOS COM METOLOGIAS FORMAIS PROCESSOS E PAPEIS DEFINIDOS ENTRE DIFERENTES TIMES, FASES, GERENCIAMENTO DE CONFIGURAÇÃO, ETC 4+ANOS SQLSERVER 3

INTRODUÇÃO QUANTOS SÃO DESENVOLVEDORES DE SISTEMAS? QUEM PASSOU POR ALGUM PROBLEMA DE PERFORMANCE NO ÚLTIMO ANO? QUEM TRABALHOU PARA CORRIGIR? CASO DO PORTÃO DA CASA 4

INTRODUÇÃO TUNING 5

INTRODUÇÃO A PERCEPÇÃO DA RESPOSTA DO SISTEMA DEPENDE DA FRENQUÊNCIA DO USUÁRIO O PROBLEMA DE PERFORMANCE PODE SER REPORTADO POR MONITORAMENTO OU POR INSATISFAÇÃO DO USUÁRIO 6

PROBLEMAS CAUSAS ESTRUTURAS DE DADOS MAL DIMENSIONADAS NO PLANEJAMENTO CRESCIMENTO NÃO ESPERADO FALTOU PENSAR AMBIENTE DE DESENVOLVIMENTO OU TESTES INVÁLIDOS TABELAS QUE SÃO GIGANTES EM PRODUÇÃO NÃO SEGUEM O MESMO VOLUME EM AMBIENTES NÃO PRODUÇÃO TIPO COLÉGIO FALTA MANUTENÇÃO PREVENTIVA ACOMPANHAMENTO DO CRESCIMENTO E FRAGMENTAÇÃO DOS OBJETOS - PROCESSAMENTO NOTURNO DESNECESSÁRIO VOLTAR AOS REQUISITOS - INTERFACE DE DADOS, RELATÓRIOS CÓDIGO RUIM VOLTAR AOS REQUISITOS - INTERFACE DE DADOS, RELATÓRIOS 7

SOLUÇÕES desenvolvedor de banco ESTRUTURAS DE DADOS MAL DIMENSIONADAS NO PLANEJAMENTO QUAIS SÃO OS VOLUMES DIÁRIO, SEMANAL, MENSAL ESTIMAR NECESSIDADE DE ESPAÇO MÉDIA DO TAMANHO AMBIENTE DE DESENVOLVIMENTO OU TESTES INVÁLIDOS CRIAR VERGONHA NA CARA FALTA MANUTENÇÃO PREVENTIVA ALGUÉM DEVERIA TER FEITO?? PAPEIS DEFINIDOS E RESPONSABILIDADES PROCESSAMENTO NOTURNO DESNECESSÁRIO OS JOBS QUE RODAM FAZEM O QUE? COPIAM E PROCESSAM DADOS PRA QUE?? CÓDIGO RUIM REVISAR, REVISAR, TESTAR COM AMBIENTE DE QUEM TEM VERGONHA NA CARA A QUERY DEFINE O ÍNDICE!! 8

ESTIMATIVA REALIZADA EM 100% DOS INDIVÍDUOS PESQUISADOS 60-70% - ÍNDICES FALTANDO 20-30% - FRAGMENTAÇÃO 5 10% - QUERY MAL FEITA 2-5% - CONFIGURAÇÃO 9

DICAS Poucas colunas no SELECT poucas colunas na where e tabelas com muitas linhas SELECT col1, col2 FROM table WHERE col3 and col4 CREATE INDEX col3, col4 [,col1, col2 ] 10

DICAS SELECT MAX( date_ ) FROM table_ WHERE value1_ > :1 and value2_ > :2 CREATE INDEX idx1_table_ on table_ ( value1_, value2_ [, date_] ) Caso a coluna date_ ou outra utilizada seja muito atualizada haverá fragmentação do índice MANUTENÇÃO SE para a coluna date_ é a data da inserção dos registros na tabela como melhorar a query?? 11

DICAS SELECT MAX( date_ ) FROM table_ WHERE value1_ > :1 and value2_ > :2 AND date_ > SYSDATE -?? ANALISAR OS DADOS QUAL AMOSTRAGEM??? TUDO?? qual o maior intervalo entre as datas? 5 dias, 1 dia, horas? o dia do max esse é normalmente quando? Hoje, ontem, semana passada?? 12

DICAS Na query com problema tem OR???..OR é coisa do capeta!!! SELECT value_5 FROM table_1 WHERE value1 = :1 AND ( value2 = :2 OR value2 = :3 ) AND value3 = :3 UNION SELECT value_5 FROM table_1 WHERE value1 = :1 AND value2 = :2 AND value3 = :3 UNION SELECT value_5 FROM table_1 WHERE value1 = :1 AND value2 = :3 AND value3 = :3 13

DICAS SELECT MAX(t0.lastModified) lastmodified FROM pw.accassignments t0 WHERE (:SYS_B_0=:SYS_B_1) and ( t0.vstate_vname = :SYS_B_2 OR t0.vstate_vname = :SYS_B_3) and (t0.deleted = :SYS_B_4) 14

DICAS SELECT MAX(t0.lastModified) lastmodified FROM pw.accassignments t0 WHERE (:SYS_B_0=:SYS_B_1) and ( t0.vstate_vname = :SYS_B_2 OR t0.vstate_vname = :SYS_B_3) and (t0.deleted = :SYS_B_4) 15

DICAS select (del_lf_rows/lf_rows)*100 del_lf_ratio, t.* from pw.dc_sys_indexstats t order by name, inserted_on 16

DICAS manutenção 17

DICAS após manutenção 18

DICAS MERGE só para tabela de colégio com volume de colégio Evite usar com grande volume de dados. Se tiver que usar pois não quer mexer muito no código fazendo algo descente, pode dividir o sofrimento 19

DICAS Muitos INSERTS por segundo de sessões distintas Particionar a tabela Tabelas que sofrem limpezas periódicas Deletes fragmentam as tabelas Se em algum momento a tabela fica vazia - truncate Ao invés de delete veja se é possível implementar particionamento por data dropar a partição é imediato! 20

DICAS Tabelas de logs ou de carga de dados que devem sofrer limpezas periódicas podem ser particionadas por data rotina para deixar número estipulado de partições pode ser criado REBUILD é necessário se houver algum índice GLOBAL 21

Explain Plan sql tuning FALTA QUAIS COLUNAS NO ÍNDICE??? +objectid +entityid 22

Explain Plan sql tuning 23

TOPs select DISTINCT sql.sql_id, last_call_et, service_name, trunc(last_call_et/3600) ':' lpad(mod(round(last_call_et/60),60),2,'0') as CallTimeHMM, sql.sql_text,vs.inst_id, substr(vs.username,1,14) as UserName, lpad(vs.sid,6) '-' vs.serial# as "Session", pid as PID, rtrim(ltrim(vs.machine)) as Machine, vs.program as App, vs.osuser as OSUser, aa.name as Command, trunc((sysdate-logon_time)*24) ':' lpad(mod(round((sysdatelogon_time)*24*60),60),2,'0') as LogonTime, vs.inst_id last_call_et as InstinceID, status, 'ALTER SYSTEM KILL SESSION ' CHR(39) TO_CHAR(vs.SID) ', ' TO_CHAR(vs.SERIAL#) CHR(39) ';' STMT from sys.gv_$session vs, sys.gv_$process vp, audit_actions aa, sys.gv_$sql sql where vp.addr(+) = vs.paddr and vs.type <> 'BACKGROUND' and vs.inst_id=vp.inst_id and sql.inst_id = vs.inst_id and vs.username is not NULL and vs.status = 'ACTIVE' and vs.command = aa.action and sql.sql_id = vs.sql_id and VS.username <> 'SYS' --and last_call_et > 10 order by 2 desc 24

TOPs 25

Explain Plan sql tuning 26

Explain Plan sql tuning - Confirmação 27

Explain Plan sql tuning 28

Explain Plan sql tuning 29

CONCLUSÃO / ENCERRAMEMTO CRIAR ÍNDICES OLHANDO PARA AS QUERIES DA APLICAÇÃO MANUTENÇÃO PREVENTIVA OEM TOP ACTIVITY OU A QUERY DO TOPS PERGUNTAS E RESPOSTAS 30