그 외

1. 마스터 DB Query 과다 사용으로 인한 서버 부하

📍 Slave 사용방법

  • Slave DB가 존재하는 상점에서만 사용할 수 있습니다.

  • 동적으로 DB의 값이 변경되는 쿼리는 사용하지 마세요.

  • 정적인 값을 보유한 쿼리인 경우 다음과 같이 DB 객체에 slave()를 한번 더 호출

    • master : $this->db->query_fetch()

    • slave : $this->db->slave()->query_fetch()

  • 만약, slave method를 사용하더라도 slave가 없는 경우 자동으로 master 전환 처리됨

  • 활용방법

    • 페이징 처리를 위한 count 쿼리

    • 실시간으로 update 된 데이터를 보여줄 필요가 없는 쿼리

    • 기타 설정을 저장하는 쿼리 등

    • 위 쿼리들에 대해서는 slave() 메소드를 붙여서 사용하시기를 권장합니다.

2. 분산서버를 고려하지 않고 기능을 만든 경우

⛔️ As-Is

namespace Controller\Front\File;

/**
 * 파일 등록 하는 클래스
 */
class FileUpload
{
    # write your code    
    
    ...
    
    Storage::disk(Storage::SOME_PATH, 'local')->upload($tmpFileNm, $newFileNm);
    
    ...
    
    # write your code    
}

✅ To-be

namespace Controller\Front\File;

/**
 * 파일 등록 하는 클래스
 */
class FileUpload
{
    # write your code    
    
    ...
    
    1. 고도몰의 게시판 첨부파일 저장 코드를 확인 하여 분산서버 사용 시 원본 서버에 파일이 저장되도록 수정
    2. 원본서버의 api 도메인에 파일 업로드 하는 api를 만들어 해당 api로 파일 전송하여 원본에만 파일이 저장되도록 수정
    3. 기타 방법으로 첨부파일이 분산서버가 아닌 원본 서버나 다른 서버에 저장되지 않도록 변경
    
    ...
    
    # write your code    
}

3. 고도몰이 정의한 DB의 값을 임의의 값으로 변경하는 경우

⛔️ As-Is

adminMenuNo = 'godo008***'

✅ To-be

# test가 아닌 임의의 4자리 문자열로 변경 필요
adminMenuNo = 'test******'

4. 모든 영향 범위에 튜닝 내용을 적용하지 않은 경우

⛔️ As-Is

<!--{ ? req.bdId == 'useras' }-->
<form id="asWrite" action="../board/board_ps.php" method="post" enctype="multipart/form-data" class="frmWrite">
<!--{ : }-->
<form name="frmWrite" id="frmWrite" action="../board/board_ps.php" method="post" enctype="multipart/form-data" class="frmWrite">
<!--{ / }-->

✅ To-be

<form name="frmWrite" id="frmWrite" action="../board/board_ps.php" method="post" enctype="multipart/form-data" class="frmWrite">

5. DB에 이미지 바이너리데이터를 넣은 경우

⛔️ As-Is

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABQODxIPDRQSEBIXFRQYHjIhHhwcHj0sLiQySUBMS0dARkVQWnNiUFVtVkVGZIhlbXd7gYKBTmCNl4x9lnN+gXz/2wBDARUXFx4aHjshITt8U0ZTfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHz/wAARCAMCAwIDASIAAhEBAxEB/8QAGwABAAIDAQEAAAAAAAAAAAAAAAECAwUGBAf/

✅ To-be

DB 테이블 컬럼에 as-is와 같은 이미지 바이너리 데이터를 절대로 넣지마세요.
특히 공용서버의 경우 부하 발생시 다른 상점도 영향을 받을 수 있어 차단될 수 있습니다.

6. NOT NULL 필드 추가 시 기본값 설정 필수

📍 기본값 지정

  • 필드 정의 시 DEFAULT 키워드를 사용하여 기본값을 지정하세요.

  • 예) ALTER TABLE your_table ADD COLUMN new_column VARCHAR(255) NOT NULL DEFAULT 'default_value';

Last updated

Was this helpful?