{"id":790,"date":"2016-06-19T21:53:54","date_gmt":"2016-06-20T00:53:54","guid":{"rendered":"http:\/\/dbtimewizard.com.br\/blog\/?p=790"},"modified":"2019-11-11T18:55:33","modified_gmt":"2019-11-11T21:55:33","slug":"qual-e-o-segredo-da-alta-performace-do-exadata","status":"publish","type":"post","link":"http:\/\/dbtimewizard.com.br\/blog\/qual-e-o-segredo-da-alta-performace-do-exadata\/","title":{"rendered":"Qual \u00e9 o segredo da alta performace do Exadata?"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Com o crescimento dos neg\u00f3cios de uma empresa e a automatiza\u00e7\u00e3o de seus processos, aumenta o volume de dados que precisam ser armazenados, esse aumento na quantidade de dados acaba muitas vezes prejudicando o tempo de resposta das aplica\u00e7\u00f5es. Se a sua empresa possui Banco de dados com tamanhos em Terabytes, os usu\u00e1rios das aplica\u00e7\u00f5es reclamam de performance, voc\u00ea j\u00e1 realizou um bom trabalho de tuning na sua plataforma e o problema de performance tem impacto nos neg\u00f3cios da empresa, voc\u00ea deveria considerar a possibilidade de utilizar a solu\u00e7\u00e3o Exadata.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Neste artigo vamos falar um pouco sobre a arquitetura do Exadata e porque sua performance \u00e9 muito superior \u00e0s arquiteturas tradicionais.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Arquiteturas Tradicionais<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Numa arquitetura tradicional normalmente instalamos o Banco de dados Oracle (Inst\u00e2ncias L\u00f3gicas) em servidores com sistema operacional Unix-like ou Microsoft e os dados s\u00e3o armazenados em servidores Storage. Nessa arquitetura os dados solicitados por uma consulta precisam ser transferidos do Storage para os servidores de banco, onde s\u00e3o\u00a0tratados pelas inst\u00e2ncias para gerar o resultado final da consulta, quando essa consulta precisa acessar tabelas com grandes volumes de dados a\u00a0transfer\u00eancia de dados torna-se um gargalo, pois ela \u00e9 feita pela rede.<\/span><\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/dbtimewizard.com.br\/blog\/wp-content\/uploads\/2016\/06\/gargalo.bmp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-794\" src=\"http:\/\/dbtimewizard.com.br\/blog\/wp-content\/uploads\/2016\/06\/gargalo.bmp\" alt=\"gargalo de transferencia de dados\" width=\"1132\" height=\"488\" \/><\/a><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Arquitetura Exadata<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">A arquitetura do Exadata foi concebida para resolver esse problema de gargalo de transfer\u00eancia de dados do Storage para o servidor de Banco, para atingir esse objetivo a Oracle utilizou duas estrat\u00e9gias:<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\"><strong>1.<\/strong> Diminuir a quantidade de dados que s\u00e3o transferidos do Storage para o Banco.<\/span><br \/>\n<span style=\"font-size: 12pt;\"><strong>2.<\/strong> Aumentar a velocidade de transfer\u00eancia de dados entre Storage e o Banco.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Para diminuir a quantidade de dados transferidos do Storage para o Banco foi necess\u00e1rio agregar algumas fun\u00e7\u00f5es do banco de dados ao Storage, com isso uma parte das tarefas realizadas durante a execu\u00e7\u00e3o da instru\u00e7\u00e3o SQL passaram a ser executadas no servidor Storage por processos &#8220;Cell offloading&#8221;. Na gera\u00e7\u00e3o X5-2 os Servidores Storage do Exadata realizam 7 fun\u00e7\u00f5es que numa arquitetura tradicional seriam realizadas pelo servidor de banco de dados, as duas fun\u00e7\u00f5es que mais contribuem para a redu\u00e7\u00e3o da quantidade de dados que s\u00e3o transferidos do Storage para o banco de dados s\u00e3o:<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\"><strong>1.<\/strong> <strong>Column Projection<\/strong>: O servidor Storage envia para o banco somente as colunas que fazem parte da lista da clausula &#8220;SELECT&#8221;, ou seja, se a tabela acessada possui 50 colunas e a consulta tem somente 5\u00a0colunas na clausula &#8220;SELECT&#8221;, somente essas 5 colunas ser\u00e3o transferidas do Storage para o Banco.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\"><strong>2.<\/strong> <strong>Predicate Filtering<\/strong>: O servidor Storage restringe\u00a0os registros que ser\u00e3o enviados ao servidor de banco baseado nos filtros da cla\u00fasula WHERE da instru\u00e7\u00e3o SQL, numa arquitetura tradicional os registros que n\u00e3o s\u00e3o filtrados por um \u00edndice s\u00e3o enviados para o Buffer Cache onde s\u00e3o filtrados pelo banco.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Para aumentar a velocidade de transfer\u00eancia de dados entre o Storage e o Banco, a arquitetura Exadata disp\u00f5em de 3 recursos:<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\"><strong>1.<\/strong> Uma <strong>rede InfiniBand<\/strong> que prove uma capacidade de transfer\u00eancia de dados do Storage para o Banco de 40 Gb\/Sec, numa arquitetura tradicional a melhor op\u00e7\u00e3o dispon\u00edvel \u00e9 uma rede Fiber Channel que prove uma capacidade de transfer\u00eancia de 16 Gb\/sec.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\"><strong>2.<\/strong> Os servidores de Storage disp\u00f5em de \u00e1reas de <strong>mem\u00f3ria flash<\/strong> chamadas &#8216;Cell Flash Cache&#8217; que diminuem a necessidade de acesso mec\u00e2nico aos discos aumentando a velocidade de acesso aos dados.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\"><strong>3.<\/strong> A fun\u00e7\u00e3o <strong>Storage Index<\/strong> tambem contribui para o aumento da velocidade de transfer\u00eancia dos dados, pois diminui o numero de blocos f\u00edsicos acessados\u00a0para leitura dos dados no Storage.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Smart Scan<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">A arquitetura de Hardware do Exadata foi concebida para prover alta disponibilidade e alta performance, mas na parte de performance o destaque n\u00e3o esta no Hardware e sim no Software, as duas fun\u00e7\u00f5es mencionadas acima que visam a redu\u00e7\u00e3o do volume de dados transferidos do Storage para o Banco de dados s\u00e3o tamb\u00e9m conhecidas como &#8220;Smart Scan&#8221;, elas s\u00e3o as respons\u00e1veis pelo fant\u00e1stico desempenho de performance do Exadata. Para demostrar isso vamos simular uma consulta no Exadata utilizando somente os recursos de Hardware e em seguida vamos executar a mesma consulta utilizando tambem o &#8220;Smart Scan&#8221;.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Para realizar esta simula\u00e7\u00e3o vamos criar uma tabela de 5 GB de dados e n\u00e3o vamos utilizar \u00edndice:<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span> FROM V<span class=\"re0\">$VERSION<\/span> where rownum <span class=\"sy0\">&lt;<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nBANNER<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------<\/span><br \/>\nOracle Database 11g Enterprise Edition Release 11<span class=\"sy0\">.<\/span>2<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>4<span class=\"sy0\">.<\/span>0 <span class=\"sy0\">-<\/span> 64bit Production<br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> create table dbtw01 <span class=\"kw1\">as<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; select <span class=\"st_h\">'DBTimeWizard - Performance and Tuning'<\/span> <span class=\"kw1\">as<\/span> produto<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mod<span class=\"br0\">&#40;<\/span>rownum<span class=\"sy0\">,<\/span><span class=\"nu0\">5<\/span><span class=\"br0\">&#41;<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"kw1\">as<\/span> codigo<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mod<span class=\"br0\">&#40;<\/span>rownum<span class=\"sy0\">,<\/span><span class=\"nu0\">1000<\/span><span class=\"br0\">&#41;<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">as<\/span> cliente_id <span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">5000<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">as<\/span> total_vendas<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;trunc<span class=\"br0\">&#40;<\/span>sysdate <span class=\"sy0\">-<\/span> <span class=\"nu0\">9999<\/span> <span class=\"sy0\">+<\/span> mod<span class=\"br0\">&#40;<\/span>rownum<span class=\"sy0\">,<\/span><span class=\"nu0\">10000<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">as<\/span> data_venda<br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp; &nbsp; &nbsp; from dual connect by level<span class=\"sy0\">&lt;=<\/span><span class=\"nu19\">2e7<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTable created<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> alter table dbtw01 nologging<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTable altered<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> insert <span class=\"coMULTI\">\/*+ append *\/<\/span> into dbtw01 select <span class=\"sy0\">*<\/span> from dbtw01<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">20000000<\/span> rows created<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> commit<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCommit complete<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> insert <span class=\"coMULTI\">\/*+ append *\/<\/span> into dbtw01 select <span class=\"sy0\">*<\/span> from dbtw01<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">40000000<\/span> rows created<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> commit<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCommit complete<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> select <a href=\"http:\/\/www.php.net\/round\"><span class=\"kw3\">round<\/span><\/a><span class=\"br0\">&#40;<\/span>bytes<span class=\"sy0\">\/<\/span><span class=\"nu0\">1024<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">1024<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">1024<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">as<\/span> <span class=\"st0\">&quot;Tamanho GB&quot;<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;from user_segments<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; where segment_name <span class=\"sy0\">=<\/span> <span class=\"st_h\">'DBTW01'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTamanho GB<br \/>\n<span class=\"sy0\">----------<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu19\">5.1<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname<span class=\"sy0\">=&gt;<\/span> USER<span class=\"sy0\">,<\/span> tabname<span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'DBTW01'<\/span><span class=\"sy0\">,<\/span> cascade<span class=\"sy0\">=&gt;<\/span> <span class=\"kw4\">true<\/span><span class=\"sy0\">,<\/span> method_opt<span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'FOR ALL COLUMNS SIZE SKEWONLY'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPL<span class=\"sy0\">\/<\/span>SQL procedure successfully completed<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> alter table dbtw01 logging<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTable altered<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> select <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">count<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> from DBTW01<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">COUNT<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"sy0\">----------<\/span><br \/>\n&nbsp; <span class=\"nu0\">80000000<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Simula\u00e7\u00e3o sem Smart Scan<\/span><\/h3>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Para desativar o Smart Scan vamos utilizar o par\u00e2metro &#8220;cell_offload_processing=false&#8221;, e para garantir que o resultado da consulta n\u00e3o seja afetado por dados armazenados no buffer do banco de dados vamos executar um comando para limpar o Buffer Cache.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/>96<br \/>97<br \/>98<br \/>99<br \/>100<br \/>101<br \/>102<br \/>103<br \/>104<br \/>105<br \/>106<br \/>107<br \/>108<br \/>109<br \/>110<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> alter <a href=\"http:\/\/www.php.net\/system\"><span class=\"kw3\">system<\/span><\/a> <a href=\"http:\/\/www.php.net\/flush\"><span class=\"kw3\">flush<\/span><\/a> buffer_cache<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<a href=\"http:\/\/www.php.net\/system\"><span class=\"kw3\">System<\/span><\/a> altered<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> alter session set cell_offload_processing<span class=\"sy0\">=<\/span><span class=\"kw4\">false<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSession altered<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> ALTER SESSION SET statistics_level<span class=\"sy0\">=<\/span>ALL<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSession altered<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> select <span class=\"coMULTI\">\/* NO_SMART_SCAN *\/<\/span> <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">count<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#41;<\/span> from DBTW01 where codigo<span class=\"sy0\">=<\/span><span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">COUNT<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"sy0\">----------<\/span><br \/>\n&nbsp; <span class=\"nu0\">16000000<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> row selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column sql_id new_value m_sql_id<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column child_number new_value m_child_no<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT sql_id<span class=\"sy0\">,<\/span> child_number<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; FROM v<span class=\"re0\">$sql<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp;WHERE sql_text LIKE <span class=\"st_h\">'%NO_SMART_SCAN%'<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp;AND sql_text NOT LIKE <span class=\"st_h\">'%v$sql%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CHILD_NUMBER<br \/>\n<span class=\"sy0\">----------------<\/span> <span class=\"sy0\">------------<\/span><br \/>\nf60zgw6916cum &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> row selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSQL_ID &nbsp;f60zgw6916cum<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nselect <span class=\"coMULTI\">\/* NO_SMART_SCAN *\/<\/span> <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">count<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#41;<\/span> from DBTW01 where codigo<span class=\"sy0\">=:<\/span><span class=\"st0\">&quot;SYS_B_0&quot;<\/span><br \/>\n<br \/>\nPlan <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a> value<span class=\"sy0\">:<\/span> <span class=\"nu0\">2690647991<\/span><br \/>\n<br \/>\n<span class=\"sy0\">----------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> Id &nbsp;<span class=\"sy0\">|<\/span> Operation &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> Name &nbsp; <span class=\"sy0\">|<\/span> Starts <span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span>E<span class=\"sy0\">-<\/span>Bytes<span class=\"sy0\">|<\/span> Cost <span class=\"br0\">&#40;<\/span><span class=\"sy0\">%<\/span>CPU<span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> A<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span> &nbsp; A<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> Buffers <span class=\"sy0\">|<\/span> Reads &nbsp;<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">----------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">0<\/span> <span class=\"sy0\">|<\/span> SELECT STATEMENT &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; 182K<span class=\"br0\">&#40;<\/span><span class=\"nu0\">100<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">14.80<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; 671K<span class=\"sy0\">|<\/span> &nbsp; &nbsp;671K<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/sort\"><span class=\"kw3\">SORT<\/span><\/a> <a href=\"http:\/\/www.php.net\/aggregate\"><span class=\"kw3\">AGGREGATE<\/span><\/a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">3<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">14.80<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; 671K<span class=\"sy0\">|<\/span> &nbsp; &nbsp;671K<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; TABLE ACCESS STORAGE FULL<span class=\"sy0\">|<\/span> DBTW01 <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; 16M<span class=\"sy0\">|<\/span> &nbsp; &nbsp;46M<span class=\"sy0\">|<\/span> &nbsp; 182K &nbsp;<span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu0\">36<\/span><span class=\"sy0\">:<\/span><span class=\"nu0\">35<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; 16M<span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">14.25<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; 671K<span class=\"sy0\">|<\/span> &nbsp; &nbsp;671K<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">----------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\nPredicate Information <span class=\"br0\">&#40;<\/span>identified by operation id<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------<\/span><br \/>\n<br \/>\n&nbsp; &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">-<\/span> filter<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;CODIGO&quot;<\/span><span class=\"sy0\">=:<\/span>SYS_B_0<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">19<\/span> rows selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> col SQL_TEXT <span class=\"kw1\">for<\/span> a80<span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> select SQL_ID<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp; &nbsp; IO_CELL_OFFLOAD_ELIGIBLE_BYTES eligible<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; IO_INTERCONNECT_BYTES actual<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; sql_text<br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp;from v<span class=\"re0\">$sql<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; where SQL_ID in <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ELIGIBLE &nbsp; &nbsp; ACTUAL SQL_TEXT<br \/>\n<span class=\"sy0\">----------------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">--------------------------------------------------------------------------------<\/span><br \/>\nf60zgw6916cum &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span> <span class=\"nu0\">5502640128<\/span> select <span class=\"coMULTI\">\/* NO_SMART_SCAN *\/<\/span> <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">count<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#41;<\/span> from DBTW01 where codigo<span class=\"sy0\">=:<\/span><span class=\"st0\">&quot;SYS_B_0&quot;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> row selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> select name<span class=\"sy0\">,<\/span> value<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;from v<span class=\"re0\">$mystat<\/span> s<span class=\"sy0\">,<\/span> v<span class=\"re0\">$statname<\/span> n<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; where s<span class=\"sy0\">.<\/span>statistic<span class=\"co2\"># = n.statistic#<br \/>\n<\/span> &nbsp;<span class=\"nu0\">4<\/span> &nbsp; &nbsp; and name like <span class=\"st_h\">'%storage index%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nNAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;VALUE<br \/>\n<span class=\"sy0\">----------------------------------------------------------------<\/span> <span class=\"sy0\">----------<\/span><br \/>\ncell physical IO bytes saved by storage index &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> row selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> select <a href=\"http:\/\/www.php.net\/round\"><span class=\"kw3\">round<\/span><\/a><span class=\"br0\">&#40;<\/span>bytes<span class=\"sy0\">\/<\/span><span class=\"nu0\">1024<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">1024<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">1024<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> <span class=\"st0\">&quot;Tamanho GB&quot;<\/span> from user_segments where segment_name <span class=\"sy0\">=<\/span> <span class=\"st_h\">'DBTW01'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTamanho GB<br \/>\n<span class=\"sy0\">----------<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu19\">5.1<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> row selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> select <a href=\"http:\/\/www.php.net\/round\"><span class=\"kw3\">round<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">671<\/span><span class=\"sy0\">*<\/span><span class=\"nu0\">1024<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">*<\/span><span class=\"nu0\">8124<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">1024<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">1024<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">1024<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> <span class=\"st0\">&quot;Buffers GB&quot;<\/span> from dual<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nBuffers GB<br \/>\n<span class=\"sy0\">----------<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu19\">5.2<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> row selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Simula\u00e7\u00e3o com Smart Scan<\/span><\/h3>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Agora vamos ativar o Smart Scan utilizando o par\u00e2metro &#8220;cell_offload_processing=true&#8221;, vamos limpar o Buffer Cache do banco e executar a mesma consulta novamente.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> alter <a href=\"http:\/\/www.php.net\/system\"><span class=\"kw3\">system<\/span><\/a> <a href=\"http:\/\/www.php.net\/flush\"><span class=\"kw3\">flush<\/span><\/a> buffer_cache<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<a href=\"http:\/\/www.php.net\/system\"><span class=\"kw3\">System<\/span><\/a> altered<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> alter session set cell_offload_processing<span class=\"sy0\">=<\/span><span class=\"kw4\">true<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSession altered<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> ALTER SESSION SET statistics_level<span class=\"sy0\">=<\/span>ALL<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSession altered<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> select <span class=\"coMULTI\">\/* WITH_SMART_SCAN *\/<\/span> <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">count<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#41;<\/span> from DBTW01 where codigo<span class=\"sy0\">=<\/span><span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">COUNT<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"sy0\">----------<\/span><br \/>\n&nbsp; <span class=\"nu0\">16000000<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> row selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column sql_id new_value m_sql_id<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column child_number new_value m_child_no<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT sql_id<span class=\"sy0\">,<\/span> child_number<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; FROM v<span class=\"re0\">$sql<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp;WHERE sql_text LIKE <span class=\"st_h\">'%WITH_SMART_SCAN%'<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp;AND sql_text NOT LIKE <span class=\"st_h\">'%v$sql%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CHILD_NUMBER<br \/>\n<span class=\"sy0\">----------------<\/span> <span class=\"sy0\">------------<\/span><br \/>\n5tz9g9gga7asa &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> row selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSQL_ID &nbsp;5tz9g9gga7asa<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nselect <span class=\"coMULTI\">\/* WITH_SMART_SCAN *\/<\/span> <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">count<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#41;<\/span> from DBTW01 where<br \/>\ncodigo<span class=\"sy0\">=:<\/span><span class=\"st0\">&quot;SYS_B_0&quot;<\/span><br \/>\n<br \/>\nPlan <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a> value<span class=\"sy0\">:<\/span> <span class=\"nu0\">2690647991<\/span><br \/>\n<br \/>\n<span class=\"sy0\">----------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> Id &nbsp;<span class=\"sy0\">|<\/span> Operation &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> Name &nbsp; <span class=\"sy0\">|<\/span> Starts <span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span>E<span class=\"sy0\">-<\/span>Bytes<span class=\"sy0\">|<\/span> Cost <span class=\"br0\">&#40;<\/span><span class=\"sy0\">%<\/span>CPU<span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> A<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span> &nbsp; A<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> Buffers <span class=\"sy0\">|<\/span> Reads &nbsp;<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">----------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">0<\/span> <span class=\"sy0\">|<\/span> SELECT STATEMENT &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; 182K<span class=\"br0\">&#40;<\/span><span class=\"nu0\">100<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">01.48<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; 671K<span class=\"sy0\">|<\/span> &nbsp; &nbsp;671K<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/sort\"><span class=\"kw3\">SORT<\/span><\/a> <a href=\"http:\/\/www.php.net\/aggregate\"><span class=\"kw3\">AGGREGATE<\/span><\/a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">3<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">01.48<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; 671K<span class=\"sy0\">|<\/span> &nbsp; &nbsp;671K<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; TABLE ACCESS STORAGE FULL<span class=\"sy0\">|<\/span> DBTW01 <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; 16M<span class=\"sy0\">|<\/span> &nbsp; &nbsp;46M<span class=\"sy0\">|<\/span> &nbsp; 182K &nbsp;<span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu0\">36<\/span><span class=\"sy0\">:<\/span><span class=\"nu0\">35<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; 16M<span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">00.95<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; 671K<span class=\"sy0\">|<\/span> &nbsp; &nbsp;671K<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">----------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\nPredicate Information <span class=\"br0\">&#40;<\/span>identified by operation id<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------<\/span><br \/>\n<br \/>\n&nbsp; &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">-<\/span> storage<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;CODIGO&quot;<\/span><span class=\"sy0\">=:<\/span>SYS_B_0<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;filter<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;CODIGO&quot;<\/span><span class=\"sy0\">=:<\/span>SYS_B_0<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">21<\/span> rows selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> select SQL_ID<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp; &nbsp; IO_CELL_OFFLOAD_ELIGIBLE_BYTES eligible<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; IO_INTERCONNECT_BYTES actual<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">100<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#40;<\/span>IO_CELL_OFFLOAD_ELIGIBLE_BYTES<span class=\"sy0\">-<\/span>IO_INTERCONNECT_BYTES<span class=\"br0\">&#41;<\/span><span class=\"sy0\">\/<\/span>IO_CELL_OFFLOAD_ELIGIBLE_BYTES <span class=\"st0\">&quot;IO_SAVED_%&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; sql_text<br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp;from v<span class=\"re0\">$sql<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp; where SQL_ID in <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ELIGIBLE &nbsp; &nbsp; ACTUAL IO_SAVED_<span class=\"sy0\">%<\/span> SQL_TEXT<br \/>\n<span class=\"sy0\">----------------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">--------------------------------------------------------------------------------<\/span><br \/>\n5tz9g9gga7asa &nbsp; &nbsp;<span class=\"nu0\">5502566400<\/span> &nbsp;<span class=\"nu0\">191218504<\/span> <span class=\"nu19\">96.5249215<\/span> select <span class=\"coMULTI\">\/* WITH_SMART_SCAN *\/<\/span> <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">count<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#41;<\/span> from DBTW01 where codigo<span class=\"sy0\">=:<\/span><span class=\"st0\">&quot;SYS_B_0&quot;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> row selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> select name<span class=\"sy0\">,<\/span> value<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;from v<span class=\"re0\">$mystat<\/span> s<span class=\"sy0\">,<\/span> v<span class=\"re0\">$statname<\/span> n<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; where s<span class=\"sy0\">.<\/span>statistic<span class=\"co2\"># = n.statistic#<br \/>\n<\/span> &nbsp;<span class=\"nu0\">4<\/span> &nbsp; &nbsp; and name like <span class=\"st_h\">'%storage index%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nNAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;VALUE<br \/>\n<span class=\"sy0\">----------------------------------------------------------------<\/span> <span class=\"sy0\">----------<\/span><br \/>\ncell physical IO bytes saved by storage index &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> row selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Nesta segunda execu\u00e7\u00e3o utilizando o Smart Scan podemos observar duas mudan\u00e7as no plano de execu\u00e7\u00e3o:<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">1. O tempo de dura\u00e7\u00e3o da consulta caiu de 14,8 segundos para 1,5 segundos.<\/span><br \/>\n<span style=\"font-size: 12pt;\">2. Na se\u00e7\u00e3o &#8220;Predicate Information&#8221; aparece a informa\u00e7\u00e3o de que o filtro da cla\u00fasula WHERE foi aplicado a n\u00edvel de Storage.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Conclus\u00e3o<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">A alta performace do Exadata se deve ao fato de que todos os componentes de Hardware e Software foram desenhados para trabalhar juntos em perfeita sintonia, isso s\u00f3 foi poss\u00edvel pois todos os componentes da arquitetura Exadata pertencem ao mesmo fornecedor. Nessa arquitetura o componente mais importante na melhoria da performance \u00e9 o Software Storage Cell que permitiu a execu\u00e7\u00e3o de algumas fun\u00e7\u00f5es do banco direto no servidor Storage eliminando muito trabalho desnecess\u00e1rio.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Refer\u00eancias<\/span><\/h2>\n<p><span style=\"font-size: 12pt;\"><strong><a href=\"http:\/\/www.oracle.com\/technetwork\/database\/exadata\/exadata-technical-whitepaper-134575.pdf\" target=\"_blank\">http:\/\/www.oracle.com\/technetwork\/database\/exadata\/exadata-technical-whitepaper-134575.pdf<\/a><\/strong><\/span><\/p>\n<p>&nbsp;<br \/>\n&nbsp;<br \/>\n<a href=\"http:\/\/dbtimewizard.com.br\/treinamento\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1255\" src=\"http:\/\/dbtimewizard.com.br\/blog\/wp-content\/uploads\/2018\/10\/promo_cur02.jpg\" alt=\"Promo-D75L\" width=\"330\" height=\"242\" \/><\/a><\/p>\n<p><a href=\"https:\/\/youtu.be\/l6OphhTle9I\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1215\" src=\"http:\/\/dbtimewizard.com.br\/wp-content\/uploads\/2018\/01\/video-02-300x168.jpg\" alt=\"video-02\" width=\"330\" height=\"242\" \/><\/a><br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Com o crescimento dos neg\u00f3cios de uma empresa e a automatiza\u00e7\u00e3o de seus processos, aumenta o volume de dados que precisam ser armazenados, esse aumento na quantidade de dados acaba muitas vezes prejudicando o tempo de resposta das aplica\u00e7\u00f5es. Se a sua empresa possui Banco de dados com tamanhos em Terabytes, os usu\u00e1rios das aplica\u00e7\u00f5es reclamam de performance, voc\u00ea j\u00e1<\/p>\n","protected":false},"author":2,"featured_media":791,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[142],"tags":[150,146,40,143,148,147,145,144,149],"class_list":["post-790","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-exadata","tag-alta-performace","tag-cell_offload_processing","tag-column-projection","tag-exadata","tag-infiniband","tag-predicate-filtering","tag-smart-scan","tag-storage-cell","tag-storage-index"],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/790","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/comments?post=790"}],"version-history":[{"count":18,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/790\/revisions"}],"predecessor-version":[{"id":2093,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/790\/revisions\/2093"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media\/791"}],"wp:attachment":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media?parent=790"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/categories?post=790"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/tags?post=790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}