데이터베이스 "O를"도구 지원은 자율 학습 데이터베이스 초상화에 의해 평가

"이동 O는"여기에 또 기존 데이터베이스 평가, 기술 선택 등 의심의 다양한 생산됩니다, 최근 몇 년 동안의 주제는 매우 불이었다입니다. O는 체계적인 프로젝트로 이동, 적절하게 평가 될 필요가있다. 데이터베이스 초상화를 생성하는 자기 개발 도구를 통해 첫 손 O 데이터 평가를 제공하는 것입니다, 우리는 배울 가져올 수 있도록 노력하겠습니다.

일반적인 의심

: 도움이되지만이 같은 몇 가지 의심을 가질 수 없습니다 ", 자신의 데이터베이스를 이해하기에 충분"- 많은 회사는 O, 그것은 종종 문제에 직면 고려

[관리자]

  • 물건의 높은 비용에 O 데이터베이스?
  • 과중한 업무가 아니다?
  • 긴 시간이?
  • 이 경우 위험은 무엇입니까?

[건축가]

  • MySQL은 잘 운반하는 기존 사업을 사용할 수 있습니까?
  • 기술적 위험이 있습니까?
  • 하위 라이브러리 하위 테이블 물건의 도입의 필요성?
  • 캐시 일을 소개하는 필요성?
  • 연구 및 높은 복잡성 것은 개발?
  • 우리는 많은 시간을 투자 할 필요가?
  • 어떻게 데이터 액세스 기능?
  • 전 및 마이그레이션 데이터의 양을 비교 한 후?

[개발자]

  • SQL과 더 복잡한 일이?
  • 변환 금액은 크지 않다?
  • 당신은 재활을 필요로 오라클 방언, 고유의 객체를 사용하지 않는?
  • 등등

위의 이러한 질문에 직면하여, 우리는 빠르게 당신의 기술 솔루션을 평가하는 등 오라클 객체, 문, 액세스 기능, 성능, 기존 및 이후의 마이그레이션 시나리오 작업 부하를 이해할 필요가있다. 즉, 우리의 데이터베이스에 "세로"의 필요성. 큰 도움이 될 것입니다 다음과 같은 측면을 포함, 전체 사이클 지침을 작동하는 O의 위의 데이터베이스 초상화를 바탕으로 :

  • 의사 결정 단계 : 전체 어려움, 비용 (사람들이 때 최), 기술 위험
  • 건축 단계 : 기술 솔루션, 객체 구조, 성능 평가
  • R & D 단계 : 호환성, 복잡성, 테스트
  • 마이그레이션 단계 : 구조 마이그레이션, 데이터 마이그레이션, 데이터 유효성 검사

그것은 이러한 수요를 기반으로 출시 일부 기업 (ADAM 라한다) 등의 알리의 데이터베이스 및 애플리케이션 마이그레이션 서비스와 같은 제품을 평가하지만 해당 제품은 종종 보안에 민감한 기업 등 배포 에이전트, 업로드 분석 패키지를 필요로하는 것은 가능하지 않습니다. 나는 2 년 전에 O 작업 시작이 회사는이 문제에 직면하고있다. 그것은 특히 애플릿의 녹색 버전의 개발이 평가를 용이하게하기 위해, 로컬로 실행 할 수 있습니다.

주소 : https://github.com/bjbean/oracle-estimate-report

둘째, 디자인 아이디어

Oracle 데이터베이스 수집 및 자원 소비, SQL 문, 실제 작동 조건을 포함하는 포괄적 인 데이터베이스 등의 정보 환경, 공간, 개체, 접속 기능의 여섯 개 측면을 포함하여 집계 정보입니다. 더 목표, 도구 임계 값 파라미터 설정 섹션에 대한 정보 수집하십시오. 정보 웹 평가 보고서 생산의 버전, 직관적 인 방법을 수집 한 후, 명령 줄을 실행하여 반영 시각화. O뿐만 아니라, 평가에 기초하여, 그것은 참조 데이터 변환 후속으로 사용할 수있다.

