tag:blogger.com,1999:blog-5738872960415708519.post5277085404651179794..comments2024-01-29T06:38:46.574-03:00Comments on Blog do DBA/Instrutor Fábio Prado: Otimizando a performance de aplicações com o uso de stored proceduresFábio Pradohttp://www.blogger.com/profile/05498446367081034213noreply@blogger.comBlogger13125tag:blogger.com,1999:blog-5738872960415708519.post-28779426792975990092019-04-08T11:48:23.053-03:002019-04-08T11:48:23.053-03:00Acredito no seu depoimento, e acho que o problema ...Acredito no seu depoimento, e acho que o problema geral é esse mesmo. Infelizmente isso é como construir um prédio que não suporta remotos (para economizar) ao lado de um vulcão. Se o vulcão entrar em erupção, tudo tremer, e aparecerem rachaduras, a construtora sai remendando e pintando tudo novamente depois! Aí é só rezar para o terremoto não ser muito grande e não derrubar o prédio!Fábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-66825659134659588022019-04-04T14:00:59.135-03:002019-04-04T14:00:59.135-03:00Vim do futuro pra acrescentar algo aqui. O que cos...Vim do futuro pra acrescentar algo aqui. O que costumo ouvir é que pra manter uma equipe capacitada a desenvolver procs com qualidade o custo do profissa é alto demais. Preferem deixa o JPQL (maldito) criar qualquer coisa lá e arriscar fazendo uso de um programador meia boca. Dai o custo vai pro upgrade de server de banco.... Complicado, pois sou especialista em performance de dados e explicar pros clientes que as querys ad-hocs e JPQS da vida são os maiores culpados pela lentidão torna-se repetitivo... sempre escuto essa ladainha.bornatohttps://www.blogger.com/profile/15319610243208892527noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-67428403732955054572014-10-02T08:30:34.203-03:002014-10-02T08:30:34.203-03:00Tiago, a questão das regras de negócio dentro da S...Tiago, a questão das regras de negócio dentro da SP tem vantagens e desvantagens. O que eu gosto de ressaltar é a vantagem do desempenho que isso proporciona dentro de uma transação. <br /><br />Qto à sua 2a. pergunta, sim eu acho mais fácil escrever código em SPs do que em JAVA , Dot Net ou outras linguagens de programação mais avançadas. Por que acho isso? Porque PL/SQL é uma linguaguem muito mais simples!<br /><br />Qto à sua última pergunta, quando vc executa uma transação que tem por exemplo 10 SQLs, a aplicação chama a SP, aguarda a execução de tudo e no final o BD retorna uma mensagem para a aplicação. Quando esses 10 SQLs estão fora da SP, cada SQL faz uma viagem (round trip) na rede. Agora eu lhe pergunto, o que é mais rápido? Vc ir ao supermercado uma única vez, encher um pacote com 10 produtos e voltar para casa ou ir 10 X ao supermercado e trazer 1 produto por vez?<br /><br />[]sFábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-21973809357117635522014-10-01T23:42:50.993-03:002014-10-01T23:42:50.993-03:00Ola fabio,
Li em um debate abordava a questao de ...Ola fabio,<br /><br />Li em um debate abordava a questao de deixar as regras de negocio armazenadas em SP's pode levar a desorganizacao, pois, qualquer desenvolvedor poderia "meter a mao" , entretanto, acho que o DBA possui o poder de restringir acesso a essas SP'S para nao deixar as regras desorganizadas, pensar da minha maneira estaria incorreto? Tambem tenho outra questao a apontar, É mais facil desenvolver regras utilizando SP's ou outros recursos como linguagem de programacao SQL ,java , etc... ? E por que as SP's possuim o poder de diminuir o trafego de rede? Obrigado!Anonymoushttps://www.blogger.com/profile/03044681933474454609noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-90324632120100703892013-01-21T18:53:02.859-02:002013-01-21T18:53:02.859-02:00Bibi,
É ímpossível causar mais lentidão na rede us...Bibi,<br />É ímpossível causar mais lentidão na rede usando SPs ao invés de SQL na aplicação. Quando vc executa uma SP a aplicação faz um único round trip pela rede. Se vc tirar por exemplo, 2 instruções SQL de uma SP e executar elas direto na aplicação, vc terá 2 round trips, ao invés de apenas 1. Quanto mais round trips, maior gargalo e tempo de espera pelos dados na rede.<br /><br />Teoricamente o que pode melhorar quando vc tem um servidor de aplicação e não executa stored procedure é q quando vc executa regras de negócio complexas, vc elimina a sobrecarga do servidor de BD, executando-as diretamente em um servidor de aplicação dedicado. Isso é bonito teoricamente, na prática, sempre vejo ficar mais rápido executando diretamente no BD, pois além de ter menos round trips, o servidor de BD normalmente tem um hardware muito superior ao servidor de aplicação!<br /><br />Quem nunca usou stored procedures discrimina o seu uso pelo fato de não acreditar que isso pode otimizar performance. Pergunte a quem já usou e comparou os 2 cenários! Todos que eu conheço testemunham que com stored procedures vc terá melhor performance. Vc mesma poderá testemunhar isso executando a aplicação que estou compartilhando neste artigo. Eu disponibilizo inclusive o código-fonte para vc ver que não há nenhum truque no ganho de performance usando stored procedure.<br /><br />[]sFábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-81861602618028049132013-01-21T15:46:03.897-02:002013-01-21T15:46:03.897-02:00Boa tarde meus caros.
Corrijam-me se estiver errad...Boa tarde meus caros.<br />Corrijam-me se estiver errada:<br />Ouvi dizer que quando muitos usuários acessam o banco ao mesmo tempo, causa mais lentidão na rede quando é em Store Procedures(pois os comandos rodam no servidor). Agora, se tu coloca o comando sql na aplicação, o comando roda na máquina, e não no servidor, evitando com que cada máquina de cada usuário congestione a rede.<br />É isso mesmo que ocorre?<br />Obrigada.Bibihttps://www.blogger.com/profile/13662686303616431031noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-50067545385347466052012-04-15T10:14:35.388-03:002012-04-15T10:14:35.388-03:00Adriano,
Publiquei em 17/02/2011 um artigo em ...Adriano, <br /> Publiquei em 17/02/2011 um artigo em meu blog, que demonstra como criar tabelas particionadas e a performance delas: http://www.fabioprado.net/2011/02/criando-tabelas-particionadas-para.html.Fábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-15302561534897483922012-04-14T10:57:29.962-03:002012-04-14T10:57:29.962-03:00Obrigado Adriano. Na aplicação que eu desenvolvi p...Obrigado Adriano. Na aplicação que eu desenvolvi para este artigo estou usando bibliotecas da Oracle para fazer acesso nativo.Fábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-55017462962158964502012-04-14T00:19:53.158-03:002012-04-14T00:19:53.158-03:00Outro ponto que o sr poderia abordar é o armazenam...Outro ponto que o sr poderia abordar é o armazenamento de dados em tabelas particionadas, sendo um recurso que veio na versao 8 do oracle, que ajuda ainda mais a aumentar a performance de banco de dados. Onde é possível colocar faixas de dados (semestres/bimestres/mes/anos) em diferentes hds, quando os dados de apenas uma tabela ultrapassam a capacidade fisica e quando se observa uma lentidão em um módulo de sistema, especificamente numa tela q esta deixando a desejar. Falando em performance e particionamento, é possivel colocar os dados e os indices em discos diferentes. Poderia dar o exemplo de performance comparativa da gravação de dados linha a linha com commit, a gravação em bloco com um só commit e a gravação de dados com transaction, verificação de sql erro e hardware erro, com totalização de erros e fechamento com rollback ou commit final em outra matéria. Tudo isso, pode ajudar a melhorar os sistemas desenvolvidos hoje e entregar a informação solicitada em um curto espaço de tempo. (Adriano Boller)Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-25478255233080165662012-04-14T00:18:59.611-03:002012-04-14T00:18:59.611-03:00Parabéns pela matéria. Com certeza, tudo o que é e...Parabéns pela matéria. Com certeza, tudo o que é executado no banco usando pl/sql (functions/s.proc/pkgs) aumenta a velocidade de acesso, e se ainda usar acesso direto ao banco sem o uso de odbcs e sim drivers de acesso nativo o desempenho tende a aumentar ainda mais. (Adriano Boller)Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-51489262100441062282012-03-09T09:53:00.255-03:002012-03-09T09:53:00.255-03:00Olá Christiano,
Desenvolver com SPs é uma boa o...Olá Christiano,<br /><br /> Desenvolver com SPs é uma boa opção para otimizar performance em qq BD. Já desenvolvi aplicações c/ SPs em MySQL, SQL Server e Oracle. Em todos eles as SPs podem otimizar performance. No Oracle 11G fica melhor ainda devido ao recurso de cache de SQL/PLSQL que existe nesta versão do BD e q vc mesmo comentou! <br /><br />A discussão, qdo o pessoal opta por não usar SPs gira mais em torno da arquitetura, mas se vc pesquisar pessoas q já trabalharam com SPs, verá q estes sempre afirmam que a performance fica melhor. Para sair da teoria e comprovar a melhor performance, criei a aplicação deste artigo para q qq um possa ver o código e testar.<br /><br />[]sFábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-74022872978658108872012-03-09T07:26:56.020-03:002012-03-09T07:26:56.020-03:00Fábio, acredito que a escolha entre a lógica estar...Fábio, acredito que a escolha entre a lógica estar na aplicação ou no BD deva levar em conta qual o SGDB utilizado. Nâo conheço muitos, mas como o Oracle armazena na área cache de SQL e a partir do 11g no cache PLSQL o código, o resultado e metadados dos objetos envolvidos, ganhamos muito em performance, já que a análise por parse não precisa ser executada sempre que a SP for executada. É uma boa disccussão, e os recursos do BD escolhido também são fundamentais na decisão. Abraços.Christiano Rioshttp://christianodba.wordpress.com/noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-10846203821537982812011-10-07T15:05:07.458-03:002011-10-07T15:05:07.458-03:00Olá Fabio !
Bacana o artigo, parabéns !
Att,
Sa...Olá Fabio !<br /><br />Bacana o artigo, parabéns !<br /><br />Att,<br /><br />Sakamoto<br /><br />MyTracelog - Registro de um DBA<br />http://mytracelog.blogspot.comSakamotohttps://www.blogger.com/profile/08459617872675434487noreply@blogger.com