Mysql 5.7 vs 5.5: 단순 쿼리 실행 시간이 50배 더 ​​오래 걸림

Mysql 5.7 vs 5.5: 단순 쿼리 실행 시간이 50배 더 ​​오래 걸림

1,033,990개의 행이 있는 "질문" 테이블이 있는 "대수학" 데이터베이스가 있습니다. 레코드에는 INT인 'solved' 속성이 있습니다. 간단한 문의사항이 있습니다

select count(*) from questions where solved = 0

비슷한 CPU를 사용하는 두 대의 서버가 있습니다. 두 서버 모두에서 테이블은 동일합니다. (데이터베이스는 프로덕션의 복제본입니다). 그들은 SSD에 있습니다. 한 서버에는 MySQL 5.5.49가 포함된 Ubuntu 14.04가 있고, 다른 서버에는 MySQL 5.7.12가 포함된 Ubuntu 16.04가 있습니다.

문제는 이 쿼리가 MySQL 5.5에서는 0.009초밖에 걸리지 않지만 MySQL 5.7에서는 0.304초가 걸린다는 것입니다. 34배 더 느립니다!!!

쿼리 계획은 대략 비슷합니다.

느린 서버:

id      select_type     table   partitions      type    possible_keys   key     key_len ref     rows    filtered        Extra
1       SIMPLE  questions       NULL    index   NULL    by_topic_solved 97      NULL    1033990 10.00   Using where; Using index

빠른 서버:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  questions   index   NULL    by_topic_solved 97  NULL    1033989 Using where; Using index

왜 이런 일이 일어날 수 있는지는 나를 당혹스럽게 만듭니다. 나는 이 새로운 5.7 설정에서 더 복잡한 다른 성능 문제를 보았지만 이는 기본 쿼리 측면에서 해결해야 할 가장 간단한 문제입니다.

이에 대한 설명이나 시작점을 찾고 있습니다. my.cnf는 둘 사이에서 대략 유사했습니다. 어떤 제안이라도 감사하게 받아들여질 것입니다.

답변1

나는 이 문제를 완전히 이해했습니다. 변경된 점은 새로운 mysql에서는 query_cache_type = OFF의 기본 설정으로 인해 쿼리 캐시가 비활성화된다는 것입니다. query_cache_type=1을 설정하여 쿼리 캐시를 다시 활성화하자 더 나은 성능이 바로 나타났습니다. 내 사이트는 INSERT/UPDATE 쿼리보다 100배 더 많은 SELECT 쿼리를 사용하므로 쿼리 캐시를 사용하는 것이 적합합니다. 이 방향을 보도록 알려주셔서 감사합니다!

관련 정보