728x90 분류 전체보기57 저장 프로시저(Store Procedure) 1. 저장 프로시저란? 일련의 작업 절차를 정리해서 저장한 것 여러 SQL문을 묶어서 미리 정의해 두고 하나의 요청으로 실행할 수 있음 자주 사용되는 복잡한 작업들을 간단하게 실행 할 수 있음 Application에서 직접 모든 작업을 요청하지 않아도 되기 때문에 부하가 줄어들고 보안이 향상됨 검증되지 않은 저장 프로시저를 실행하는 것은 매우 위험함 MySQL은 5.0버전부터 사용 가능 2. 저장 프로시저 사용 2-1. 저장 프로시저 만들기 BEGIN에서 END까지가 저장 프로시저의 본체이다. 시작 부분에 BEGIN, 끝 부분에 END를 붙여 저장 프로시저의 명령 범위를 명확히 하고 있다. 구분 문자(;) 변경하기 명령문이 완성되지 않은 상태에서 실행되는 부분을 막기 위해 저장 프로시저에서 END를 입력.. 2022. 4. 14. 쿼리 작성 및 최적화 1. MySQL 연산자와 내장 함수 Type 비교 MySQL은 숫자 타입과 문자열 타입 간의 비교에서 숫자 타입을 우선시하므로 문자열 값을 숫자 값으로 변환한 후 비교를 수행한다. MySQL에서는 정해진 형태의 날짜 포맷으로 표기하면 MySQL서버가 자동으로 DATE나 DATETIME 값으로 변환한다. BETWEEN, IN, NOT IN BETWEEN : BETWEEN이 선형으로 인덱스를 검색해야 하는 것과 달리 IN은 동등 비교를 여러번 수행하는 것과 같은 효과가 있기 때문에 여러 column의 인덱스를 최적으로 사용할 수 있다. IN : IN 연산자에 상수값을 입력으로 전달하는 경우는 다른 DBMS만큼 최적화해서 수행할 수 있다. 하지만 IN 연산자의 입력이 상수가 아니라 서브쿼리인 경우에는 상당히 .. 2022. 4. 13. 파티션(Partition) 1. 파티션(Partition)이란? MySQL 서버 입장에서 데이터를 별도의 테이블로 분리해서 저장하지만 사용자 입장에서는 여전히 하나의 테이블로 읽기와 쓰기를 할 수 있게 해주는 솔루션이다. 일반적으로 DBMS의 파티션은 하나의 서버에서 테이블을 분산하는 것이며, 원격 서버 간에 분산을 지원하는 것은 아니다. 2. 파티션을 사용하는 이유 한 테이블이 너무 커서 인덱스의 크기가 물리적인 메모리보다 훨씬 크거나, 데이터 특성상 주기적인 삭제 작업이 필요한 경우 등이 파티션이 필요한 대표적인 예이다. 3. 단일 INSERT와 단일 또는 범위 SELECT의 빠른 처리 레코드를 변경하는 쿼리를 실행하면 인덱스의 변경을 위한 부가적인 작업이 발생한다. 이때 인덱스의 크기가 너무 크다면 쿼리 수행 속도가 느려지게.. 2022. 4. 12. 장애 처리 1. 서버 과부하 실제 사용자의 수가 늘었거나 사용자의 행동 패턴이 바뀌었을 때 MySQL 서버의 부하가 높아질 수 있다. 사용자의 행동 패턴이 바뀌는 것은 주로 애플리케이션의 업그레이드나 기능 개선으로 발생할 때가 많은데, 이는 쿼리나 실행 빈도를 적절히 튜닝한 후 애플리케이션을 배포하거나 릴리즈해서 충분히 예방할 수 있다. 사용자의 수가 늘어나는 부분에 대비해서 MySQL 서버가 평상시에는 대략 2~30%의 자원만 사용하도록 유지하기도 한다. 하지만 너무 과다하게 서버를 투입하는 것은 비용적인 문제도 있으므로 사용자 수가 급작스럽게 증가할 때를 대비해 확장 가능한 구성으로 준비해 두는 편이 좋다. 1-1. 운영체제의 유틸리티를 이용해 장비의 부하 확인 유닉스 계열의 운영체제에서는 uptime 명령으로.. 2022. 4. 11. 이전 1 ··· 10 11 12 13 14 15 다음 728x90