셋째, 세로 해석

O 선택 -MySQL에 다음과 같은 보고서 해석을위한 데이터 및 일반적인 설명했다.

3.1 요약 정보

그림 1

IP, 예제 및 다른 사용자를 포함하여 목표에 의해 수집 된 요약 정보를 표시. 그것은 분석 시간을 주목해야한다, 스크립트, 피크 후 사업을 실행하는 것이 좋습니다 (24 시간 이내) 특징 추출 데이터베이스를 수행합니다.

3.2 공간 정보

그림 2

공간은 후속 마이그레이션에 영향을 미칠 지표 데이터베이스 선택 중요한 고려 사항 중 하나입니다. 이러한 대규모 데이터베이스로, 당신은 스핀 오프 과정을 수행하는 것이 좋습니다. 분할 원리는 하나의 라이브러리의 크기를 제어하는 ​​것입니다. 일반 원칙에 따라 다음과 같은 우선 순위가 해결 될 수 있습니다 :

1) 수직 해상도의 비즈니스 계층

응용 프로그램 레벨에서 다양한 비즈니스 라인에 따라 데이터를 분할합니다. 이러한 순서, 등등 사용자, 상품, 주식과에 따라 전자 비즈니스 플랫폼 분할로. 각 스플릿 부, 폴리에틸렌 비즈니스없이 강력한 데이터 의존성.

2) 분할 수준의 비즈니스 계층

동일한 내부 비즈니스, 라이프 사이클 데이터 관리, 데이터 더위와 추위를 계층화의 설립. 다른 특성의 상이한 층에서의 데이터에 대한 액세스는, 상기 분할을한다. 주문 전자 상거래 플랫폼 예를 들어, (2 주, 반환 할 수 있습니다) 활성 주문에 비활성 주문을 나눌 수 있습니다, (6 개월 기준 기간 2 주를, 고객은 받아 들일 수) 주문 내역 (6 개월 이상).

3) 애플리케이션 계층 분할 라이브러리 서브 테이블

단일 라이브러리 후 상기 분할의 크기가 여전히 큰 경우, 하위 라이브러리 하위 테이블 기술을 사용하는 것이 좋습니다. 평소 연습은, 중간층 데이터베이스에 가상의 논리의 데이터베이스를 도입하지만, 물리적 데이터베이스의 복수으로 나누어 져 있습니다. 이 응용 프로그램의 투명성을 달성하기 어렵 기 때문에 이것은 덜 "우아한"솔루션입니다. 즉, 타협 연구 및 개발, 데이터베이스의 일부를 희생 할 수 있어야합니다. 일반적인 기술 솔루션으로 나눌 수 있습니다에 : 클라이언트, 프록시, 사이드카 세 가지가 더 (컨테이너 배포가 사이드카 모드 간주 될 수 있습니다) 프록시 모드를 사용하는 것이 좋습니다.

4)베이스 층 분산 데이터베이스

더 많은 "하위 라이브러리 하위 테이블"접근 방식은 더 급진적 인 분산 데이터베이스를 직접 사용하는 것입니다. 이 큰 담체 (용적 처리량) 용액을 제공 하였다. 최근 몇 년 동안, 분산 데이터베이스, 프로모션 착륙 성숙하고, 주요 장면을 사용하려고하기 시작했다.

3.3 개체 정보

그림 3

오라클 객체, 수정에 고려의 다른 지점과 각하십시오. 이 보고서는 데이터의 요약을 제공하지만, 또한 찾을 상세한 데이터를 쉽게 제공합니다.

1) 표

