mysql은 매우 우수한 무료 데이터베이스로 널리 사용됩니다. 일반적으로 우리가 개발하는 프로젝트의 데이터는 100만 개를 초과하는 경우가 거의 없습니다. 최근에는 수백만 건의 데이터에 대한 mysql 최적화에 대한 심층적인 연구에 많은 시간을 쏟았습니다. 저는 많은 문제에 직면했고 이를 해결했으며, 이를 여러분과 공유하고 싶습니다. 여러분의 소중한 의견을 환영합니다!
1. 백만 단위 데이터 msql 테스트 환경 소개
mysql은 300만 개의 데이터(myisam 엔진)의 경우 count(*)를 사용하여 전체 데이터 수를 쿼리하고 조건을 포함합니다( 인덱스가 올바르게 표시됨) 실행 시간이 정상입니다. 자주 읽는 데이터의 경우 myIsam 엔진을 사용하는 것이 좋습니다...
자세한 내용을 보려면 다음을 클릭하세요. "수백만 개의 데이터를 위한 msql 테스트 환경 소개"
2. 수백만 개의 데이터에서 MySQL 페이징 문제
개발 과정에서 우리는 페이징을 자주 사용하는데, 한계를 이용해 데이터를 읽는 것이 핵심 기술입니다. 페이징 제한 사용 테스트 중 다음 데이터를 얻었습니다.
select * from news order by id desc limit 0,10 耗时0.003秒 select * from news order by id desc limit 10000,10 耗时0.058秒 select * from news order by id desc limit 100000,10 耗时0.575秒 select * from news order by id desc limit 1000000,10 耗时7.28秒
페이징 시작 지점이 클수록 데이터 볼륨이 클 때 mysql의 쿼리 속도가 느려지는 것을 보고 놀랐습니다. 백만 개의 항목에는 이미 7초가 걸립니다. 이는 우리가 받아들일 수 없는 값입니다...
자세한 내용은 "수백만 개의 데이터에서 MySQL 페이징 문제"
3를 클릭하세요. 3. mysql 조건부 쿼리 및 수백만 개의 데이터에서 페이징 쿼리에 대한 주의사항
계속됩니다. "수백만 개의 데이터로 인한 MySQL 페이징 문제" 섹션에서 쿼리 조건을 추가합니다:
select id from news where cate = 1 order by id desc limit 500000 ,10 查询时间 20 秒
정말 무서운 속도네요! ! 첫 번째 섹션 "수백만 개의 데이터를 위한 MySQL 데이터 테스트 환경 소개"의 지식을 사용하여 최적화하세요...
자세한 내용을 보려면 다음을 클릭하세요. "수백만 개의 데이터에서 mysql 조건부 쿼리 및 페이징 쿼리에 대한 참고 사항"
4. MySQL 스토리지 엔진 myIsam과 innodb의 차이점
MySQL에는 여러 스토리지 엔진이 있으며 그 중 MyISAM과 InnoDB가 일반적으로 사용됩니다. 다음은 이 두 엔진에 대한 몇 가지 기본 개념입니다(자세한 소개는 아님).
MyISAM은 MySQL의 기본 스토리지 엔진으로, 기존 ISAM 유형을 기반으로 하며 전체 텍스트 검색을 지원하지만 트랜잭션에 안전하지 않으며 외래 키를 지원하지 않습니다. 각 MyISAM 테이블은 세 가지 파일에 저장됩니다. frm 파일은 테이블 정의를 저장하고, 데이터 파일은 MYD(MYData)입니다. 인덱스 파일은 MYI(MYIndex)입니다...
자세한 내용을 보려면 클릭하세요. "myIsam과의 차이점 innodb mysql 스토리지 엔진 》
5. MySQL 성능 최적화 경험
대부분의 MySQL 서버에는 쿼리 캐싱이 활성화되어 있습니다. 이는 성능을 향상시키는 가장 효과적인 방법 중 하나이며 MySQL 데이터베이스 엔진에 의해 처리됩니다. 많은 동일한 쿼리가 여러 번 실행되면 이러한 쿼리 결과가 캐시에 저장되므로 이후의 동일한 쿼리는 테이블을 조작하지 않고 캐시된 결과에 직접 액세스하지 않습니다...
자세한 내용을 보려면 클릭하세요: "MySQL의 일부 경험 성능 최적화"