DB/MySQL 2

[MySQL 8.0] 중복된 인덱스 및 거의 사용되지 않는 인덱스 조회하기

데이터베이스 성능 향상을 위해 모든 엔지니어가 가장 먼저 고려하는 것이 바로 인덱스의 적용이다. 적절한 인덱스를 추가하는 것만으로 왠만하면 성능이 개선되기 때문에 인덱스 추가는 DB 성능 관련해서는 빠질수가 없는 솔루션이다. 인덱스는 성능에 있어 필요하지만 때때로 엔지니어들은 너무 과도하게 인덱스를 사용하는 경우가 있다. 이러한 경우, 중복 인덱스가 발생해서 오히려 전체 성능이 크게 저하되기 마련이다. 인덱스가 많아지게 되면 각 인덱스에 필요한 용량이 늘어나기 때문에 역설적으로 각 인덱스가 사용할 수 있는 가용 메모리의 크기가 줄어들게 된다. 또한, INSERT 등의 write 요청에 대해 고려해야 하는 인덱스의 수가 늘어나게 되면 해당 쿼리의 성능이 점점 떨어지게 된다. MySQL 5.x에서는 중복 인..

DB/MySQL 2024.02.07

MySQL where문에서 boolean 체크 관련 성능 튜닝

MySQL에서 boolean 타입의 플래그를 추가하기 위해 보통 BOOLEAN 타입을 사용하게 된다. 이 boolean 타입은 사실 tinyint(1)과 유의하다고 볼 수 있다. MySQL에서 제공해주는 false나 true와 같은 상수를 사용해서 where문에 조건을 추가해 줄 수가 있게 된다. 이 불린 값 체크를 위해서 아래와 같이 많은 방법이 있을 수 있다: -- is문 사용 SELECT * FROM TABLE WHERE flag is true; -- boolean값 자체를 조건문으로 사용 SELECT * FROM TABLE WHERE flag; -- '='을 사용해서 값을 비교 SELECT * FROM TABLE WHERE flag = true; 논리적인 관점에서 위의 3가지 타입의 쿼리는 모두 ..

DB/MySQL 2024.01.17