테이블의 개수가 많음, 데이터 사전의 크기에 직접적인 영향, 따라서 데이터베이스의 전반적인 효율성. 보기의 MySQL의 관점에서, 우리는 파일 핸들과 같은 문제를 고려해야합니다. 이 표시등은이 상황에 따라 적절하게 고려되어야한다, 같은 명확하지 않다. 여기에 더 많은 데이터를 하나 개의 데이터베이스 테이블에 너무 많은 데이터를 피하기 위해, 건축 수준을 고려하는 것입니다. 20000 최적화 케이스에 최적화 된 통합, 단일 라이브러리 (100) 000 표, 성능 저하를 경험했다. 당신은 MySQL의를 선택하면 5000 단일 데이터베이스 테이블 이하를 권장, 라이브러리 * 테이블의 총 수는 20,000를 초과하지 않습니다.

2) 표 (큰 테이블)

단일 테이블의 스케일 제어 설계, 액세스 성능에 직접적인 영향의 주요 포인트 중 하나입니다. 위의 큰 테이블은 분할 원칙을 고려해야한다. 어떤 일반적인 규칙 테이블의 크기는이이 매개 변수에 의해 구성 할 수 없습니다. 이것은 2 차원 물리적 크기 또는 레코드의 수에 따라 제공 될 수있다. 임계 값을 낮게 설정되도록 더 복잡한 액세스, 그것은 권장 여기서 중요한 점은 다음과 같은 접근 방법의 목록이 간단한 KV 액세스 유형, 더 큰 괜찮 규모는 것이다. 선택 MySQL은, 등 좋은 장면이 아닌 복잡한 쿼리와 관련된 큰 테이블이나 테이블, ES, SOLR + HBase를 등 비동기 처리 복잡한 쿼리를 고려 될 수있다.

3) 테이블 (파티션 테이블)

9i의에서 10g부터 오라클의 파티셔닝 기능 향상을 성숙. 오라클은 엄청난 양의 데이터를 처리 할 수있는 무기가 될했다고한다. 그러나 MySQL을 위해, 그것은 여전히 ​​분할을하지 않는 것이 좋습니다. 한편, 하드웨어 성능의 향상과 함께, 단일 테이블 지지력은 커질 수 있으며, 다른 한편으로는, MySQL은 "DDL 크게", "변경 잠금"및 기타 문제에 직면 구역을 사용할 필요가있다. 팀 데이터베이스가 중간층의 좋은 제어 할 수 있다면, 덜 복잡한 하위 테이블 기술을 사용하는 것이 좋습니다. 이것은 약간 연구 개발의 양을 증가하지만, 운영 및 유지 보수, 많은 장점에 대한 수 있습니다.

4) 필드 (대형 오브젝트)

데이터베이스에서, 그것은 큰 개체 사용하지 않는 것이 좋습니다. 당신이 사용하는 경우, 업데이트 작업을 활용하고, 신속하게 제거. 데이터베이스의 대형 개체 기능, 그것은 맛입니다. 데이터베이스 자체의 ACID 능력, 데이터를 저장하는 것이 더 중요에 집중해야한다.

그림 4

5) 지수 (B 트리)

너무 많은 인덱스는 DML 효율에 영향을 미치는 공간을 많이 차지합니다. "인덱스 / 테이블"에 의해 일반적으로 합리적인 수준의 인덱스의 수를 반영합니다. 상황에 따라 적절하게 고려 될 수있는 제안 값은 없습니다. 데이터베이스의 경우, 비슷한 문제를 가지고하는 방법은 "전략적 인덱싱 전략을 구축 할 수 있습니다." 이때 테이블 (선택 후아 공장 - "대용량 데이터베이스 솔루션"책)을 참조 할 수, 인덱스 요구 사항을 골프장. 인덱스를 유지하기 위해 과학적으로 만듭니다.

6) 색인 (기타)

보통 B의 + 트리 인덱스 오라클의 추가는 또한 인덱스의 다른 유형을 지원합니다. 다른 데이터베이스를 선택하면,이 인덱스는 다른 방법으로 달성 재활을 필요로합니다.

7)보기

보기, 상황에 따라 논리 패키지 SQL 문 (예 : 보안 등) 의미가 있습니다. 그러나 오라클은 최적화 프로그램 (이 책의 저자에 의해 쓰여진 "SQL 최적화 모범 사례"에서 찾아 볼 수있다)이 지역에 많은 일을했다, 더 높은 요구 사항이 있습니다. MySQL을 들어, 사용 변화를 고려하지 않는 것이 좋습니다.

