Developer/DataBase (15) 썸네일형 리스트형 [MySQL] MySQL 파티션 주의사항 [ 파티션의 제한 사항 ] 숫자 값(INTEGER) 에 의해서만 파티션 가능 키 파티션은 해시 함수를 MySQL이 직접 선택하기 때문에 컬럼 타입 제한 없음 최대 104개의 파티션을 가질 수 있음(서브 파티션까지 포함) 파티션 테이블에서는 외래키 사용 불가 전문 검색 인덱스 생성 불가 [MySQL] MySQL 파티션 개요 파티션이란, MySQL 서버의 입장에서는 데이터를 별도의 테이블로 분리해서 저장하지만, 사용자 입장에서는 여전히 하나의 테이블로 읽기와 쓰기를 할 수 있게 해주는 솔루션이다. 테이블의 데이터가 많아진다고 해서 무조건 파티션을 적용하는 것이 효율적인 것은 아니다. 하나의 테이블이 너무 커서, 인덱스의 크기가 물리적인 메모리보다 훨씬 크거나, 데이터 특성상 주기적인 삭제 작업이 필요한 경우 등이 파티션이 필요한 대표적 예이다. 파이션 처리 과정을 보기 위해, 간단한 테이블을 생성한다. CREATE TABLE tb_article ( article_id INT NOT NULL, reg_date DATETIME NOT NULL, ... PRIMARY KEY(article_id) ) -- reg_date 에서 연도.. [MySQL] 사용자 정의 변수 선언 방법 쿼리문을 짜다보면, 임의 변수 선언이 필요한 경우가 있다. set @var := 'Hello' set @var1 = 'Hello', @var2 = 'Hi' 변수 값을 할당하는 SET 문장은 "=" 또는 ":=" 를 사용하여 선언할 수 있다. SET @temp_num := 1; SELECT (@temp_num := @temp_num + 1); 커넥션에서 정의된 사용자 변수는 SQL 문장에서 그 값을 참조해서 다른 연산을 수행할 수도 있다. 위와 같은 연산을 사용할 때, 주의해야할 점은, 매뉴얼에, "절대 동일 SQL 문장에서 변수에 값을 할당하고 동시에 값을 참조하지 말라"는 주의사항이 있다. 일반적으로 사용자가 기대하는 작동 결과를 보여주지만, 이 결과는 MySQL에서 보증하지 않는 결과이다. 따라서, .. [MySQL] SELECT 결과를 INSERT 하기 여러행을 한번에 인서트 할 때, 혹은, 테이블에서 셀렉트한 값을 다른 테이블에 인서트 하는 경우에 사용할 수 있다. INSERT INTO [테이블명1] (COLUMN1,COLUMN2,COLUMN3,COLUMN4) SELECT RESULT1,RESULT2,RESULT3,RESULT4 FROM [테이블명2] WHERE RESULT1 > 0; INSERT INTO의 컬럼 개수와 아래 SELECT 문의 컬럼 개수 및 타입 통일은 필수 SELECT 구문에 여러 테이블을 JOIN해서 사용할 수도 있기 때문에 아주 편리하게 사용 가능하다. [MySQL] SELECT 결과를 UPDATE 하기 SELECT한 결과로 특정 컬럼의 값을 UPDATE 시킬 수 있다. UPDATE [테이블명1] as t1, [테이블명2] as t2 SET t1.COLUMN1 = t2.COLUMN2 WHERE t1.COLUMN3 = t2.COLUMN4; set은 테이블2의 값을 테이블1으로 update 시키겠다는 의미 where 절은 join과 비슷한 용도로 사용할 수 있다. where 절에 쓰지 않고 아래처럼 테이블을 조인해서 사용할 수 있다. UPDATE [테이블1] INNER JOIN [테이블2] ON [테이블1].COLUMN3 = [테이블2].COLUMN4 SET [테이블1].COLUMN1 = [테이블2].COLUMN2; UPDATE 구문에 JOIN한 테이블을 넣어서 사용할 수 있다. SQL 인덱스 구조 및 탐색, 기본 사용법 2.1 인덱스 구조 및 탐색 출처 : 친절한 SQL 튜닝 데이터베이스 테이블에서 데이터를 찾는 방법: 1. 테이블에서 전체 스캔 2. 인덱스 이용 인덱스는 큰 테이블에서 소량 데이터 검색 시 사용. 온라인 트랜잭션 처리(Online Transaction Processing, OLTP)시스템에서는 소량 데이터를 주로 검색하므로 인덱스 튜닝이 중요 세부 인덱스 튜닝 방법 1. 인덱스 스캔 효율화 튜닝 2. 랜덤 액세스 최소화 튜닝 -> 성능에 미치는 영향이 크다 : 인덱스 스캔 후, 테이블 레코드를 액세스할 때, 랜덤 I/O 방식 사용 ex) 학생 리스트를 이름과 시력 순으로 정렬해 두었다면, 특정 이름, 특정 시력을 가진 학생을 찾기 쉽다. 시력과 이름 순으로 정렬해두었다면 효율성 떨어진다. 데이터 베이스.. SQL 처리 과정과 I/O 1.1 SQL 파싱과 최적화 SQL : Structed Query Language SQL은 기본적으로 구조적(Structured)이고, 집합적(set-based)이고 선언적(declarative)인 언어 SQL 최적화 : DBMS 내부에서 프로시저 작성하고, 컴파일해서 실행 가능한 상태로 만드는 것 - SQL 파싱 파싱 트리 생성 : SQL 문을 이루는 개별 구성요소를 분석해서 파싱 트리 생성 Syntax 체크 : 문법 오류 없는지 확인 Semantic 체크 : 의미상 오류가 없는지 확인 - SQL 최적화 -> 옵티마이저 미리 수집한 시스템 및 오브젝트 통계정보를 바탕으로 다양한 실행 경로 생성 후 비교한다. -> 성능 결정의 핵심 엔진 - 로우 소스 생성 -> 로우 소스 생성기 SQL 옵티마이저가 선택.. 이전 1 2 다음