[DB] 성능 최적화
·
Tech/DB
바인드 변수로 플랜을 확인해야 한다 옵티마이저는 상수 값이 다르면 서로 다른 쿼리로 인식해 파싱을 새로 한다. 프로그램에 바인드 변수로 되어있다면 상수값 대신 바인드 변수로 플랜을 확인해야 한다. ACCESS FULL테이블 FULL SCAN을 의미하며 아래와 같은 이유로 발생한다 테이블 FULL SCAN을 의미하며 아래와 같은 이유로 발생한다. 해당 쿼리에 대한 적절한 인덱스가 존재하지 않으므로 필요한 인덱스 생성하여 해결한다. 인덱스는 존재하나 부정확한 통계정보로 인해 인덱스를 차지 않는 경우로, 최신 통계 정보를 구성하거나 힌트절을 사용해 해결한다. 테이블 FULL SCAN하는 것이 인덱스 통한 랜덤 엑세스보다 유리한 경우로 데이터 조회 범위가 커 인덱스를 사용하는 것이 효용성이 없는 것이다. 서브쿼..
[DB] Query Plan
·
Tech/DB
쿼리 플랜 (실행 계획) 옵티마이저는 주어진 환경(통계정보, SQL문) 하에 최적의 실행계획을 제공한다. 이를 통해 어떤 경로로 테이블에 접근하고, 어떤 방식으로 조인하며, 어떤 인덱스 자원을 사용하는지 등에 대한 최적화 방식을 알 수 있다. 옵티마이저 측정값을 통한 쿼리 플랜 해석 Cost : 오퍼레이션 수행에 필요한 예측 비용으로 COST 수치가 낮을 수록 좋은 성능 예상되나 반드시 빠르다고 할 수는 없다. Card : 접근하는 레코드 수 Bytes : 각 실행 단계에서 Access된 Byte 수를 의미한다. ( card 개수 * 1 row의 총 길이) Cardinality : 각 실행 단계에서 Access된 row 수를 의미한다. 쿼리 플랜을 해석하는 순서 레벨(깊이)가 다른 경우 안쪽 레벨 부터 ..
그림으로 배우는 클라우드 인프라와 API의 구조-1
·
Tech/Cloud
1장 클라우드 컴퓨팅과 API의 역할 1.1 클라우드 컴퓨팅 "누가 사용하는가" 와 "무엇을 제공하는가"의 관점으로 분류 1) 누가 사용하는가 - 특정 기업 내부 사용자(private cloud) - 여러 기업의 사용자가 모두 (public cloud) 2) 무엇을 제공하는가 - 어플리케이션 (최종 사용자가 바로 사용 가능한 어플리케이션이나 서비스) -> SaaS (SW as a Service - 개발 및 운영 환경 (개발자가 어플리케이션 개발할 수 있는 환경 : OS, 미들웨어) -> PaaS (Patform as a Service) - 가상화된 시스템 인프라 (관리자가 시스템 구축하거나 운영할 수 있는 환경 ) -> IaaS (InfraStructure as a Service) *단, Iaas 위에 ..
SQL/NoSQL
·
Tech/Worklog
SQL 장점/특징 명확하게 정의된 스키마 (필드 이름과 데이터 유형. 구조에 맞는 레코드만 추가) 데이터 무결성 보장 (정확성, 일관성) 데이터 중복 피하기 위해 관계 이용 대체로 수직적 확장 지원 수평적 확장(데이터베이스 서버 성능 향상 (ex.CPU 업그레이드) 수직적 확장(더 많은 서버 추가. 데이터베이스가 전체적으로 분산(하나의 데이터베이스에서 작동하나 여러 호스트에서 동작 단점 덜 유연함. 데이터 스키마를 사전에 계획하고 알려야 함 관계를 맺고 있어 조인문이 많은 복잡한 쿼리가 만들어질 수 있음 사용하면 좋은 경우 관계 맺고 있는 데이터가 자주 변경되는 애플리케이션의 경우 (nosql의 경우 해당 데이터가 있는 모든 컬렉션 수정해야해 비효율적) 변경될 여지가 없고, 명확한 스키마가 사용자와 데이..