Scriptcase, banco de dados e otimização de performance. Postem suas experiências

Não sabe mais onde otimizar seus apps para que entrega de conteúdo seja rápida?
O google tem uma proposta para você:
https://developers.google.com/speed/pagespeed/module/
https://www.modpagespeed.com/
https://developers.google.com/speed/
The PageSpeed modules are open-source server modules that optimize your site automatically.

É um módulo para os servidores web Apache e Nginx que tem como objetivo melhorar a velocidade de carregamento das páginas.
Resumidamente o mod_pagespeed lê os arquivos que o servidor envia para o navegador do cliente e aplica uma série de boas práticas para agilizar o processo. Mais uma vez aconselho colocar somente no Scriptcase produção.
Mas antes teste bem com sua aplicação. Não me culpe depois se colcoar direto sem testar e gerar resultado imprevisivéis.

Dica do dia:
PHP-FPM seja em conjunto com Apache ou Nginx deixará seus projetos com acesso melhor .
Mas leve em consideração que Nginx + php-fpm podem requerer mais núcleos de CPU do que o conjunto Apache + php-fpm, quando o acesso simultâneo for alto.
Também observe que a conexão php-fpm via SOCKET é muito mais rápida que via TCP/IP.
O detalhe é que para muitos acessos simultâneos começará a dar problema.
Logo, se o acesso for alto opte diretamente por php-fpm via TCP/IP.

Bom dia.

O primeiro link está quebrado. Alguém sabe como posso encontrar ele? Meu scriptcase está lento, e quero fazer o procedimento para desfragmentação.

O arquivo de banco de dados está em:

C:\Program Files (x86)\NetMake\v9\wwwroot\scriptcase\devel\conf\scriptcase

Att,

André.

Se o banco for sqlite faça um cópia dele para um lugar seguro.
Ninguém pode estar acessando o scriptcase durante a cópia.
Depois instale o https://sqlitestudio.pl/index.rvt
A base é esta: nm_scriptcase.db
Então use o vacuum

Se deu certo e for isto o seu scriptcase ficará mais rápido.
Se der algum erro volte a cópia da sua base.

PS: não me responsabilizo por perdas, principalmente se não fez backup antes do procedimento.
@HenriqueB
A não resolução dos links no fórum trás este incoveniente. Ter que descobrir todas as soluções de novo. Se pelo menos pudessemos editar os links antigos.

1 Curtida

Obrigado Alexandre, estou usando MySQL. Existe ferramenta nele que faça o mesmo?

Att.

André.

Sim.
Neste mesmo post:

Hoje resolvei fazer um benchmark com uma máquina velha para ver em que banco gratuito terei melhor performance com o Scriptcase.
Instalei o Debian 9 com Postgresql 11, MariaDB 10.3 e Fireird 3.0.
Não fiz otimização nenhuma nos SGDB´s. Estão com a instalação padrão.
Com o gerador de dados do Dbeaver me conectei aos três SGDB e fiz um insert de 50000 registros.
Segue resultado:

Mariadb myisam
Old data isn’t removed.Inserting mock data into the “teste”.
Rows updated: 50000
Duration: 4220ms -> 4,22 segundos

Postgresql
Old data isn’t removed.Inserting mock data into the “teste”.
Rows updated: 50000
Duration: 16965ms -> 16,965 segundos

Firebird
Old data isn’t removed.Inserting mock data into the “TESTE”.
Rows updated: 50000
Duration: 94374ms -> 1,5729 minutos

Mariadb innodb
Old data isn’t removed.Inserting mock data into the “teste”.
Rows updated: 50000
Duration: 2918181ms -> 48,63635 minutos

Mais tarde irei ver o tempo gasto para select, update e delete dos 50000 registros.
PS: Este teste prova que MariaDB/MySQL com InnoDB somente é bom para Select.

2 Curtidas

Ale, testou MDB com Aria?

2 Curtidas

Testa com SQLITE e MariaDB com ARIA eu uso muito os 2.

