Reindexação Automática em SGBDs Relacionais
|
|
- Lucas Vidal Porto
- 8 Há anos
- Visualizações:
Transcrição
1 Reindexação Automática em SGBDs Relacionais Eduardo Morelli, José Maria Monteiro, Ana Carolina Almeida, Sérgio Lifschitz Departamento de Informática PUC-Rio Abstract. We propose a solution to the automatic and online reindex problem. The proposed mechanism runs continuously and with almost no human intervention. The adopted strategy is based on ad-hoc heuristics that monitor the index fragmentation level and, when necessary, reindex it automatically. We have actually implemented our ideas within the PostgreSQL DBMS code. Practical performance tests show the effectiveness of our approach. Resumo. Neste trabalho, propõe-se uma solução para o problema da reconstrução automática e online de índices. O mecanismo proposto executa de forma contínua e praticamente sem intervenção humana. A estratégia adotada baseia-se em heurísticas ad-hoc que monitoram o nível de fragmentação das estruturas de índice e, sempre que necessário, as reconstroem automaticamente. Nossas idéias estão implementadas no SGBD PostgreSQL. Testes de desempenho são apresentados para mostrar a aplicabilidade da nossa abordagem na prática. 1. Introdução As aplicações de bancos de dados têm se tornado cada vez mais complexas e variadas. Estas podem ser caracterizadas por manipularem grandes volumes de dados e pela demanda por baixo tempo de resposta das consultas e por alta produtividade (throughput) das transações. Neste contexto, a sintonia (tuning) [Shasha e Bonnet 2003] das estruturas de índice tem se revelado ainda mais importante, influindo diretamente no desempenho dos sistemas de bancos de dados. Realizar o ajuste das estruturas de índice nas aplicações atuais tem se tornado uma tarefa extremamente complicada para os administradores de bancos de dados (DBAs). Esta tarefa requer um profundo conhecimento acerca dos detalhes de implementação dos sistemas de gerenciamento de bancos de dados (SGBDs), das características dos dados armazenados, das aplicações e da carga de trabalho (conjunto de consultas e atualizações) submetida ao SGBD [Bruno e Chaudhuri 2007a], [Luhring et al 2007]. Os principais fabricantes de SGBDs oferecem ferramentas para prover suporte à sintonia automática (ou auto-sintonia) de índices (Ex.: [Zílio et al 2004], [Bruno e Chaudhuri 2005]). A idéia é auxiliar os DBAs através da análise automática da carga de trabalho e, com base nesta análise, recomendar a criação ou remoção de índices. Entretanto, tais ferramentas adotam uma abordagem estática (offline) na solução do problema e transferem para o DBA tarefas de sintonia importantes e decisões relativas à quando modificar o esquema e quais de fato são as modificações necessárias. Além disso, são soluções ad-hoc e que exigem participação de DBAs especialistas.
2 Algumas iniciativas recentes apresentam descrições de protótipos que implementam algumas funcionalidades na direção da sintonia automática e contínua das estruturas de índice [Schnaitter et al 2006], [Luhring et al 2007], [Costa 2005], [Salles e Lifschitz 2005], [Lifschitz e Morelli 2006]. Alguns desses trabalhos procuram estender o SGBD PostgreSQL adicionando funcionalidades de auto-sintonia (Ex.:. [Salles 2004], [Costa 2005], [Salles e Lifschitz 2005], [Lifschitz e Morelli 2006], [Luhring et al 2007]). Os fabricantes de SGBDs comerciais, tais como: DB2, Oracle e SQL Server, também têm procurado investigar novas funcionalidades que possibilitam a manutenção automática das estruturas de índice [Bruno e Chaudhuri 2007a]. Contudo, ainda há muito desconhecimento sobre o momento ideal de criar ou remover um determinado índice e, principalmente, de quando recriá-lo. O benefício trazido pela existência de um determinado índice, para uma determinada consulta, é influenciado por dois fatores: a sua seletividade da consulta e o grau de fragmentação do índice. Logo, manter índices fragmentados pode degradar o desempenho da carga de trabalho submetida ao SGBD. Por outro lado, a remoção de um índice fragmentado para sua posterior criação pode gerar um overhead desnecessário [Shasha e Bonnet 2003]. Este trabalho apresenta um mecanismo que possibilita automatizar a recriação de índices fragmentados e analisa em detalhes uma heurística para tal automação. A abordagem proposta executa independentemente de interações com os DBAs. Especificamente, desenvolvemos um conjunto de heurísticas que executam continuamente, detectam a existência de índices fragmentados, e, sempre que necessário, reconstroem estes índices, evitando assim os malefícios causados pela existência de índices fragmentados. A arquitetura concebida neste trabalho foi implementada em um SGBD de código aberto, o PostgreSQL [Postgresql 2009]. Esta implementação teve a sua eficácia comprovada através dos testes que foram realizados. O restante deste artigo está organizado da seguinte maneira: A seção 2 apresenta os trabalhos relacionados. A seção 3 discute o estudo realizado sobre a fragmentação de índices e os resultados dos testes executados que comprovam a necessidade da preocupação com índices fragmentados. Na seção 4 descreve uma proposta de solução para o problema da reconstrução automática de índices. Por fim, a seção 5 conclui este trabalho e aponta direções para futuras pesquisas. 2. Trabalhos Relacionados No contexto da sintonia de índices, foram identificados alguns trabalhos relacionados que se propõe a realizar a sintonia automática de índices em SGBDs, buscando melhorar o desempenho das execuções de consulta através de sugestões de criação ou remoção de índices. Em [Sattler et al 2003], [Sattler et al 2004] propõe-se um middleware, situado entre as aplicações e o SGBD DB2, que sugere, de forma automática, a criação de índices. Esta solução baseia-se em comandos proprietários do DB2 (Ex.: SET CURRENT EXPLAIN MODE RECOMMEND INDEXES), os quais não existem em outros SGBDs. Além disso, exige-se que todas as cláusulas SQL sejam enviadas para o middleware e não mais para o SGBD, o que implica na necessidade de re-escrever as aplicações previamente existentes e na impossibilidade de se gerenciar uma carga de trabalho que seja submetida diretamente ao SGBD.
3 Os trabalhos propostos em [Salles 2004], [Salles e Lifschitz 2005], [Costa 2005] apresentam um componente de auto-sintonia implementado junto ao código do PostgreSQL, que possibilita a criação automática de índices. Utilizou-se para tanto configurações de índices hipotéticos, índices existentes apenas na metabase, que podem ser considerados para construção de planos de consulta alternativos. Em [Schnaitter et al 2006] os autores apresentam um protótipo de um framework de auto-sintonia denominado COLT (Continuos On-Line Tuning), o qual monitora as consultas submetidas ao SGBD e ajusta de forma automática a configuração de índices, levando em consideração a restrição do espaço disponível para estas estruturas. O COLT foi implementado de forma integrada ao PostgreSQL. Em [Luhring et al 2007] os autores apresentam uma abordagem para a sintonia automática de índices que se baseia na utilização de índices hipotéticos e independe de qualquer interação do DBA. Esta abordagem também foi implementada junto ao código do PostgreSQL. Em [Bruno e Chaudhuri 2007a], [Bruno e Chaudhuri 2007b] os autores apresentam uma ferramenta de sintonia automática de índices implementada como uma extensão do Microsoft SQL Server Este novo componente executa continuamente e, reagindo a variações na carga de trabalho ou nas características dos dados, modifica de forma automática o projeto físico do banco de dados. Os algoritmos propostos apresentam baixa sobrecarga e levam em consideração restrições no espaço de armazenamento, o custo da atualização das estruturas de índices causadas pelas operações de update e o custo de criar estruturas físicas temporárias. Contudo, todos estes trabalhos não consideram a possível recriação automática de índices fragmentados. Assim, a abordagem proposta neste artigo estende os trabalhos anteriores realizando não somente a criação e a remoção, mas também a reconstrução (reindex) automática de índices. Como os índices considerados neste trabalho obedecem a organizações em árvore B + (os ponteiros de dados encontram-se armazenados somente nos nós folhas da árvore) um grande número de inserções, atualizações ou eliminações de chaves, fatalmente provocará o particionamento de páginas de disco (page splits [Shasha e Bonnet 2003]). Este fato pode causar fragmentação na estrutura, dependendo da localização de onde venham a ser alocadas novas páginas. A Figura 1 apresenta um índice que não sofreu nenhum particionamento de páginas de disco; enquanto que a Figura 2 exibe o mesmo índice após muitas atualizações. Figura 1. Índice não fragmentado.
4 Figura 2. Índice fragmentado As setas apresentadas nas Figuras 1 e 2 revelam a ordem na qual o índice será percorrido. Deve-se perceber a ausência de múltiplos deslocamentos a posições anteriores em um índice apresentando grau de fragmentação zero. Já um índice fragmentado prejudica as operações de varredura, já que o artefato físico responsável pela leitura pode ser obrigado a realizar muitos deslocamentos físicos. É importante lembrar que a preocupação com a fragmentação está relacionada à varredura do índice e não aos acessos individuais as páginas em disco. Uma solução imediata para esse problema é a completa reconstrução periódica de todos os índices, de preferência em instantes de pouca atividade. Entretanto, tal abordagem traria dois graves inconvenientes: 1) Os grandes bancos de dados podem possuir centenas ou mesmo milhares de índices; Reconstruir todos, por mais quieto que esteja o Sistema, causaria um esforço computacional considerável; 2) Há índices cujas tabelas não sofrem atualizações ou são raramente atualizadas. Nestes casos, a reconstrução não traz benefício algum. Este trabalho apresenta argumentos que atestam a necessidade da recriação periódica de índices fragmentados, para que o desempenho no processamento de consultas sobre as tabelas nas quais foram criados não seja prejudicado. Além disso, propõe-se uma abordagem para a identificação e reconstrução automáticas de índices fragmentados. 3. Estudo da Fragmentação de Índices A existência de um índice fragmentado prejudica a execução de consultas que realizam varreduras (ordenação, agrupamento, filtros como intervalos) e apresentam alta seletividade (conjunto de linhas retornadas). Durante a realização dos testes práticos que levaram à confecção deste trabalho, observou-se que o otimizador somente utiliza um índice se a seletividade da consulta estiver abaixo de um determinado valor limítrofe. Um índice fragmentado implica em maior consumo de espaço físico e maior duração na execução de consultas com varreduras, pois quanto maior a duração de execução das consultas com baixa velocidade no acesso (E/S) aos dados, maior será o consumo de recursos, aumentando assim o custo de processamento da consulta. Para comprovar estes fatos, realizou-se o seguinte experimento: a partir de uma tabela escolhida aleatoriamente e um determinado índice a ela associado, elaborou-se uma rotina de carga (com inserções, remoções e atualizações) que resultava na fragmentação deste índice. Em seguida, estando a tabela preenchida, comparou-se o tempo de execução de uma consulta antes e depois da reconstrução do índice. Os dados coletados mostram que a reconstrução permite melhoras pontuais em dois aspectos: duração/custo da consulta e o espaço ocupado pelo índice. A seguir, discutimos em detalhes o experimento realizado.
5 Considere a tabela Venda, cujo esquema é descrito na Figura 3, inicialmente carregada com tuplas. Elaborou-se uma rotina de carga de uma segunda tabela denominada Venda2, a qual possui a mesma estrutura da tabela Venda, com o seguinte roteiro: Coluna Tipo num integer prodnum integer data qtd valor date integer numeric(10,2) Figura 3. Estrutura da tabela Venda. 1. Estando a tabela Venda2 vazia; 2. Copiam-se 20 vezes as tuplas de Venda para a Venda2, porém alterandose o conteúdo do campo num (identificador único da tupla). Cabe observar que, inicialmente, Venda2 encontra-se vazia. A quantidade final de tuplas em Venda2 será de 20 x = Cria-se um índice, denominado Ind2, sobre o campo num da tabela Venda2. 4. Aumenta-se o volume da tabela Venda2 em 7 vezes, realizando inserções entre tuplas que já existam. Ao final da última etapa haverá cinqüenta e seis milhões de tuplas em Venda2. Como o índice é criado com a tabela já contendo de tuplas, a inserção de mais de registros causará grande fragmentação, pois haverá grande incidência de particionamento de páginas de disco. Logo, espera-se que consultas que realizem operações de varredura tenham, conseqüentemente, seu desempenho prejudicado Resultados dos testes experimentais Utilizando a tabela Venda2, realizamos uma bateria de testes sobre 3 SGBDs largamente utilizados no mercado: o PostgreSQL, Oracle 9i e MS SQL Server Uma das consultas testadas, cujo desempenho é prejudicado devido ao estado fragmentado do índice Ind2 é apresentada na Figura 4. Os valores foram efetivamente utilizados como referência nos testes com os SGBDs considerados. Para comprovarmos que a primeira consulta (executada antes da reconstrução do índice Ind2) foi executada sobre uma estrutura de índices realmente fragmentada, utilizamos os comandos proprietários de cada SGBD utilizado para consultar o grau de fragmentação do índice Ind2. Por exemplo, no SQL Server utilizou-se o comando DBCC SHOWCONTIG. Neste caso, para que um índice apresente uma fragmentação de grau zero, a medida Scan Density deve apresentar um valor próximo a 100%. Pode-se observar através da Figura 5 que no teste realizado este valor equivale a 12,5%. Através deste experimento podemos verificar que nos três SGBDs utilizados (PostgreSQL, SQL Server e Oracle), executaram-se comandos que mostraram
6 resultados numéricos envolvendo os dois fatores afetados pela fragmentação: espaço ocupado pelo índice e duração/custo da consulta. Além disso, podemos observar os malefícios da fragmentação de índices. Logicamente, em casos de volumes de dados ainda maiores, estes problemas teriam um impacto ainda maior sobre o sistema. Apesar de evidenciada pela diferença de tamanhos de um índice antes e depois da reconstrução, os otimizadores ainda não possuem recursos para identificar situações onde o índice apresente altos graus de fragmentação. O ideal é que um índice não seja considerado pelo otimizador, caso exista uma distribuição não compacta de suas páginas do nível folha. select sum(valor) from venda2 where num between 5 and or num between and or num between and or num between and or num between and or num between and or num between and Figura 4. Exemplo de varredura sobre uma tabela com índice fragmentado DBCC SHOWCONTIG scanning 'venda2' table... Table: 'venda2' ( ); index ID: 2, database ID: 8 LEAF level scan performed. - Pages Scanned...: Extents Scanned...: Extent Switches...: Avg. Pages per Extent...: Scan Density [Best Count:Actual Count]...: 12.50% [21743:173937] - Logical Scan Fragmentation...: 99.22% - Extent Scan Fragmentation...: 0.41% - Avg. Bytes Free per Page...: Avg. Page Density (full)...: 87.48% DBCC execution completed. If DBCC printed error messages, contact your system administrator. Figura 5. Evidência do estado de fragmentação de um índice no SQL Server.
7 A Tabela 1 compara o espaço em disco ocupado pelo índice Ind2, o custo da consulta apresentada na Figura 4 e a duração da mesma consulta em dois momentos distintos: antes e depois da reconstrução do índice Ind2. Tabela 1. Resultados PostgreSQL, SQL Server e Oracle. Resultados PostgreSQL Fator Antes Depois Diferença Espaço 1.231,74 MB 957 MB -22,30% Duração 30s 28s -6,67% Custo ,11% Resultados SQL Server Fator Antes Depois Diferença Espaço 1.366,52 MB 1.193,01 MB -12,70% Duração ms ms -16,16% Custo ,116-4,72% Resultados Oracle Fator Antes Depois Diferença Espaço MB MB -5,47% Duração 4s 3s -25% Custo ,14% 4. Solução por Auto-sintonia Global A proposta de solução para evitar a existência de índices fragmentados utiliza uma heurística que possui dois pilares: enumeração de índices candidatos e acompanhamento de índices (hipotéticos ou não), mantendo-lhes uma determinada carga de benefícios (ou malefícios), calculada a partir de participações em comandos. Na estratégia utilizada neste trabalho, uma vez detectado que um determinado índice apresenta um benefício acumulado negativo, cujo módulo supere o custo de criação do índice, dispara-se a eliminação do mesmo. Ocorre, entretanto, que muitas vezes um índice poderia continuar sendo útil, uma vez que este fosse reconstruído, como no caso do índice estar fragmentado. Neste caso, o índice poderia ter acumulado um benefício negativo pelo fato de estar fragmentado e não pelo fato de não estar sendo utilizado pelas consultas executadas (ou seja, que compõem a carga de trabalho submetida ao SGBD). Desta forma, a Heurística de Reconstrução Automática de Índices (HRAI), proposta neste artigo, analisa casos de eliminação iminente e, caso julgue conveniente, dispara o reindex, isto é, executa a reconstrução automática do índice. A HRAI concebida estabelece regras que permitem decidir se um índice deve ser reconstruído ou eliminado. A decisão quanto à recriação de um determinado índice deve analisar três
8 fatores: (i) grau de fragmentação, (ii) o tamanho do índice e (iii) a quantidade de varreduras (scans) executadas sobre o índice. No caso do grau de fragmentação de um índice, este pode ser estimado comparando-se a razão em dois momentos: logo após a criação, quando não existe fragmentação, e quando se deseja verificar se é relevante aplicar uma reconstrução, ou simplesmente seu descarte. A razão é calculada da seguinte forma: R = tuplas de uma tabela / quantidade de blocos do índice Assim, propõe-se a seguinte fórmula para cálculo do grau de fragmentação de um índice (Figura 6): G rf = [ (R a / R i ) * 100] Figura 6. Fórmula que obtém o grau de fragmentação de um índice Onde R a representaria a razão atual e R i a razão inicial, gerada logo após a criação do índice. Por exemplo, suponha que se identificou um determinado índice, ir1, criado sobre a tabela Venda (Figura 3) com 879 blocos comportando tuplas (R i = 455,06). Após várias operações, a quantidade de blocos aumentou para em tuplas (R a = 184,27). Desta forma, calcula-se G rf como 59,50% No que diz respeito ao fator tamanho, é fato que tabelas ocupando poucos blocos não deveriam ter seus índices cogitados à reconstrução. Para exemplificar, suponhamos que a tabela T1 tenha tuplas e um índice com apenas dois blocos plenamente ocupados (razão tuplas/blocos = 500). Quando ocorrer a inserção da milésima primeira linha, o índice ganhará um terceiro bloco, porém sua razão cairá para 333 (um decréscimo de 33,4%). Apesar de apresentar uma considerável queda em sua razão tuplas/blocos, a reconstrução do índice não proporcionaria uma ocupação com menos de três blocos, ou seja, a reconstrução não traria benefícios quanto à diminuição do número de blocos ocupados pelo índice. Por fim, deve-se avaliar a quantidade de varreduras realizadas sobre o índice, pois, consultas que executam operações de varredura sobre um determinado índice terão seu desempenho degradado caso o índice utilizado encontre-se fragmentado. Além disso, o fato de um índice ter sido útil em uma consulta onde houve varreduras já faz com que seja um candidato à reconstrução Fator de Preenchimento Uma vez constatada a fragmentação de um índice, causada por sucessivas ocorrências de particionamentos de páginas de disco, caso decida-se recriá-lo, recomenda-se fazê-lo deixando uma margem para futuras atualizações. Normalmente, SGBDs possuem mecanismos que permitem dosar quantos bytes podem ser gravados por bloco. A heurística HRAI determina um fator de preenchimento de páginas com base no histórico de operações de varreduras nas quais participou de forma positiva o índice em vias de reconstrução. Como se utilizou PostgreSQL para realizar as implementações, houve a necessidade de estender os comandos create index, reindex index e reindex table para que aceitassem uma nova cláusula, fillfactor, valendo entre 1 e 9. O menor
9 valor significa que apenas um décimo de cada página será sendo ocupada, enquanto que o maior sinaliza 90% de ocupação GETSIZE Um índice cuja razão blocos_índice/tuplas_tabela (R) apresente valores distantes daqueles medidos imediatamente após sua criação, pode ser considerado como fragmentado. Por exemplo, dada uma tabela denominada Venda e um índice denominado ix_num definido sobre o atributo num da tabela Venda, pode-se descobrir as quantidades de blocos e tuplas, consultando-se a metabase do SGBD. A Figura 7 mostra um comando de consulta à metabase do PostgreSQL, o qual revela a quantidades de páginas e tuplas da tabela Venda. Vale ressaltar que assim como em qualquer SGBD, a confiabilidade dos valores da metabase depende da atualização periódica das estatísticas. select relname, reltuples, relpages from pg_class where relname in ('ix_num','venda') ; relname reltuples relpages ix_num venda Figura 7. Investigação do tamanho de uma tabela em PostgreSQL. As decisões quanto às utilizações de índices realizadas pelo otimizador de qualquer SGBD são baseadas nas informações que constam na metabase. Caso esta não seja atualizada periodicamente, corre-se o risco de acontecerem otimizações errôneas. Para evitar este problema, a implementação da HRAI precisou obter as quantidades reais de tuplas e páginas de tabelas e índices, por meios próprios. Uma forma alternativa de comprovar a quantidade real de páginas e tuplas de uma tabela no PostgreSQL consiste em utilizar uma ferramenta opcional denominada pgstattable. Trata-se de uma função que checa todas as páginas da tabela, informando quantidades reais. A Figura 8 mostra um exemplo de chamada à função e seu resultado. select tuple_count, table_number_blocks from pgstattable ('venda'); tuple_count table_number_blocks Figura 8. Exemplo de utilização da função pgstattable. Como não se informam dados sobre índices, foi necessário, com base em pgstattable, desenvolver uma nova função para o PostgreSQL, denominada pgstatindex, que também checa todas as páginas de um dado índice. A Figura 9 mostra um exemplo de chamada à função e seu resultado.
10 select tuple_count, table_number_blocks, index_len, index_number_blocks, index_tuple_count from pgstatindex ('venda', 'ix_num'); tuple_count table_number_blocks index_len index_number_blocks index_tuple_coun t Figura 9. Exemplo de utilização da função pgstatindex. A nova função, pgstatindex, serviu de inspiração para o desenvolvimento de um novo comando para o PostgreSQL, denominado getsize. Dado um nome de um índice, o comando checa todas as tuplas da tabela correspondente e conta as páginas do índice. Estes dois dados permitirão calcular as duas razões R i (logo após sua criação) e R a (uma vez detectada a possibilidade de eliminá-lo). Com as informações retornadas por getsize pode-se derivar dois dos três fatores necessários à decisão de reconstruir, ou não, um índice. Fica faltando apenas a quantidade de varreduras já executadas sobre o índice, valor que será informado pelo Agente de Benefícios, como detalhado na próxima seção Heurística de Reconstrução Automática de Índices Diante da carência de recomendações quanto à reconstrução de índices fragmentados, foi necessário desenvolver uma heurística própria que fosse capaz de reconstruir índices fragmentados. Assim como em [Salles 2004], a heurística será executada simultaneamente com outros serviços providos pelo SGBD, fazendo com que a recriação seja realizada de forma automática e online. Para apresentar a heurística, devem-se definir cinco fatores: T t : tamanho em tuplas de uma determinada tabela. T i : tamanho em blocos de um determinado índice. R: razão entre T t e T i. G rf : grau de fragmentação de um determinado índice, obtido através da fórmula descrita na Figura 6. V: número de varreduras nas quais o índice participou desde sua criação. A heurística é composta pelas funcionalidades: i. Novo Índice: deve-se armazenar o nome de um índice recém criado; ii. Solicitação de Tamanho: solicita-se ao SGBD T i e T t referentes a um determinado índice; iii. Cálculo de Razão: obtém-se R com base em T i e T t. iv. Solicitação de Varreduras: pede-se V de um dado índice;
11 v. Cálculo de Grau de Fragmentação: obtém-se G rf com base em R i e R a ; vi. Reconstrução: caso G rf, V e T i atendam a determinados limites (thresholds), efetua-se a reconstrução. A solicitação de tamanho (segunda funcionalidade) e o cálculo da razão (terceira) ocorrem para cada índice armazenado em dois momentos: (1) logo após a criação (R i ) e (2) previamente à decisão de reconstruir ou não (R a ). A solicitação tem por conseqüência a execução do comando getsize pelo SGBD. Antes da reconstrução, deve-se calcular o novo fator de preenchimento segundo a equação apresentada na Figura 10. Quanto mais varreduras um índice fragmentado tiver tido, menor será o seu fillfactor objetivando reduzir a incidência de particionamento de páginas de disco. Entretanto, deve-se ressaltar que, ao reduzir o fillfactor, diminui-se a quantidade de informações por bloco, levando à necessidade de maior alocação de páginas. F = 10 - [ (V + 10) div 10] Figura 10. Equação para obtenção do fator de preenchimento. Por exemplo, supondo que um determinado índice tenha sofrido 34 varreduras, seu novo fator de preenchimento é: F = 10 [ ( ) div 10] F = 10 (44 div 10) F = 6 Portanto, o índice terá suas páginas em nível folha preenchidas até 60%. Esta heurística possui uma limitação que poderia ser otimizada para que ela decida por uma reconstrução do índice antes de ele ser eliminado, ou seja, não sendo necessário manter um índice fragmentado até a decisão de eliminá-lo ou recriá-lo, usando informações da metabase sobre o particionamento de páginas Estrutura Funcional O componente de software responsável pela implementação da heurística HRAI denomina-se Agente Desfragmentador. Sua construção seguiu a mesma linha de estudos utilizada em [Salles 2004] e [Milanés 2004], onde foram adaptadas propostas presentes em [Kendall 1999]. O Agente Desfragmentador interage com o Agente de Benefícios, cuja implementação estendeu o trabalho proposto em [Salles 2004]. Enquanto o Agente de Benefícios cria e destrói índices, o Agente Desfragmentador preocupa-se com as reconstruções Implementação no PostgreSQL Como não foi possível determinar valores ótimos para os fatores G rf, V e T i, preferiu-se deixá-los como parâmetros de configuração para serem ajustados livremente pelo DBA. No caso específico do PostgreSQL, deve-se alterar o arquivo de inicialização denominado postgresql.conf. Nele aparecem as configurações necessárias ao
12 funcionamento do PostgreSQL, tais como área em memória destinada para dados, nível de depuração do ambiente, padrões de comunicação entre clientes e servidor, entre outros. O parâmetro default_fillfactor pode ser alterado a qualquer momento. Por exemplo, após emitir o comando: Set default_fillfactor = 7; Todo índice criado (create index) ou recriado (reindex index) que não utilize explicitamente a cláusula fillfactor, assumirá 70% de preenchimento de páginas Estrutura dos Testes Experimentais A bateria de testes seguiu utilizando como referência uma única tabela da base de dados. A tabela Venda com tuplas. Procura-se observar o comportamento dos dois agentes, bem como a criação, destruição e recriação de índices. Durante os testes utilizou-se o comando evaluate, cuja sintaxe aparece a seguir: evaluate <complemento> O complemento, que pode ser qualquer uma das seguintes operações: select, update, delete ou insert, é repassado ao Agente de Benefícios. Este comando permite o repasse de uma operação ao agente de forma a eliminar a fase de execução, sendo possível a avaliação de todas as operações sem as etapas mais custosas; assim, por conta da utilização do comando evaluate, se ganha em agilidade, já que não se perde tempo com longas execuções. A Tabela 2 revela uma seqüência de comandos onde verificam-se todas as interações possíveis entre os agentes. Tabela 2. Resumo da bateria de testes Instante 1 (8 execuções) evaluate select prodnum, valor, data, qtd from venda where num = 10000; Criado índice ri_venda_0 com benefícios acumulados de ,9 e Bônus (benefício acumulado dividido pela quantidade de vezes que o índice hipotético teria sido utilizado, caso fosse um índice real) igual a 8.143,99. Durante as sete execuções prévias, existiu um índice hipotético denominado hi_venda_0. Instante 2 (1 execução) evaluate select prodnum, valor, data, qtd from venda where num=10000; Agente de Benefícios (AB) informa Agente Desfragmentador (AD) que um índice criado foi usado pela primeira vez; AD dispara getsize; B i = 879 T t = Instante 3 (12 execuções) evaluate select prodnum, valor, data, qtd from venda where num between and 10020;
13 Como trata-se de uma consulta com varreduras, AB atualiza o atributo scans de ri_venda_0 para 12. Instante 4 (1 execução) update venda set num = num ; Como trata-se de uma atualização, AB decrementa os benefícios acumulados de ri_venda_0. Valor corrente: Instante 5 (21 execuções) evaluate update venda set num = num ; Benefícios acumulados de ri_venda_0: ,30. Custo de Eliminação: ,90 Instante 6 (1 execução) evaluate update venda set num = num ; Mesmo que ocorra um comando que afete negativamente o índice, o Agente de Benefícios somente o destruirá uma vez recebida a liberação. AB notifica AD sobre a intenção de eliminar um índice; AB informa Varreduras a AD (12). AD dispara getsize; AD notifica AB sobre a proibição de destruir um índice; B a = T a = R i = 455,06 R a = 190,74; G rf = 58,08 Instante 7 Reconstruído índice ri_venda_0 com fillfactor 8 (Figura 10) AD notifica AB que um determinado índice foi reconstruído. Instante 8 (1 execução) Select table_number_blocks, index_len, index_number_blocks from pgstatindex ('venda', 'ri_venda_0'); Informada a nova quantidade de páginas de ri_venda_0 (991), um pouco superior às 879 iniciais, devido ao fillfactor menor (8 ao invés de 9). Instante 9 (1 execução) evaluate select prodnum, valor, data, qtd from venda where num between and 10020; Benefícios acumulados de ri_venda_0: ,90 evaluate update venda set num = num ; Instante 10 (9 execuções)
14 Benefícios acumulados de ri_venda_0: ,30 Custo de Eliminação: ,90. AB notifica AD sobre a intenção de eliminar um índice; AB informa Varreduras a AD (12). AD dispara getsize; AD notifica AB sobre a proibição de destruir um índice; B i = 991 T i = R i = 455,06 R a = 403,63; G rf = 11,03 Índice ri_venda_0 destruído; Instante 11 Como G rf foi inferior ao parâmetro dia_ratio(50), AD notifica AB que um determinado índice pode ser destruído. AB cria Índice hipotético hi_venda_0 com benefícios acumulados iguais a ,10 A realização da bateria de testes resumida na Tabela 2 permite afirmar com segurança que a implementação da heurística obteve sucesso. Devido à limitações de espaço, deixamos para explorar em trabalhos futuros situações mais complexas, tais como cargas de trabalho derivadas do benchmark TPC-C para confirmar a eficácia da HRAI. 5. Conclusões Neste trabalho, apresentamos um mecanismo que possibilita automatizar a recriação de índices fragmentados. A abordagem proposta executa de forma contínua e automática, ou seja, independentemente de interações com seres humanos. Especificamente, desenvolvemos um conjunto de heurísticas que executam continuamente, detectam a existência de índices fragmentados, e, sempre que necessário, reconstroem estes índices, evitando assim os malefícios causados pela existência de índices fragmentados. A arquitetura concebida neste trabalho foi implementada em um SGBD de código aberto, o PostgreSQL. Como próximos passos pretende-se avaliar a possibilidade de pré-criação de índices envolvidos com chaves primárias e estrangeiras. Além disso, a HRAI poderia decidir a reconstrução antes da eliminação iminente, isto é, não seria necessário manter um índice fragmentado até o momento em que se decida eliminá-lo ou recriá-lo. Uma opção interessante seria criar um conjunto de alertas nos quais o Agente poderia emitir avisos informando que um determinado índice atingiu níveis preocupantes de fragmentação. Estes níveis poderiam ser pré-configurados utilizando thresholds. Referências Bruno, N. e Chaudhuri, S. (2005) Automatic physical database tuning: a relaxationbased approach, In: Proceedings of the 2005 ACM SIGMOD International Conference on Management of Data, , Baltimore. Bruno, N. e Chaudhuri, S. (2007a) An Online Approach to Physical Design Tuning, In: Proceedings of the ICDE Conference (ICDE07). Bruno, N. e Chaudhuri, S. (2007b) Online autoadmin: (physical design tuning), In: Proceedings of the 2007 ACM SIGMOD International Conference on Management of Data (SIGMOD07), , Beijing, China.
15 Costa, R. L. C., Lifschitz, S., Noronha, M. e Salles, M. V. (2005) Implementation of an Agent Architecture for Automated Index Tuning, In: Proceedings of the ICDE Workshops. Kendall, E., Krishna, P., Pathak, C. e Suresh, C. (1999) A Framework for Agent Systems, In: Implementing Application Frameworks - Object-Oriented Frameworks at Work, Lifschitz, S. e Morelli, E. T. (2006) Towards Autonomic Index Maintenance, In: Proceedings of the Brazilian Symposium on Database. Luhring, M., Sattler, K., Schmidt, K. e Schallehn, E. (2007) Autonomous Management of Soft Indexes, In: Proceedings of the 23rd IEEE International Conference on Data Engineering Workshop (ICDE'07). Milanés, A. (2004) Uma arquitetura para auto-sintonia global de SGBDs usando agentes, Dissertação de mestrado, Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio). Postgresql. (2009) PostgreSQL: The world s most advanced open source database, disponível em: acessado em maio de Salles, M. V. (2004) Criação Autônoma de Índices em Bancos de Dados, Dissertação de mestrado, Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio). Salles, M. V. e Lifschitz, S. (2005) Autonomic Index Management, In: Proceedings of the International Conference on Autonomic Computing (ICAC). Sattler, K., Geist, I. e Schallehn, E. (2003) QUIET: Continuous query-driven index tuning, In: Proceedings of the 29th international conference on Very large data bases (VLDB03), , Berlin, Germany. Sattler, K., Schallehn, E., Geist, I. (2004) Autonomous Query-Driven Index Tuning,In: Proceedings of the International Database Engineering and Applications Symposium (IDEAS'04), , IEEE Computer Society. Schnaitter, K., Abiteboul, S., Milo, T. e Polyzotis, N. (2006) COLT: continuous online tuning, In: Proceedings of the ACM SIGMOD International Conference on Management of Data (SIGMOD06), , Chicago, IL, USA. Shasha, D., Bonnet, P. (2003) Database Tuning, Morgan Kaufmann Publishers. Zilio, D., Rao, J., Lightstone, S., Lohman, G., Storm, A., Garcia-Arellano, C. e Fadden, S. (2004) Db2 Design Advisor: Integrated Automatic Physical Database Design, In: Proceedings of the International Conference on Very Large Databases (VLDB),
Reindexação Automática em SGBDs Relacionais
Reindexação Automática em SGBDs Relacionais Eduardo Morelli, José Maria Monteiro, Ana Carolina Almeida, Sérgio Lifschitz Departamento de Informática PUC Rio {emorelli,monteiro,abrito,sergio}@inf.puc rio.br
Leia maisReindexação Automática em SGBDs Relacionais
Reindexação Automática em SGBDs Relacionais Eduardo Morelli emorelli@inf.puc-rio.br Ana Carolina Almeida abrito@inf.puc-rio.br José Maria Monteiro monteiro@inf.puc-rio.br Sérgio Lifschitz sergio@inf.puc-rio.br
Leia mais4 Implementação e Resultados Experimentais
4 Implementação e Resultados Experimentais Com o objetivo de fazer a criação automática de visões materializadas, ou seja, prover uma solução on-the-fly para o problema de seleção de visões materializadas,
Leia maisISO/IEC 12207: Gerência de Configuração
ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que
Leia maisTuning e Self-Tuning de Bancos de Dados
Tuning e Self-Tuning de Bancos de Dados Dr. José Maria Monteiro Universidade de Fortaleza (UNIFOR) monteiro@unifor.br Secretaria da Fazenda do Estado do Ceará Sefaz-CE monteiro@sefaz.ce.gov.br 1 Self-Tuning
Leia maisA memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande
A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande região de armazenamento formada por bytes ou palavras, cada
Leia maisNOME SEXO CPF NASCIMENTO SALARIO
Tutorial SQL Fonte: http://www.devmedia.com.br/articles/viewcomp.asp?comp=2973 Para começar Os Sistemas Gerenciadores de Bancos de Dados Relacionais (SGBDr) são o principal mecanismo de suporte ao armazenamento
Leia maisNotas da Aula 17 - Fundamentos de Sistemas Operacionais
Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.
Leia maisConsistem num conjunto de apontadores para instâncias especificas de cada relação.
Mecanismo usado para mais fácil e rapidamente aceder à informação existente numa base de dados. Bases de Dados de elevadas dimensões. Consistem num conjunto de apontadores para instâncias especificas de
Leia maisSistemas de Banco de Dados Aspectos Gerais de Banco de Dados
Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados 1. Conceitos Básicos No contexto de sistemas de banco de dados as palavras dado e informação possuem o mesmo significado, representando uma
Leia maisNoções de. Microsoft SQL Server. Microsoft SQL Server
Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados
Leia maisSistemas Operacionais
Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário
Leia maisEngenharia de Software III
Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,
Leia maisCapacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB
Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha
Leia maisProf.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br
Programação com acesso a BD Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br 1 Modelos de Dados, Esquemas e Instâncias 2 Modelos de Dados, Esquemas e Instâncias Modelo de dados: Conjunto de conceitos
Leia maisAdministração de Banco de Dados
Administração de Banco de Dados Adriano J. Holanda http://holanda.xyz 28/8/2015 Índices Para os testes com os índices criaremos uma tabela chamada tteste com o comando teste=> CREATE TABLE tteste (id int4);
Leia mais4 Segmentação. 4.1. Algoritmo proposto
4 Segmentação Este capítulo apresenta primeiramente o algoritmo proposto para a segmentação do áudio em detalhes. Em seguida, são analisadas as inovações apresentadas. É importante mencionar que as mudanças
Leia maisSistema de Controle de Solicitação de Desenvolvimento
Sistema de Controle de Solicitação de Desenvolvimento Introdução O presente documento descreverá de forma objetiva as principais operações para abertura e consulta de uma solicitação ao Setor de Desenvolvimento
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia mais2 Auto-sintonia de Bancos de Dados e Agentes de Software
2 Auto-sintonia de Bancos de Dados e Agentes de Software A uso da abordagem de agentes de software 1 pode trazer benefícios a áreas de aplicação em que é necessário construir sistemas autônomos, ou seja,
Leia maisArquitetura de Rede de Computadores
TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador
Leia maisLINGUAGEM DE BANCO DE DADOS
LINGUAGEM DE BANCO DE DADOS Gabriela Trevisan Bacharel em Sistemas de Informação Universidade Federal do Rio Grande Pós-Graduanda Formação Pedagógica de Professores (FAQI) Conceito de BD Um banco de dados
Leia maisPLANEJAMENTO OPERACIONAL - MARKETING E PRODUÇÃO MÓDULO 3 O QUE É PLANEJAMENTO DE VENDAS E OPERAÇÕES?
PLANEJAMENTO OPERACIONAL - MARKETING E PRODUÇÃO MÓDULO 3 O QUE É PLANEJAMENTO DE VENDAS E OPERAÇÕES? Índice 1. O que é planejamento de...3 1.1. Resultados do planejamento de vendas e operações (PVO)...
Leia maisMODELAGEM DE DADOS MODELAGEM DE DADOS. rafaeldiasribeiro.com.br 04/08/2012. Aula 7. Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord
MODELAGEM DE DADOS PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS Aula 7 Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord 1 Objetivos: Aprender sobre a modelagem lógica dos dados. Conhecer os
Leia maisConceitos de Banco de Dados
Conceitos de Banco de Dados Autor: Luiz Antonio Junior 1 INTRODUÇÃO Objetivos Introduzir conceitos básicos de Modelo de dados Introduzir conceitos básicos de Banco de dados Capacitar o aluno a construir
Leia maisConteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo
Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de
Leia mais3 SCS: Sistema de Componentes de Software
3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário
Leia maisBanco de Dados I. Apresentação (mini-currículo) Conceitos. Disciplina Banco de Dados. Cont... Cont... Edson Thizon (edson@esucri.com.
Sistemas da Informação Banco de Dados I Edson Thizon (edson@esucri.com.br) 2008 Apresentação (mini-currículo) Formação Acadêmica Mestrando em Ciência da Computação (UFSC/ ) Créditos Concluídos. Bacharel
Leia maisBanco de Dados Oracle. Faculdade Pernambucana - FAPE
Faculdade Pernambucana - FAPE Visão Geral dos Componentes Principais da Arquitetura Oracle Servidor Oracle É o nome que a Oracle deu ao seu SGBD. Ele consiste de uma Instância e um Banco de Dados Oracle.
Leia maisProf. Daniela Barreiro Claro
Prof. Daniela Barreiro Claro SQL, SQL3 e OQL são linguagens declarativas O SGBD deve processar e otimizar estas consultas antes delas serem efetivamente executadas Uma consulta possui muitas estratégias
Leia maisProf.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais
Sistemas Operacionais Prof.: Roberto Franciscatto Capítulo 1.2 Aspectos Gerais Estrutura do Sistema Operacional Principais Funções do Sistema Operacional Tratamento de interrupções e exceções Criação e
Leia maisSistemas Operacionais
Sistemas Operacionais Gerência de Arquivos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Conceituação de arquivos Implementação do sistemas de arquivo Introdução Sistema de
Leia maisPara construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.
Apresentação Este curso tem como objetivo, oferecer uma noção geral sobre a construção de sistemas de banco de dados. Para isto, é necessário estudar modelos para a construção de projetos lógicos de bancos
Leia maisNotas de Aula 05: Aplicação de um caso de uso
Notas de Aula 05: Aplicação de um caso de uso Objetivos da aula: Aprender a aplicar a técnica de casos de uso em um pequeno problema real Identificar as variáveis relevantes a serem consideradas Modelar
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia maisControle do Arquivo Técnico
Controle do Arquivo Técnico Os documentos existentes de forma física (papel) no escritório devem ser guardados em pastas (normalmente pastas suspensas) localizadas no Arquivo Técnico. Este Arquivo pode
Leia maisArquitetura de Computadores. Sistemas Operacionais IV
Arquitetura de Computadores Sistemas Operacionais IV Introdução Multiprogramação implica em manter-se vários processos na memória. Memória necessita ser alocada de forma eficiente para permitir o máximo
Leia maisAULA 5 Sistemas Operacionais
AULA 5 Sistemas Operacionais Disciplina: Introdução à Informática Professora: Gustavo Leitão Email: gustavo.leitao@ifrn.edu.br Sistemas Operacionais Conteúdo: Partições Formatação Fragmentação Gerenciamento
Leia maisBanco de Dados. Uma coleção de dados relacionados [ELMASRI/NAVATHE]
1/6 Banco de Dados O que é um Banco de Dados? Uma coleção de dados relacionados [ELMASRI/NAVATHE] Conjunto de dados integrados que tem por objetivo atender a uma comunidade específica [HEUSER] Um conjunto
Leia maisCrash recovery é similar ao instance recovery, onde o primeiro referencia ambientes de instância exclusiva e o segundo ambientes parallel server.
Recover no Oracle O backup e recuperação de dados em um SGBD é de grande importância para a manutenção dos dados. Dando continuidade a nossos artigos, apresentamos abaixo formas diferentes de se fazer
Leia maisPersistência e Banco de Dados em Jogos Digitais
Persistência e Banco de Dados em Jogos Digitais Prof. Marcos Francisco Pereira da Silva Especialista em Engenharia de Software Jogos Digitais - Computação Gráfica 1 Agenda Vantagens de usar a abordagem
Leia maisBancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info
Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com Última atualização: 20.03.2013 Conceitos Banco de dados distribuídos pode ser entendido como uma coleção de múltiplos bds
Leia maisTOTVS Série 1 Varejo (Simples) - Módulo e-commerce
Novo Módulo disponível no TOTVS S1 Varejo: permissão de utilização através de licença específica. Mesmo não adquirindo a licença de uso do módulo ele continuará presente na tela do usuário. 1 Na opção
Leia mais1 http://www.google.com
1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou
Leia maisCapítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho
20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam
Leia maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA RESUMO DE AULA CRIAÇÃO E MANIPULAÇÃO DO BANCO DE DADOS
Leia maisTarefa Orientada 16 Vistas
Tarefa Orientada 16 Vistas Objectivos: Vistas só de leitura Vistas de manipulação de dados Uma vista consiste numa instrução de SELECT que é armazenada como um objecto na base de dados. Deste modo, um
Leia mais15/03/2010. Análise por pontos de função. Análise por Pontos de Função. Componentes dos Pontos de Função. Componentes dos Pontos de Função
Análise por pontos de função Análise por Pontos de Função Referência: Manual de práticas de contagem IFPUG Versão 4.2.1 Técnica que permite medir a funcionalidade de um software ou aplicativo, sob a visão
Leia maisNORMA TÉCNICA E PROCEDIMENTOS GERAIS PARA ADMINISTRAÇÃO DO BANCO DE DADOS CORPORATIVO
NORMA TÉCNICA E PROCEDIMENTOS GERAIS PARA ADMINISTRAÇÃO DO BANCO DE DADOS CORPORATIVO Referência: NT-AI.04.01.01 http://www.unesp.br/ai/pdf/nt-ai.04.01.01.pdf Data: 27/07/2000 STATUS: EM VIGOR A Assessoria
Leia maisProcesso de Não Conformidade, Produto Não Conforme e Melhorias
Dono do Processo Bruno Silva Mendonça Substituto: Marilusa L B Bittencourt Aprovado por Comitê da Qualidade Analisado criticamente por Representante da Direção 1 OBJETIVOS Estabelecer o mecanismo de identificação
Leia maisGesToc Gestão de Transferências entre Estoques Versão 7.1 Roteiro: Programação Diária
GesToc Gestão de Transferências entre Estoques Versão 7.1 Roteiro: Programação Diária Roteiro: Programação Diária GesToc - Gestão de Transferências entre Estoques Versão 7.1 ilab Sistemas Especialistas
Leia maisMRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior
MRP II Introdução A lógica de cálculo das necessidades é conhecida há muito tempo Porém só pode ser utilizada na prática em situações mais complexas a partir dos anos 60 A partir de meados da década de
Leia maisPag: 1/20. SGI Manual. Controle de Padrões
Pag: 1/20 SGI Manual Controle de Padrões Pag: 2/20 Sumário 1 Introdução...3 2 Cadastros Básicos...5 2.1 Grandezas...5 2.2 Instrumentos (Classificação de Padrões)...6 3 Padrões...9 3.1 Padrão Interno...9
Leia maisPROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às
Leia maisOrganização de Arquivos
Classificação e Pesquisa de Dados Aula 2 Organização de s: s Sequenciais e s Sequenciais Indexados UFRGS INF01124 Organização de s Propósito Estudo de técnicas de armazenamento e recuperação de dados em
Leia maisFox Gerenciador de Sistemas
Fox Gerenciador de Sistemas Índice 1. FOX GERENCIADOR DE SISTEMAS... 4 2. ACESSO AO SISTEMA... 5 3. TELA PRINCIPAL... 6 4. MENU SISTEMAS... 7 5. MENU SERVIÇOS... 8 5.1. Ativação Fox... 8 5.2. Atualização
Leia maisSQL. Curso Prático. Celso Henrique Poderoso de Oliveira. Novatec
SQL Curso Prático Celso Henrique Poderoso de Oliveira Novatec 1 Introdução Desde o início da utilização dos computadores, sabemos que um sistema é feito para aceitar entrada de dados, realizar processamentos
Leia mais3 Arquitetura do Sistema
3 Arquitetura do Sistema Este capítulo irá descrever a arquitetura geral do sistema, justificando as decisões de implementação tomadas. Na primeira seção iremos considerar um conjunto de nós interagindo
Leia mais1.6. Tratamento de Exceções
Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER
Leia maiswww.leitejunior.com.br 29/06/2012 14:30 Leite Júnior QUESTÕES CESPE BACKUP
QUESTÕES CESPE BACKUP QUESTÃO 01 - Analise as seguintes afirmações relativas a cópias de segurança. I. No Windows é possível fazer automaticamente um backup, em um servidor de rede, dos arquivos que estão
Leia mais14/09/2008. Curso Superior de Tecnologia em Bando de Dados Disciplina: Projeto de Banco de Dados Relacional II Prof.: Fernando Hadad Zaidan
Faculdade INED Curso Superior de Tecnologia em Bando de Dados Disciplina: Projeto de Banco de Dados Relacional II Prof.: Fernando Hadad Zaidan Unidade 2.2 1 2 Material usado na montagem dos Slides Bibliografia
Leia maisSQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.
SQL comando SELECT Uma das tarefas mais requisitadas em qualquer banco de dados é obter uma listagem de registros armazenados. Estas tarefas são executadas pelo comando SELECT Sintaxe: SELECT [DISTINCT]
Leia maisUniversidade Federal de Goiás UFG Campus Catalão CAC Departamento de Engenharia de Produção. Sistemas ERP. PCP 3 - Professor Muris Lage Junior
Sistemas ERP Introdução Sucesso para algumas empresas: acessar informações de forma rápida e confiável responder eficientemente ao mercado consumidor Conseguir não é tarefa simples Isso se deve ao fato
Leia maisFACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>
FACULDADE DE ENGENHARIA DE COMPUTAÇÃO PROJETO FINAL I e II PLANO DE TRABALHO O Trabalho de Conclusão de Curso (TCC) a ser desenvolvido
Leia maisBanco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados
Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído por um conjunto de dados associados a um conjunto de programas para acesso a esses
Leia maisSistemas Operacionais Arquivos. Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br)
Sistemas Operacionais Arquivos Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br) Copyright Carlos Ferraz Cin/UFPE Implementação do Sistema de Arquivos Sistemas de arquivos são
Leia maisGerenciamento de Memória
Gerenciamento de Memória Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto Faculdade de Tecnologia de Americana Centro Paula Souza Tópicos Introdução Alocação Contígua
Leia maisSistema de Arquivos. Ambientes Operacionais. Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani
Sistema de Arquivos Ambientes Operacionais Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani Gerência de Arquivos É um dos serviços mais visíveis do SO. Arquivos são normalmente
Leia maisProcessamento e Otimização de Consultas
Introdução Processamento e Banco de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM 1 Processamento
Leia maisIFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira
IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários
Leia maisÁrvores Binárias de Busca
Árvores Binárias de Busca Uma Árvore Binária de Busca T (ABB) ou Árvore Binária de Pesquisa é tal que ou T = 0 e a árvore é dita vazia ou seu nó contém uma chave e: 1. Todas as chaves da sub-árvore esquerda
Leia maisHardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)
Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,
Leia mais04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 1. Prof. Rafael Dias Ribeiro. M.Sc.
MODELAGEM DE DADOS PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS Aula 1 Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord 1 Objetivos: Apresenta a diferença entre dado e informação e a importância
Leia maisSistemas Operacionais 3º bimestre. Dierone C.Foltran Jr. dcfoltran@yahoo.com
Sistemas Operacionais 3º bimestre Dierone C.Foltran Jr. dcfoltran@yahoo.com Sistema de Arquivos (1) Todas as aplicações precisam armazenar e recuperar informações. Considerações sobre os processos: Espaço
Leia maisPLANEJAMENTO DA MANUFATURA
58 FUNDIÇÃO e SERVIÇOS NOV. 2012 PLANEJAMENTO DA MANUFATURA Otimizando o planejamento de fundidos em uma linha de montagem de motores (II) O texto dá continuidade à análise do uso da simulação na otimização
Leia maisMódulo 4: Gerenciamento de Dados
Módulo 4: Gerenciamento de Dados 1 1. CONCEITOS Os dados são um recurso organizacional decisivo que precisa ser administrado como outros importantes ativos das empresas. A maioria das organizações não
Leia maisAplicação Prática de Lua para Web
Aplicação Prática de Lua para Web Aluno: Diego Malone Orientador: Sérgio Lifschitz Introdução A linguagem Lua vem sendo desenvolvida desde 1993 por pesquisadores do Departamento de Informática da PUC-Rio
Leia maisSistema de Gestão de Freqüência. Manual do Usuário
Serviço Público Federal Universidade Federal da Bahia Centro de Processamento de Dados Divisão de Projetos / SGF Sistema de Gestão de Freqüência Sistema de Gestão de Freqüência Manual do Usuário Descrição
Leia maisDESENVOLVIMENTO DE INTERFACE WEB MULTIUSUÁRIO PARA SISTEMA DE GERAÇÃO AUTOMÁTICA DE QUADROS DE HORÁRIOS ESCOLARES. Trabalho de Graduação
DESENVOLVIMENTO DE INTERFACE WEB MULTIUSUÁRIO PARA SISTEMA DE GERAÇÃO AUTOMÁTICA DE QUADROS DE HORÁRIOS ESCOLARES Trabalho de Graduação Orientando: Vinicius Stein Dani vsdani@inf.ufsm.br Orientadora: Giliane
Leia maisTUTORIAL DE UTILIZAÇÃO. Rua Maestro Cardim, 354 - cj. 121 CEP 01323-001 - São Paulo - SP (11) 3266-2096
TUTORIAL DE UTILIZAÇÃO Índice Geral Antes de Começar 2 Procedimento de Instalação 3 Exportar dados para o 8 Acesso ao 10 Ordens de Serviço no 11 Solicitações de Serviço no 17 Folhas de Inspeção no 19 Importar
Leia maisVISÃO GERAL DE BANCO DE DADOS
Banco de Dados BD_A007 Visão Geral de Banco de Dados 02 de março de 2005 VISÃO GERAL DE BANCO DE DADOS Relação de siglas utilizadas neste trabalho: ABD: Administrador de Banco de Dados. BD: Banco de Dados.
Leia maisProgramação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL
Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre
Leia maisAULA 16 - Sistema de Arquivos
AULA 16 - Sistema de Arquivos Arquivos podem ser vistos como recipientes que contêm dados ou como um grupo de registros correlatos. Os arquivos armazenam informações que serão utilizadas, em geral, por
Leia maisArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02
ArpPrintServer Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 1 Sumário INTRODUÇÃO... 3 CARACTERÍSTICAS PRINCIPAIS DO SISTEMA... 3 REQUISITOS DE SISTEMA... 4 INSTALAÇÃO
Leia maisIW10. Rev.: 02. Especificações Técnicas
IW10 Rev.: 02 Especificações Técnicas Sumário 1. INTRODUÇÃO... 1 2. COMPOSIÇÃO DO IW10... 2 2.1 Placa Principal... 2 2.2 Módulos de Sensores... 5 3. APLICAÇÕES... 6 3.1 Monitoramento Local... 7 3.2 Monitoramento
Leia maisGestão de Pessoas - 4w
P á g i n a 1 Gestão de Pessoas - 4w Modulo Administração de Pessoal (Rubi) Processo: Férias P á g i n a 2 Sumário 1 Conceito... 3 1.1 Parametrizações no Sistema... 3 1.1.1 - Sindicato... 3 1.1.2 - Situações...
Leia maisTópicos. Atualizações e segurança do sistema. Manutenção Preventiva e Corretiva de Software (utilizando o MS Windows XP)
teste 1 Manutenção Preventiva e Corretiva de Software (utilizando o MS Windows XP) Rafael Fernando Diorio www.diorio.com.br Tópicos - Atualizações e segurança do sistema - Gerenciamento do computador -
Leia maisMemórias Prof. Galvez Gonçalves
Arquitetura e Organização de Computadores 1 s Prof. Galvez Gonçalves Objetivo: Compreender os tipos de memória e como elas são acionadas nos sistemas computacionais modernos. INTRODUÇÃO Nas aulas anteriores
Leia maisCOMO EXPLORAR OS BENEFÍCIOS DOS INDICADORES DE DESEMPENHO NA GESTÃO DE UM CSC. Lara Pessanha e Vanessa Saavedra
COMO EXPLORAR OS BENEFÍCIOS DOS INDICADORES DE DESEMPENHO NA GESTÃO DE UM CSC Lara Pessanha e Vanessa Saavedra A utilização de indicadores de desempenho é uma prática benéfica para todo e qualquer tipo
Leia maisBanco de Dados I 2007. Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli
Banco de Dados I 2007 Módulo V: Indexação em Banco de Dados (Aulas 4) Clodis Boscarioli Agenda: Indexação em SQL; Vantagens e Custo dos Índices; Indexação no PostgreSQL; Dicas Práticas. Índice em SQL Sintaxe:
Leia maisDisciplina de Banco de Dados Introdução
Disciplina de Banco de Dados Introdução Prof. Elisa Maria Pivetta CAFW - UFSM Banco de Dados: Conceitos A empresa JJ. Gomes tem uma lista com mais ou menos 4.000 nomes de clientes bem como seus dados pessoais.
Leia maisCRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO
CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO Antes de criarmos um novo Banco de Dados quero fazer um pequeno parênteses sobre segurança. Você deve ter notado que sempre
Leia maisBalanceamento de Carga
40 4. Balanceamento de Carga Pode-se entender por balanceamento de carga uma política a ser adotada para minimizar tanto a ociosidade de utilização de alguns equipamentos quanto a super utilização de outros,
Leia maisManual Geral do OASIS
Manual Geral do OASIS SISTEMA DE GESTÃO DE DEMANDA, PROJETO E SERVIÇO DE TECNOLOGIA DA INFORMAÇÃO OASIS Introdução Esse manual tem como objetivo auxiliar aos usuários nos procedimentos de execução do sistema
Leia mais3 Classificação. 3.1. Resumo do algoritmo proposto
3 Classificação Este capítulo apresenta primeiramente o algoritmo proposto para a classificação de áudio codificado em MPEG-1 Layer 2 em detalhes. Em seguida, são analisadas as inovações apresentadas.
Leia mais5 Mecanismo de seleção de componentes
Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações
Leia maisProf. Luiz Fernando. Unidade III ADMINISTRAÇÃO DE
Prof. Luiz Fernando Unidade III ADMINISTRAÇÃO DE BANCOS DE DADOS Administração de SGBDs De todo o tipo de pessoal envolvido com desenvolvimento, manutenção, e utilização de bancos de dados há dois tipo
Leia mais