Um pouco tarde para responder a isso, mas, desde que está sendo pesquisada, isso será útil para alguém:
O WordPress usa o esquema do banco de dados EAV para parte de sua implementação. Isso afeta os dados e os usuários. (Eles são mantidos em tabelas separadas)
Para explicá-lo do ângulo de dados:
Juntamente com os detalhes relacionados diretamente à postagem acessíveis em wp_posts, várias meta são postadas na tabela wp_postmeta para cada postagem. Quaisquer dados relevantes para a postagem (ou tipo de postagem personalizada).
O problema é que, se você tem HEAPS de postagens ou páginas (ou postagens / dados personalizados), fica muito lento procurar qualquer propriedade encontrada na meta. Primeiro você pesquisa todas as entradas na tabela-meta pelos critérios necessários e, em seguida, obtém a postagem relevante da tabela. O motivo é que você precisa procurar CADA critério separadamente. Então, uma pesquisa por tag, você obtém as postagens com o valor X para 'meta1', depois procura por um segundo critério, por exemplo, critérios personalizados e obtém os IDs das postagens com customcriteriavalue1 nos critérios customizados. os detalhes da postagem da tabela de postagens com essa interseção.
Como exemplo - coloque 30.000 produtos no WooCommerce e você terá ~ 1.800.000 linhas em wp_postmeta, conforme explicado na resposta abaixo:
Postar meta versus tabelas de banco de dados separadas
Portanto, não apenas isso tornará a pesquisa muito muito ineficiente (especialmente quando você se auto-junta no wp_postmeta para vários critérios), mas também consulta uma única linha entre 1,8 mil linhas causa um impacto no desempenho.
Deficiência de esquema de EAV.
Assim, com muitas postagens, a implementação do WordPress db torna as pesquisas complexas muito lentas.
A execução de um site WordPress com milhares de postagens é bastante viável, se você usar plug-ins de cache. Você pode ir ainda mais. Mas as pesquisas serão um problema.
............
O mesmo acontece com os usuários - o wp_usermeta também usa o mesmo formato EAV. Portanto, se você recebe muitos usuários e possui muitos plugins que armazenam vários dados do usuário no wp_usermeta, você receberá o mesmo desempenho.
Sem mencionar que há tantos usuários, é provável que você já tenha um grande número de postagens - a menos que seu aplicativo seja algo relacionado principalmente aos usuários (CRM etc), e você opte por armazenar seus dados de usuário em wp_usermeta em vez de wp_postmeta . (Embora improvável).
.........
Existem alguns plugins que tentam contornar esse problema, como o Meta Accelerator.
https://wordpress.org/plugins/meta-accelerator/
Este plugin pega todos os dados para qualquer tipo de postagem que você escolher e os coloca em tabelas simples. Isso acelera muito a pesquisa e também consulta qualquer valor singular.
Mas esse plugin ainda está em sua infância.
Como alternativa, você pode instalar o ElasticSearch no servidor e usar o plug-in ElasticPress ou outro plug-in que o integre ao WordPress para acelerar essas pesquisas.
PHP
parte da pilha não será seu problema (o Facebook é construído com um PHP modificado), masMySQL
muito bem pode ser limitante.Encontrei o gargalo para quantos usuários do Wordpress você pode ter o tempo limite do PHP entrando em jogo na página de administração dos usuários.
Supondo que todos os usuários tenham pelo menos uma função, eles têm uma
wp_capabilities
entrada nauser_metadata
tabela com uma matriz serializada de funções.A página de administração mostra uma contagem de quantos usuários com cada tipo de função, portanto, é necessário carregar cada matriz serializada wp_capabilities, desserializar isso e mostrar uma contagem total.
Quando tenho 300.000 usuários, a página de administração de usuários leva 44 segundos para ser criada.
Isso significa que cada usuário adiciona 0,00014666666 segundos ao tempo de carregamento da página.
Supondo que o tempo limite do PHP seja de 60 segundos, o limite seria de cerca de 400.000 usuários.
No entanto, estou executando um servidor bastante antigo e lento. Um hardware mais rápido melhoraria bastante as coisas.
fonte