O Firebird o pessoal das aplicações comerciais que trabalho em conjunto abandonou e estão usando
o MongoDB é um banco muito rápido para gerar relatórios, sped, etc.

1 Curtida

Vou fazer o teste com o MariaDB Aria e depois com sqlite.
Note que o Aria permite duas situações ao criar suas tabelas.
Do Manual:
TRANSACTIONAL= 0 | 1 : Not set by default, if set to 1 , tables will be transactional, meaning all changes are logged to a transaction log, and synced at the end of the statement. This will marginally slow down writes and updates, but makes the table crash-proof, so that if the server dies before the statement ends, all changes will roll back to the state at the beginning of the statement. This also needs up to 6 bytes more for each row and key to store the transaction id (to allow concurrent insert’s and selects). TRANSACTIONAL=1 is not supported for partitioned tables. If left unset, tables may still be transactional (see below).

Logo no Aria com transational = 1 espero um tempo próximo do innodb.

1 Curtida

@InfinitusWeb @Jailton

MariaDB Aria com transações desabilitadas
Old data isn’t removed.Inserting mock data into the “teste1”.
Rows updated: 50000
Duration: 5292ms -> 5,292 segundos -> como o Aria ainda esta no início de vida espero melhoras na versão 2.0. O Aria veio para substituir o MyISAM com as transações desabilitadas. Mas no nosso teste ficou atrás do MyISAM por poucos segundos.

MariaDB Aria com transações habiliadas
Old data isn’t removed.Inserting mock data into the “teste1”.
Rows updated: 50000
Duration: 2385196ms -> 39,75326667 minutos -> Aqui vemos um tempo melhor em relação ao Innodb, mas também esperamos modificações que tornem este engine mais rápido quando sair a versão 2.0. Para quem pretende substituir o innodb por Aria com transações habilitadas 10 segundos podem fazer diferença na percepção do cliente?

Firebird
Select * from tabela
50000 row(s) fetched - 16ms (+69ms)
delete from
1 row(s) fetched - 3.27s

Postgresql Select * from tabela
50000 row(s) fetched - 263ms (+232ms)
delete from
1 row(s) fetched - 586ms

MariaDB Aria Transacional habilitado Select * from tabela
50000 row(s) fetched - 216ms (+132ms)
delete from
1 row(s) fetched - 54ms

MariaDB Aria transacional desabilitado Select * from tabela
50000 row(s) fetched - 200ms (+38ms)
delete from
1 row(s) fetched - 16ms

MariaDB Myisam
MariaDB MyIsam Select * from tabela
50000 row(s) fetched - 200ms (+54ms)
delete from
1 row(s) fetched - 0ms

MariaDB Innodb selec * from tabela
50000 row(s) fetched - 216ms (+47ms)
delete from
1 row(s) fetched - 417ms

Não fiz com sqlite porque minha máquina teste não tem ambiente gráfico.
Usei o dbeaver para fazer a operações via rede e como o sqlite pede acesso a database…
Mesmo assim quando fiz em minha máquina local e vi que ia demorar demais eu desisti.
Lembro que o teste foi uma curiosidade, feito sem uma metodologia específica e somente com uma range de 50000 linhas.
Para formar opinião na escolha de um SGDB façam seus próprios testes.

2 Curtidas

Se tratando de transações no banco de dados 1 milésimo de segundo faz diferença.

Mas não aconselho substituir o innodb por ária transacional, mas sim substituir o myisam por Aria não transacional.

2 Curtidas

Principalmente porque o Aria Ainda esta em desenvolvimento. Embora muita coisa tenha sido feita na versão 1.5. As melhorias mesmo somente na 2.0. Recomendo o não transacional tambêm

3 Curtidas

A partir de hoje você também pode encontrar este tópico em: https://forum.simaoebuhler.com.br/index.php/topic,8.msg8.html#msg8
Iremos atualizar os links quebrados em breve no: https://forum.simaoebuhler.com.br/index.php/topic,8.msg8.html#msg8

1 Curtida

Muito boa essas dicas !!

1 Curtida