튜닝 방법
개발 가이드를 준수하지 않아 발생하는 모든 문제는 전적으로 이용자에게 책임이 있습니다!
📌 데이터베이스 생성
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
솔루션에서 기본 제공하는 컬럼의 데이터타입 수정을 금지합니다.
솔루션 자동 패치 시 원복 또는 다른 형태로 변경되기에 필요한 경우 컬럼을 추가적으로 만들어 사용해야 합니다.
📌 쿼리 작성
문자형, 숫자형 데이터 타입 주의
문자형, 숫자형 데이터 타입에 주의하여 사용해야 합니다.
문자형일 경우
''
사용 필수입니다.인덱스에 포함된 컬럼인 경우 인덱스를 사용할 수 없습니다.
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