Como é que a tabela 'wp_options' não possui um índice em 'autoload'?

14

No início de cada página servida pelo WordPress, há uma chamada do MySQL para buscar opções:

SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';

Como não há índice na coluna autoload , o MySQL precisa procurar TODAS as linhas.

Eu também me deparei com o comentário de esta resposta dizendo que não haveria ganho de desempenho mesmo se houvesse uma índice.

No meu aplicativo, usei muitos valores temporários para servir como uma substituição de sessão. Eles funcionaram muito bem e eu tenho minhas próprias rotinas de coleta de lixo. Percebi que na tabela wp_options , meus valores transitórios (aqueles que começam com _transient_ ) têm autoload=no . Espero que o número de linhas da minha tabela wp_options aumente à medida que o número de usuários simultâneos aumenta.

Gostaria de saber por que a tabela é projetada dessa maneira. E devo criar um índice para o meu caso particular?

    
por He Shiming 04.05.2013 / 10:40

2 respostas

11

Não há índice porque a necessidade nunca foi strong o suficiente.

Em ticket # 14258 foi sugerido, mas como a maioria das opções usa autoload=yes por padrão, o índice seria ignorado de qualquer maneira.

Existe também o ticket ainda aberto # 24044 _Adicione o índice a wp_options para ajudar / melhorar o desempenho_ .

Acho que você deve criar um índice. Ele sobreviverá às atualizações. Pode não ajudar no seu desempenho, mas você pode adicionar dados estatísticos reais a esse ticket.

    
por fuxia 04.05.2013 / 11:56
4

Estou rodando 3 blogs do WP em uma grande instância do Debian Squeeze e estava investigando porque o mysql estava preso naquele host com 200% de uso da CPU e carga do sistema entre 3 e 6. Olhando para uma 'lista de processos de show' dentro do mysql, nós entendemos que a tabela wp_option estava envolvida neste problema, então nós executamos:

alter table wp_options add index autoload_idx('autoload');

Após essa operação, o carregamento do mysql, como mostrado na parte superior, caiu drasticamente para 1%, e a média da carga da instância agora é de 0,10.

Estamos usando alguns plug-ins para que possa haver um loop em algum lugar do código, e essa pode ser uma situação específica, mas, no nosso caso, a mudança nas performances é absolutamente surpreendente.

Nossa tabela wp_options tem 347 linhas.

    
por Fabio Pedrazzoli 16.12.2013 / 15:53