Saiba como você pode de forma simples aumentar o desempenho de sua loja Opencart com alguns pequenos ajustes no banco de dados.
Oi pessoal tudo bom? Hoje é terça-feira, dia de colocar a mão na massa, ou melhor, no código aqui no blog e como ultimamente tenho falado bastante do Opencart, hoje vou continuar no assunto, mas antes leia alguns dos posts que já fiz sobre a plataforma.
- Tags x Meta-tags no Opencart em 3 minutos!
- 4 plugins para Opencart indispensáveis!
- 5 coisas que você não sabia sobre o Opencart
O problema com o banco de dados do Opencart
Nesse período de mais de dois anos que venho trabalhando diariamente com o Opencart, consegui conhecer algumas de suas vantagens e desvantagens e posso dizer com tranquilidade que um dos maiores problemas da plataforma esta em seu banco de dados, porém esse problema pode ser minimizado aplicando algumas pequenas alterações no banco.
Vamos a elas?
Índices, sim eles existem
Por incrível que pareça o pessoal que desenvolveu o Opencart não teve muita preocupação com a criação de índices a grande maioria das tabelas possui apenas um único em indice que contempla apenas a chave primária.
Quem já lidou com grandes bancos de dados sabe da importância desta prática e o quanto ela reduz o tempo das consultas.
Você pode criar índices em todas as tabelas do banco de dados, mas vou listar aqui as que julgo mais importante e o comando para você criar os índices:
Tabela de Produtos (product)
#Indice para fabricantes CREATE INDEX manufacturer ON `oc_product` (`manufacturer_id`)
#Indice para status de estoque CREATE INDEX stock_status ON `oc_product` (`stock_status_id`)
#Indice para o status CREATE INDEX status ON `oc_product` (`status`)
Tabela de Pedidos (order)
#Indice para loja CREATE INDEX store ON `oc_order` (`store_id`)
#indice para cliente CREATE INDEX customer ON `oc_order` (`customer_id`)
Chaves estrangeiras, elas podem ajudar
Outra boa prática é a criação de chaves estrangeira e que tenham remoção de dados em cascata, desta forma se você remover um produto diretamente no banco todas os dados vinculados ao produto em outras tabelas serão também removidos.
Esse é um processo longo e um pouco mais complexo pois envolve mexer em diversas tabelas, no caso de produto são 16 tabelas vinculadas, mas pode ter certeza que o esforço vai valer a pena, pois sua base de dados vai ficar sempre homogênea.
Veja abaixo o exemplo da criação da chave na tabela product_to_category que é responsável por vincular os produtos as categorias do sistema.
O primeiro passo é alteras as tabelas envolvidas pra o tipo Innodb: ALTER TABLE `product` ENGINE=InnoDB ALTER TABLE `product_to_category` ENGINE=InnoDB
#cria a chave estrangeira com a tabela produto
ALTER TABLE `oc_product_to_category` ADD CONSTRAINT `product_id` FOREIGN KEY ( `product_id` ) REFERENCES `oc_product` ( `product_id` ) ON DELETE CASCADE ON UPDATE CASCADE ;
Não altere o banco!
Por fim a última dica que eu tenho sobre melhorar o desempenho do banco de dados é: não altere o banco de dados e sobre alterar estou falando em criar campos, renomear colunas etc…
Fazendo isso você pode quebrar referências e prejudicar e muito sua loja Opencart além de dificultar e muito o processo de atualização.
Se precisar crie novas tabelas, mas não altere as tabelas do sistema.
É isso pessoal essas foram algumas dicas que podem melhorar o desempenho da base de dados do Opencart e consequentemente aumentar a velocidade e os resultados de sua loja Opencart.
Até amanhã!!!