Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mudar de varchar para mediumtext causa degradação de desempenho


Os dois tipos de dados são tratados de forma praticamente idêntica. Existem muitas outras razões possíveis para a lentidão. (Mas nenhum que eu conheça que diga MEDIUMTEXT é pior que VARHAR .)

Então... Vamos ver se conseguimos acelerar a página da web...

Coloque microtime(true) em torno das chamadas mysql -- para ter certeza de que é MySQL, não PHP. "0,019 segundos" faz sentido; "1,5 - 2 segundos" soa como algo acontecendo no PHP.

Use InnoDB, não MeuISAM. (Apesar de suas alegações em contrário.)

Sintonize corretamente; vamos ver SHOW VARIABLES LIKE '%buffer%'; Quanta memória RAM você tem? (A troca é terrível para o desempenho.)

Quantas linhas você está retornando? Não é prático ter mais do que algumas dúzias em uma página da web, então adicione ORDER BY...LIMIT... .

Se o limite da interface do usuário for de 1.000 caracteres, use TEXT ou VARCHAR(1000) , não MEDIUMTEXT . Se você estiver tentando aumentar até 64K bytes (potencialmente 4K utf8mb4 caracteres ), então use TEXT .

Você precisa disso (com as colunas em qualquer ordem):
INDEX(part_id, language)

Se houver muitos "churn" (exclusões e/ou atualizações seguidas de mais inserções) na tabela MyISAM, os dados podem ser fragmentados, portanto, lentos. Isso pode acontecer tanto para VARCHAR e TEXT . Isso não acontece com o InnoDB.