2009-07-07 5 views
3

정말 큰 (말하자면 1 억 행) 데이터베이스가 정기적으로 손상됩니까? 나는 스케일링에 전혀 익숙하지 않다. 그러나 하나의 데이터베이스가 실제 데이터의 큰 덩어리의 열쇠가되어 "오 그래, 그 쿼리는 20,000,000-25,000,000 블록을 필요로한다"라고 말하는 인덱스가 될 수 있다고 생각했다. 그 블록으로 쿼리를 보내고 나머지는 건너 뜁니다. 이것은 구현할 필요가있는 것이 아니라, 올바른 방향으로 나를 가리키는 자원을 여기에서 요청할 것이라고 생각했습니다. 문안 인사.대형 MySQL 데이터베이스는 어떻게 효율적으로 작동합니까?

+0

만약 당신이 MySQL에 대해 이야기하고 있다면, 당신은 1 억 개의 행을 가진 테이블을 의미한다고 생각합니다. 데이터베이스는 원하는만큼의 행을 가질 수 있습니다. 그러나 각 테이블에 10 개의 행과 1,000 만 개의 테이블이 있다면, 매우, 매우 performant. –

+1

1 억 개의 행을 처리해야하는 경우 PostgreSQL, MSSQL 또는 Oracle으로 이동할 시간입니다. – backslash17

답변

3

물론 가능합니다. 예를 들어 대형 시스템에는 데이터베이스와로드 밸런스가 포함 된 여러 데이터 센터가있는 경우가 많습니다.

당신이 말하는 것처럼 대형 데이터베이스를 분할하는 핵심 개념은 데이터베이스 샤딩입니다. This article을 사용하면 샤딩 (sharding)이 어떻게 데이터베이스를 분할하여보다 쉽게 ​​액세스하고 개별 서버의 부하를 줄일 수 있는지 더 잘 이해할 수 있습니다.

한 번 생각해 보니이 유형의 기술이 약 백만 줄의 데이터베이스에 필요하다고 생각했지만 3NF와 적절한 데이터베이스 구조를 배웠을 때 나는 끔찍하게 구현 된 데이터베이스를 수리했습니다. 이 점을 상기시켜 줘서 고마워! 나는 당신이 얻는 다른 대답을보기 위해 흥미가있을 것이다.

0

큰 테이블의 가장 큰 문제점은 쿼리로 끌어 올 데이터의 양입니다. 1 백만 개의 행 테이블을 가지고 작업 할 때 LIMIT 절을 잘 사용하는 것이 중요합니다. 모든 것을 선택하려고 시도하지만 서버를 죽이면 정확히 한 번 실수를 저지른 것입니다.

인덱스와 LIMIT 절 사이에서 MySQL 테이블은 전체 데이터 세트에 한 번에 액세스하지 않는 한 매우 큰 데이터 세트가 저장된 경우 매우 유용 할 수 있습니다.

0

MySQL 5.1에는 설명대로 (기본 수준에서) 테이블을 여러 섹션으로 나눌 수있는 기능이 있습니다 (예 : table partitioning). 그러나 MySQL에는 모든 성능 튜닝 기능이 있으므로 각 설치에 가장 적합한 옵션을 선택하려면 모든 기능을 잘 알고 있어야합니다.

관련 문제