FernandoAcosta.Netdocs

Modo banco de dados

2 min de leituraAtualizado há 1 semana

No modo padrão, o plugin lê o arquivo CSV a cada cotação de frete. Pra tabelas pequenas isso é instantâneo. Pra tabelas grandes (milhares de linhas), começa a pesar — especialmente no Black Friday.

O modo banco de dados importa a tabela pra uma estrutura indexada do MySQL. A busca passa a ser por índice, em vez de varredura linear. Reduz tempo de cálculo em até 90% em tabelas grandes.

Quando ativar

Cenário Recomendação
Tabela com até ~500 linhas CSV está ok
Tabela com 1.000-10.000 linhas Avalie modo DB
Tabela com 10.000+ linhas Modo DB obrigatório
Picos de tráfego (BF, datas) Modo DB independente do tamanho

Como ativar

  1. Suba o CSV normalmente nas configurações do método e mapeie as colunas.
  2. Logo abaixo da área de mapeamento, clique em Iniciar Importação.
  3. O plugin cria registros na tabela wp_wcts_rates. Em arquivos grandes isso roda em segundo plano via Action Scheduler.
  4. Quando terminar, marque a opção Usar Banco de Dados e salve.
  5. O plugin agora consulta o MySQL em vez do CSV.
Importação travou?

Se a fila do Action Scheduler está parada, force o processamento via WP-CLI:

wp action-scheduler run --force

Útil em servidores com cron desabilitado.

Forçar reimportação

Se você atualizou o CSV, é preciso reimportar pra que o banco de dados reflita. Clique em Reimportar Tabela (mesmo lugar onde antes era "Iniciar Importação").

A reimportação substitui os registros antigos. Não é incremental.

Voltar pro modo CSV

Desmarque Usar Banco de Dados e salve. O plugin volta a ler o arquivo. Os dados no banco continuam lá — você pode reativar quando quiser.

Esquema da tabela

A tabela criada é wp_wcts_rates (prefixo wp_ muda conforme seu site):

id              INT PK
instance_id     INT       -- vínculo com a instância do método de envio
postcode_start  INT
postcode_end    INT
weight_start    DECIMAL
weight_end      DECIMAL
cost            DECIMAL
delivery_time   TINYINT
label           VARCHAR(255)
created_at      TIMESTAMP

Há índice composto (instance_id, postcode_start, postcode_end) que é o que torna a busca rápida.

Mesmo CSV, instâncias diferentes

Cada método de envio tem instance_id único. Se você usa o mesmo CSV em duas áreas de entrega diferentes, são duas importações separadas, cada uma marcada com seu instance_id.

Não tem como compartilhar a importação entre instâncias — é por design, pra que cada uma possa ser desativada/atualizada independente.

Caveats

  • A importação é uma cópia do CSV no momento do clique. Editar o CSV depois não afeta o banco — você precisa reimportar.
  • Filtros que modificam linhas em tempo de leitura (wcts_pre_rules, wcts_custom_rules_database) continuam funcionando, com versões específicas pra cada modo.
Foi útil?