저는 데이터베이스 시스템 설계가 처음입니다. 많은 기사를 읽은 후 샤딩이나 파티셔닝 없이 테이블 1개를 가져야 하는 한도가 무엇인지 정말 혼란스럽습니다. 보편적인 답변을 제공하는 것이 정말 어렵다는 것을 알고 있습니다. 상황은 다음과 같은 요인에 따라 달라집니다.
행 크기-
데이터 유형(문자열, blob 등)-
활성 문의 수-
어떤 쿼리-
색인-
다시 읽기/다시 쓰기-
예상되는 지연-
그런데 누군가 이런 질문을 하면
매일 10억 개의 데이터와 수백만 개의 행이 추가된다면 어떻게 하시겠습니까? 이러한 대규모 데이터베이스의 경우 읽기 4회, 쓰기 1회, 업데이트 2회 쿼리에 대한 대기 시간은 5밀리초 미만이어야 합니다. -
행이 1,000만 개밖에 없는데 업데이트 및 읽기 양이 많다면 무엇을 선택하시겠습니까? 추가된 새 줄의 수는 중요하지 않습니다. 높은 일관성과 낮은 대기 시간이 요구됩니다. -
행 개수가 100만 개 미만이고 행 크기가 수천 개씩 증가하는 경우 선택은 간단합니다. 그러나 선택 항목에 수백만 또는 수십억 개의 행이 포함되면 상황이 더욱 까다로워집니다.
참고: 질문에 지연 횟수를 언급하지 않았습니다. 제발
귀하가 편안하게 느끼는 지연 횟수를 기준으로 답변하십시오. 또한 구조화된 데이터에 대해서도 이야기하고 있습니다.
잘 모르겠지만 3가지 구체적인 질문을 추가할 수 있습니다:
Amazon 또는 전자상거래 주문 관리 시스템용 SQL 데이터베이스를 선택한다고 가정해 보겠습니다. 주문 건수는 매일 수백만 개씩 증가하고 있습니다. 이미 10억 개의 레코드가 있습니다. 이제 데이터 아카이브가 없다고 가정합니다. 초당 1,000개 이상의 쿼리로 높은 읽기 쿼리를 제공합니다. 그리고 또한 쓰여졌습니다. 읽기:쓰기 비율은 100:1-
이제 더 작은 숫자의 예를 들어보겠습니다. abc 또는 전자상거래 주문 관리 시스템용으로 SQL 데이터베이스를 선택한다고 가정해 보겠습니다. 주문량이 매일 수천개씩 늘어나고 있습니다. 이미 천만 개의 레코드가 있습니다. 이제 데이터 아카이브가 없다고 가정합니다. 초당 1만 개가 넘는 쿼리로 높은 읽기 쿼리를 제공합니다. 그리고 또한 쓰여졌습니다. 읽기와 쓰기 비율은 10:1-
세 번째 예: 공짜 배포. 우리는 1000만 개의 선물을 나눠줄 것입니다. 사용자당 1개의 상품이 제공됩니다. 높은 일관성과 낮은 대기 시간이 목표입니다. 이미 무료 배포를 기다리는 사용자가 2천만 명이라고 가정하면, 시간이 시작되면 모든 사용자가 무료 혜택을 손에 넣으려고 노력할 것입니다. -
참고: 이 질문에서는 다음을 선택한다고 가정합니다.
SQL 솔루션. 또한 제공된 사용 사례가 논리적으로 이해되지 않는 경우 무시하세요. 수치적 지식을 습득하는 것이 목표입니다.
벤치마크가 무엇인지 이해하도록 도와줄 수 있는 사람이 있나요? 현재 작업 중인 프로젝트의 실제 수치를 보면 이것이 쿼리가 너무 많은 대규모 데이터베이스에서 관찰된 대기 시간임을 알 수 있습니다. 특정 대기 시간에 대한 특정 수의 쿼리에 대한 선택 테이블 수를 정당화하는 데 도움이 될 수 있는 모든 것입니다.
MySQL에 대한 몇 가지 답변. 모든 데이터베이스에는 디스크 공간, 네트워크 대기 시간 등이 적용되므로 다른 엔진도 유사할 수 있습니다.
SELECT
. 따라서 쿼리가 이와 같이 병리적인지 이해해야 합니다. (이것은 "지연 시간"이 높은 예라고 생각합니다.)PARTITIONing
(특히 MySQL에서) 용도는 거의 없습니다. 자세한 내용: 파티션INDEX
성능에 매우 중요합니다.每天插入
1백만 행은 문제가 되지 않습니다. (물론 일부 스키마 설계로 인해 이 문제가 발생할 수 있습니다.) 경험상 100/초는 문제가 되지 않을 수 있지만 그 이후에는 더 어려워질 수 있습니다. 고속 수집대규모 데이터베이스에 들어가면 각각 다른 특성을 지닌 몇 가지 유형이 있습니다.
SPATIAL
또는 일부 기술 여기