8) 트리거 / 프로 시저 / 함수

데이터베이스의 경우, 계산 부하 개의 저장 용량. 전체 인프라 확장 어려운 부분의 구성 요소로서, 중앙 데이터베이스 기능이 매우 중요하다 재생 해보십시오. 저장 용량의 조건과 비교하여 연산 능력은 애플리케이션 층을 통해 해결 될 수 있고, 애플리케이션 레이어는 쉽게 확장 가능하다. 또한, 계정으로 응용 프로그램 측의이 부분에서 고려 향후 유지 보수, 이동성 및 기타 요인을 복용을 해결합니다.

그림 5

9) 서열

오라클은 순서대로 증가, 비 연속 보호 서비스 번호를 제공 할 수 있습니다. MySQL은 비슷한 구현이있다, 그것은 자기 통전 특성에 의해 수행된다. 이 부분은 마이그레이션을 할 수 있어야하지만, 동시성의 양이 매우 큰 경우, 또한 빠의 솔루션을 사용하여 고려할 수 있습니다.

10) 동의어

동의어는 상관없이 데이터베이스가 유혹 가을해야하는지, 성능 데이터 연결되지 않습니다. 분할 작업은 이러한 특성에 더 이상 의존, 결국 간주되어야한다.

3.4 액세스 기능

6

지난 24 시간에 대부분의 데이터베이스 DML TOP20 시간, 여기에 수집. 이 직접 대상 운영 체제의 현재 "핫스팟"을 반영한다. 이러한 개체를 선택 후 필요, 마이그레이션하기 전에 성능 평가에 초점을 맞 춥니 다. 이러한 개체의 뜨거운 압력을 줄일 수, 분할, 캐싱 및 다른 방법을 고려합니다. 이러한 개체는 더 제안이 구축하는 것입니다, 한정되는 것은 아니다 "비즈니스 압력 모델을." 전체 이해와 평가에 의해 사업 후, 추상적 인 서비스 로직은 압력 데이터 모델로 변환된다. 어려움은 여기에 추상적 인 서비스 로직의 능력과 트래픽 모듈의 비율의 평가에있다.

다음 의사 코드와 유사한 형태 :

그림 7

위의 의사 코드에 따르면 스트레스 테스트 코드를 컴파일 할 수있다. 테스트 코드 압력 시뮬레이션 테스트를 생성하는 도구의 숫자를 호출합니다. 이 시스템 변환, 업그레이드, 확장 평가 등 의미있는 새로운 하드웨어보세요. O 동작에 특히 새로운 기술적 과제는이 평가 방법에 의해 확인 될 수 있고, 요구를 충족시킨다. 비즈니스의 언어를 더 사용은 이전과 O.에 운반 능력의 변화 후 비교 이것은 가능한 기술이 하나의 요인을 고려할지 여부를 결정합니다. 물론 단지 DML을 포함하여 위의 정보는, 쿼리 부분이 포함되지 않은 데이터는 오라클 AWR에서 얻을 수있다. 더 완벽한 응용 프로그램은 전체 링크를 할 수있는 측정 된 압력과 함께 고려 될 수있다.

3.5 자원 소비

그림 8

여기에 자원 사용의 가장 최근의 24 시간이다. 이 데이터는 두 가지 목적이 있습니다 :

1) 전체 부하를 평가

인덱스는 다른 데이터베이스와 유사하게 직접 할 수없는 오라클의 디스플레이의 척도이기 때문입니다. +는, 기록 데이터의 전문 지식에 의존하는 하중 압력을 평가할 수 있습니다. 다른 대안 기술 솔루션의 평가를위한 기준 중 하나. 이것은 (예 : 사용자의 호출 등) 몇 가지 지표 중 하나입니다, 후속 테스트 및 다른 작업을 안내하는 정량적 지표로 변환 할 수 있습니다.

