DataARTIGO

Melhorando o desempenho de seu banco de dados do Opencart

Um dos maiores problemas do Opencart está em seu banco de dados, mas ele pode ser minimizado aplicando algumas pequenas alterações no banco.

Oi pessoal tudo bom? Hoje é dia de colocar a mão na massa, ou melhor, no código, e como ultimamente tenho falado bastante do Opencart, vou continuar no assunto, mas antes leia alguns dos artigos que já fiz sobre a plataforma.

MySQL

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 está em seu banco de dados, mas 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, e a grande maioria das tabelas possui apenas um único em índice que contempla apenas a chave primária.

Quem já lidou com grandes bancos de dados sabe da importância dessa 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 importantes e o comando para você criar os índices:

Tabela de Produtos (product)

# Índice para fabricantes

[sql]

CREATE INDEX manufacturer ON `oc_product` (`manufacturer_id`)

[/sql]

# Índice para status de estoque

[sql]

CREATE INDEX stock_status ON `oc_product` (`stock_status_id`)

[/sql]

# Índice para o status

[sql]

CREATE INDEX status ON `oc_product` (`status`)

[/sql]

Tabela de Pedidos (order)

# Índice para loja

[sql]

CREATE INDEX store ON `oc_order` (`store_id`)

[/sql]

# Índice para cliente

[sql]

CREATE INDEX customer ON `oc_order` (`customer_id`)

[/sql]

Chaves estrangeiras, elas podem ajudar

Outra boa prática é a criação de chaves estrangeira e que tenham remoção de dados em cascata. Dessa forma, se você remover um produto diretamente no banco, todos 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 de 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 é alterar as tabelas envolvidas pra o tipo Innodb:

[sql]

ALTER TABLE `product` ENGINE=InnoDB ALTER TABLE `product_to_category` ENGINE=InnoDB

[/sql]

# Cria a chave estrangeira com a tabela produto

[sql]

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 ;

[/sql]

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 quando falo em alterar estou falando de 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é a próxima!

É um apaixonado por inovação, tecnologia e cultura. Estudou Ciências da Computação e Processos Gerencias e trabalha atualmente na Inter.net como Diretor de TI e Inovação

Ver perfil