복붙노트

[SQL] 얼마나 많은 행이 데이터베이스에 너무 많은입니까?

SQL

얼마나 많은 행이 데이터베이스에 너무 많은입니까?

나는 백만 레코드와 MySQL의 InnoDB의 테이블을했습니다. 이 너무 많은가요? 또는 데이터베이스는이 등을 처리 할 수 ​​있습니까? 나는 100 일보다 1 MILLON 행과 함께 테이블에 (테이블에서 마지막 행을 받고 예를 들어,) 일부 쿼리가 느린 (초)입니다 것으로 나타났습니다 때문에 부탁드립니다.

해결법

  1. ==============================

    1.아니, 1,000,000 행 (일명 기록은) 너무 많은 데이터베이스에 없습니다.

    아니, 1,000,000 행 (일명 기록은) 너무 많은 데이터베이스에 없습니다.

    계정에 많은 그 진술에 대한 있습니다. 평소 용의자은 다음과 같습니다 :

  2. ==============================

    2.나는 더 이상 97,000,000 기록 (30 기가 바이트 데이터 파일)와 데이터베이스 및 아무 문제가없는있다.

    나는 더 이상 97,000,000 기록 (30 기가 바이트 데이터 파일)와 데이터베이스 및 아무 문제가없는있다.

    그냥 정의하고 테이블 인덱스를 개선해야합니다.

    명백한 그래서 1,000,000 많은 아니라고! (당신이하지 색인을한다면, 예, 그것은 많은입니다)

  3. ==============================

    3.사용 '설명'은 쿼리를 검토하고 쿼리 계획에 아무것도 잘못이 있는지 확인합니다.

    사용 '설명'은 쿼리를 검토하고 쿼리 계획에 아무것도 잘못이 있는지 확인합니다.

  4. ==============================

    4.나는 이것이 일반적인 오해라고 생각합니다 - 그것은 데이터베이스 확장에 올 때 크기가 방정식의 한 부분이다. 하드 (또는 세게) 다른 문제가 있습니다 :

    나는 이것이 일반적인 오해라고 생각합니다 - 그것은 데이터베이스 확장에 올 때 크기가 방정식의 한 부분이다. 하드 (또는 세게) 다른 문제가 있습니다 :

    나는 상태로 갈거야 그래서 두 제한 문제가 될 것 같습니다

  5. ==============================

    5.당신이 1 개 백만 행을 의미하는 경우, 그것은 당신의 색인을 수행하는 방법에 따라 달라집니다 및 하드웨어의 구성. 백만 행 엔터프라이즈 데이터베이스에 대한 많은 양의, 또는 괜찮은 장비도 dev에 데이터베이스가 아닙니다.

    당신이 1 개 백만 행을 의미하는 경우, 그것은 당신의 색인을 수행하는 방법에 따라 달라집니다 및 하드웨어의 구성. 백만 행 엔터프라이즈 데이터베이스에 대한 많은 양의, 또는 괜찮은 장비도 dev에 데이터베이스가 아닙니다.

    당신이 1 백만 열 (확실하지 그게 가능하기 MySQL은)을 의미하는 경우 다음 네, 조금 큰 것 같습니다과 의지 아마 문제가 원인.

  6. ==============================

    6.레지스터? 당신은 기록을 의미합니까?

    레지스터? 당신은 기록을 의미합니까?

    백만 기록은 요즘 데이터베이스에 대한 실제 큰 문제가되지 않습니다. 당신이 어떤 문제가 발생하면, 그것은 가능성이 데이터베이스 시스템 자체,하지만 당신은 그것을 실행하고 오히려 하드웨어 아니다. 당신은 당신이 가장 가능성이, 그것을 던져 하드웨어 밖으로 실행하기 전에 DB에 문제로 실행하지 않을거야.

    이제, 분명히 일부 쿼리 속도가 느린 다른 사람보다하지만이 매우 유사한 쿼리가 크게 다른 시간에 실행하는 경우, 데이터베이스의 실행 계획이 무엇인지 파악해야하고 그것을위한 최적화, 즉 등 올바른 인덱스, 적절한 정상화를 사용

    덧붙여, 테이블의 "마지막"기록 같은 것은 논리적 인 관점에서 그들은 어떤 고유의 순서가 없다, 없다.

  7. ==============================

    7.나는 몇 억 (색인) 레코드가 아닌 분할 된 테이블을 보았다, 그 자체에 합류 분석 작업을 위해. 우리는 결국 일을 분할하지만 솔직히 우리는 많은 차이를 볼 수 없었다.

    나는 몇 억 (색인) 레코드가 아닌 분할 된 테이블을 보았다, 그 자체에 합류 분석 작업을 위해. 우리는 결국 일을 분할하지만 솔직히 우리는 많은 차이를 볼 수 없었다.

    즉 오라클에 있었고, 내가 MySQL은 데이터의 볼륨을 테스트하지 않은 말했다. 인덱스는 당신의 친구입니다 :)

  8. ==============================

    8.당신이 "등록"에 의해 "기록"을 의미 가정 아니, 너무 많이, MySQL은 정말 잘 확장 아니에요 및 하드 디스크의 공간을 가지고 많은 레코드로 저장할 수 있습니다.

    당신이 "등록"에 의해 "기록"을 의미 가정 아니, 너무 많이, MySQL은 정말 잘 확장 아니에요 및 하드 디스크의 공간을 가지고 많은 레코드로 저장할 수 있습니다.

    물론 검색 쿼리 속도가 느려집니다하지만. 확인 필드가 제대로 색인 것을 만드는 제외하고는 그 주위에있는 방법은 정말 없습니다.

  9. ==============================

    9.어떤 인덱스가없는 경우 테이블 (그것은 더 행으로) 가져옵니다 큰은 느린 쿼리는 일반적으로 실행됩니다. 당신이 바로 인덱스를 추가하면 쿼리 성능을 향상 시키거나 적어도하지만큼 테이블이 성장함에 따라 저하한다. 테이블이 더수록 쿼리 자체가 더 행을 반환하는 경우, 당신은 다시 저하를보고 시작합니다.

    어떤 인덱스가없는 경우 테이블 (그것은 더 행으로) 가져옵니다 큰은 느린 쿼리는 일반적으로 실행됩니다. 당신이 바로 인덱스를 추가하면 쿼리 성능을 향상 시키거나 적어도하지만큼 테이블이 성장함에 따라 저하한다. 테이블이 더수록 쿼리 자체가 더 행을 반환하는 경우, 당신은 다시 저하를보고 시작합니다.

    100 만 행이 아니지만 많은 것을, 그것은 또한 당신은 DB 서버에 얼마나 많은 메모리에 따라 달라집니다. 테이블이 서버에서 메모리에 캐시하기에 너무 큰 경우, 쿼리 속도가 느려질 수 있습니다.

  10. ==============================

    10.제공되는 쿼리를 사용하기 때문에 데이터를 정렬하는 정렬 병합 방법을 사용하여 매우 느려집니다.

    제공되는 쿼리를 사용하기 때문에 데이터를 정렬하는 정렬 병합 방법을 사용하여 매우 느려집니다.

    나는 당신이 그것을 검색하거나 더 정렬이 필요하지 않습니다 그래서 그 방법으로 확인이 이미 정렬되어 있는지 확인하기 위해 인덱스를 사용하도록 디자인을 다시 생각 추천 할 것입니다.

  11. from https://stackoverflow.com/questions/1926079/how-many-rows-in-a-database-are-too-many by cc-by-sa and MIT license