2) 평가 초크 포인트

저명한 경우 인덱스를 들어, 당신이 테스트 세션, 기술 위험의 감소 가능성에 초점을 맞춘 설계 단계에서 다른 옵션을 고려 마이그레이션 할 때 가능한 한 것으로, 기존 사업에 병목 현상이있는 것을 의미한다.

3.6 SQL 문

그림 9

SQL 문, 가장 어려운 부분 전체 마이그레이션 작업을 다시 작성합니다. 그것은 완전히 재구성하지 않는 한, 그렇지 않으면 SQL 작업을 다시 작성하는 문제이다. 그것은 양, 복잡성을 다시 작성 포함, 및 기타 콘텐츠의 성능 비교, 많은 사람들은 여전히 ​​수동으로 검사를 완료해야합니다.

나는이 경험 한 프로젝트 팀은 이전의 "구조 +의 SQL"의 프로젝트를 완료하는 데 한 달의 시간을 보냈지 만 후속와 문 최적화를 완료하는 데 삼개월했다, 심지어 구조 조정. 문은 성능 요구 사항을 충족 할 수없는 후에이 이동하는 이유는 라인에 있습니다. 어떤 매우 고통스러운 과정을 조절하면서, 라인의 가장자리에 있습니다. 따라서, 기존의 SQL 케이스의 조기 발견은, 작업 부하, 재 작성의 어려움, 성과 평가의 평가는 중요한 의미가있다. 그리고이 부분의 위에 다음의 치수를 포함 사상 사용자 SQL (상세를 열고 스위치, SQL의 전체 량을 나타내는)의 모든 분석을 수집하는 것이다.

SQL 1)의 총 개수

표시등이 대략 바쁜 비즈니스 학위를 반영합니다. 또한, 비율은 문제의 후속 문장의 분석을 기반으로 사용할 수 있습니다.

2) 긴 SQL

여기에 문의 지정된 문자 수를 초과, 임계 값 매개 변수를 통해 구성 할 수 있습니다. 당신의 MySQL을 고려하는 경우, SQL의 "단정"사용하는 것이 좋습니다 복잡한 SQL의 얼굴은 일반적으로 성능이 저하됩니다. 너무 오래 이러한 진술은 주목할만한 오브젝트가 들어 적어도 쉽게 문 문제입니다.

3) ANTI SQL

역방향 조회를 데이터베이스에 대처하기가 더 어렵다,이 부분은 더 테스트 최적화 프로그램입니다. MySQL의 최신 버전이지만, 역 쿼리 최적화가 잘되어있다,하지만이 부분은 여전히 ​​우려의 원인이됩니다.

4) 오라클 구문 SQL

오라클 특성 표현 마이그레이션 프로세스에 필요한 오라클 파생어 (예를 들어, 특정 함수, 의사 컬럼 등)을 갖는다. 물론, 지금은 일부 제조 업체는 자사 제품에 오라클 구문과 호환되는지 발표뿐만 아니라, 특별 시험을하는 분들에게 추천.

5) 3+ 테이블 SQL 가입

멀티 테이블 협회, 시험은 상대적으로 최적화합니다. 특히 낮은 상관 관계 표는 MySQL의 효율성 사이에 두 개 이상의 관련 테이블의 사용을 권장하지 않습니다. 여기에 나열된는 3이며, 관련 쿼리 위, 변경 고려해야합니다. 특히 복잡한 쿼리를 완료하는 데 자신의 빅 데이터 플랫폼을 언로드 고려한다.

6) 하위 쿼리의 SQL

위의 가지 하위 쿼리, MySQL은 좋지 않다. 최적화는 어느 정도 최적화 된,하지만 관심의 계속 가치가 될 수 있지만.

저자 : 한 펭

공공 시작 번호 "한 펭 채널"환영주의.

출처 : 기술의 CreditEase 연구소

추천

출처blog.51cto.com/14159827/2416985