튜닝 방법

📌 테이블 생성

Engine 타입

  • 테이블 생성 시, Engine 타입은 솔루션의 기본값인 InnoDB 를 사용해야 합니다.

  • 다른 타입의 Engine을 사용할 경우 테이블의 깨짐 등의 문제 발생

Character set, Collation

  • Character set: utf8mb4

  • Collation: utf8mb4_general_ci

  • Character set 과 Collation 는 위에 명시된 솔루션 기본값을 사용해야 합니다.

  • 솔루션 기본값과 다르게 사용할 경우 테이블 간 조인(Join) 시 에러가 발생합니다.

    • Error Code : 1267. Illegal mix of collations

Primary key

  • Primary Key는 필수로 생성해야 합니다.

  • InnoDB 엔진의 테이블은 Primary key 기반으로 정렬 및 저장되기에 필수적으로 필요합니다.

Comment

  • 테이블 생성 및 컬럼 추가 시 Comment를 작성해야 합니다.

  • Comment을 작성해야만 해당 테이블이나 컬럼의 용도를 정확하게 확인할 수 있습니다.

Prefix

  • 테이블 생성 및 컬럼 추가 시 접두사(prefix)를 사용해야 합니다.

  • 솔루션 자동 패치에서 동일한 테이블이나 컬럼이 추가될 경우 오류가 발생하기 때문에 업체만의 접두사를 만들어 사용해야 합니다.

  • es_ , zz_ 는 솔루션에서 사용하는 접두사로, 튜닝 시 사용 금지합니다.

솔루션 제공 기본 데이터

Table, Column

  • 솔루션에서 기본적으로 제공하는 테이블 및 컬럼명은 수정/삭제를 금지합니다.

  • 솔루션에서 사용하는 부분이기 때문에 수정이나 삭제 시 사이트 오류가 발생합니다.

Column Data Type

  • 솔루션에서 기본 제공하는 컬럼의 데이터타입 수정을 금지합니다.

  • 솔루션 자동 패치 시 원복 또는 다른 형태로 변경되기에 필요한 경우 컬럼을 추가적으로 만들어 사용해야 합니다.

📌 컬럼 생성

Default Value

  • NotNull 컬럼인 경우 기본값을 지정 하셔야 합니다.

  • NotNull 컬럼일 경우 기본값을 설정하지 않으면 데이터 무결성 오류가 발생할 수 있습니다.

Comment

  • 컬럼 추가 시 Comment를 작성해야 합니다.

  • Comment을 작성해야만 해당 컬럼의 용도를 정확하게 확인할 수 있습니다.

📌 쿼리 작성

문자형, 숫자형 데이터 타입 주의

  • 문자형, 숫자형 데이터 타입에 주의하여 사용해야 합니다.

  • 문자형일 경우 '' 사용 필수입니다.

  • 인덱스에 포함된 컬럼인 경우 인덱스를 사용할 수 없습니다.

SELECT 절 '*' 사용 자제

  • SELECT 절의 '*' 사용은 자제하고 가능한 필요한 컬럼만 사용해야 합니다.

  • 사용되지 않을 불필요한 데이터를 반환하거나 자원을 사용할 경우 쿼리 실행 속도에 영향을 줍니다.

WHERE 절 조회 조건 추가

  • WHERE 절에 필수로 조회 조건 작성해야 합니다.

  • 조회 조건이 없을 경우 테이블 전체 조회 발생하여 쿼리 실행 속도에 영향을 줍니다.

JOIN, GROUP BY, ORDER BY

  • 불필요한 JOIN, GROUP BY, ORDER BY 사용은 지양합니다.

  • 불필요한 JOIN 사용 예

  • 불필요한 GROUP BY 사용 예

조건 컬럼(좌변) 가공 대신 상수 부분을 가공하여 사용

  • 인덱스 컬럼이 비교되기 전에 변형이 일어나는 경우 인덱스를 사용할 수 없습니다.

📌 솔루션 수정

DBTableField

DBTableField 란

고도몰 솔루션에서 사용하는 모든 Table 과 Column을 정의해 둔 Class 이며 자동으로 Table 과 Column을 불러와서 사용할수 있게 해주는 기능을 합니다.

DBTableField 위치

고도몰 원본 소스의 Bundle/Component/Database 에 있으며 파일명은 DBTableField.php 입니다.

Table, Column 추가 방법

  • 사용자 소스의 module/Component/Database 폴더 하위에 DBTableField.php 파일을 생성을 합니다.

  • 원본 소스의 Component 를 상속하여 확장 개발을 합니다.

Table 추가

  • es_testTable 라는 Table 추가시 Methods명은 table + es_를 뺀 첫문자 대문자인 table 이름 입니다.

  • val 은 Column 명, typ 은 Column Type 로서 숫자형은 i 문자형은 s, def 은 기본값 입니다.

Column 추가

  • 기존의 Methods 를 그대로 사용을 하고 원래 Methods 의 것을 가지고 와서 처리합니다.

  • 아래는 상품 Table에 Column을 추가하는 예제입니다.

Last updated

Was this helpful?