> 헤드라인 > 수백만 개의 데이터에서 mysql에 대한 심층 분석

수백만 개의 데이터에서 mysql에 대한 심층 분석

藏色散人
풀어 주다: 2019-04-29 10:17:53
앞으로
5640명이 탐색했습니다.

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의 일부 경험 성능 최적화"

관련 라벨:
원천:hcoder.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