□ InnoDB로 데이터를 가져올 때 오토커밋 모드는 모든 삽입에 대해 디스크로 로그 플러시를 수행하므로 오프시킵니다. 가져 오기 작업 중에 오토 커밋을 비활성화하려면 SET autocommit 및 COMMIT 문으로 감쌉니다. SET autocommit=0;... SQL import statements ... COMMIT; mysqldump 옵션 --opt는 SET autocommit 및 COMMIT 문으로 랩핑하지 않아도 InnoDB 테이블로 빠르게 가져 올수 있도록 덤프 파일을 작성합니다. □ 보조 키에 UNIQUE 제약 조건이 있는 경우, 가져 오기 세션 중에 고유성 검사를 일시적으로 해제하여 테이블 가져 오기 속도를 높일 수 있습니다. SET unique_checks=0;... SQL impor..
■ InnoDB AUTO_INCREMENT Lock 모드 innodb_autoinc_lock_mode 구성 매개 변수에 대한 세 가지 가능한 설정이 있습니다. 설정은 "전통", "연속"또는 "인터리브 된"잠금 모드에 대해 각각 0, 1 또는 2입니다. + innodb_autoinc_lock_mode = 0 (“전통(traditional)” lock mode) 전통적인 잠금 모드는 innodb_autoinc_lock_mode 구성 매개 변수가 MySQL 5.1에 도입되기 전에 존재했던 것과 동일한 동작을 제공합니다. 기존 잠금 모드 옵션은 시맨틱의 차이로 인해 "혼합 모드 삽입"과 관련된 문제와의 호환성, 성능 테스트 및 이전 버전과의 호환성을 위해 제공됩니다. 이 잠금 모드에서 모든 "INSERT-문과 ..
명령어 형식 TRUNCATE [TABLE] tbl_name TRUNCATE TABLE 명령문은 테이블의 내용을 완전하게 비웁니다. Drop 권한이 필요합니다. 테이블의 TRUNCATE TABLE은 HANDLER OPEN으로 열린 테이블의 모든 핸들러를 닫습니다. 논리적으로 TRUNCATE TABLE은 모든 행을 삭제하는 DELETE 문, 또는 DROP TABLE 및 CREATE TABLE 문 시퀀스와 유사합니다. 고성능을 달성하기 위해 데이터를 삭제하는 DML 방법을 무시합니다. 따라서 롤백할 수 없고 ON DELETE 트리거가 발생하지 않으며 부모-자식 외래 키 관계가있는 InnoDB 테이블에 대해 수행될 수 없습니다. TRUNCATE TABLE은 DELETE와 비슷하지만 DML 문이 아닌 DDL문으로..
■ MySQL이 메모리를 사용하는 방법 MySQL은 데이터베이스 작업 성능을 향상시키기 위해 버퍼와 캐시를 할당합니다. 기본 구성은 약 512MB의 RAM이 있는 가상 머신에서 MySQL 서버를 시작하도록 설계되었습니다. 특정 캐시 및 버퍼 관련 시스템 변수의 값을 증가시켜 MySQL 성능을 향상시킬 수 있습니다. 메모리가 제한된 시스템에서 MySQL을 실행하도록 기본 구성을 수정할수도 있습니다. 다음 목록은 MySQL이 메모리를 사용하는 몇 가지 방법을 설명합니다. 해당되는 경우 관련 시스템 변수가 참조됩니다. 일부 항목은 스토리지엔진 또는 기능에 따라 다릅니다. + InnoDB 버퍼풀은 테이블, 인덱스 및 기타 보조 버퍼에 대해 캐시된 InnoDB 데이터를 보유하는 메모리 영역입니다. 대량 읽기 조작..
■ XA 트랜잭션 ▶︎ XA 트랜잭션 SQL 문 ▶︎ XA 거래 상태 ▶︎ XA 거래에 대한 제한 InnoDB 스토리지 엔진에 XA 트랜잭션 지원이 제공됩니다. MySQL XA구현은 X/Open CAE 문서의 분산 트랜잭션 처리:XA 사양을 기반으로 합니다. 이 문서는 The Open Group에서 발행했으며 http://www.opengroup.org/public/pubs/catalog/c193.htm에서 볼 수 있습니다. 현재 XA 구현의 제한 사항은 아래에서 설명드립니다. 클라이언트 측에는 특별한 요구 사항이 없습니다. MySQL 서버에 대한 XA 인터페이스는 XA 키워드로 시작하는 SQL 문으로 구성됩니다. MySQL 클라이언트 프로그램은 SQL 문을 전송하고 XA문 인터페이스의 의미를 이해할 수..
■ SET TRANSACTION 문 SET [GLOBAL | SESSION] TRANSACTION transaction_characteristic [, transaction_characteristic] ... transaction_characteristic: { ISOLATION LEVEL level | access_mode } level: { REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE } access_mode: { READ WRITE | READ ONLY } 이 명령문은 트랜잭션 특성을 지정합니다. 쉼표로 구분된 하나 이상의 특성값 목록을 가져옵니다. 각 특성값은 트랜잭션 격리 수준 또는 액세스 모드를 설정합니다. 격리 수준은..
SAVEPOINT identifier ROLLBACK [WORK] TO [SAVEPOINT] identifier RELEASE SAVEPOINT identifier InnoDB는 SQL 문 SAVEPOINT, ROLLBACK TO SAVEPOINT, RELEASE SAVEPOINT 및 ROLLBACK에 대한 선택적 WORK 키워드를 지원합니다. SAVEPOINT문은 이름이 식별자여서 이름이 지정된 트랜잭션 세이브포인트을 설정합니다. 현재 트랜잭션에 이름이 같은 저장점(savepoint)이 있으면 이전 저장점이 삭제되고 새 세이브포인트가 설정됩니다. ROLLBACK TO SAVEPOINT 문은 트랜잭션을 종료하지 않고 트랜잭션을 이름이 지정된 세이브포인트로 롤백합니다. 세이브포인트가 설정된 후 행에 수행 ..
파티션을 재구성할시 보통 REORGANIZE PARTITION을 자주 사용합니다. 이때 몇가지 유의해야 할 사항이 있습니다. 바로 MAXVALUE 파티션 유무에 따른 재구성입니다. ■ 예제 테이블 CREATE TABLE dbadm.part_table_test ( `id` int(10) unsigned NOT NULL, `sec_id` int(10) unsigned NOT NULL, `target_date` datetime NOT NULL, PRIMARY KEY (id,target_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 /*!50500 PARTITION BY RANGE COLUMNS(target_date) (PARTITION part201912 VALUES LESS T..
트랜잭션 문법은 다음과 같습니다. START TRANSACTION [transaction_characteristic [, transaction_characteristic] ...] transaction_characteristic: { WITH CONSISTENT SNAPSHOT | READ WRITE | READ ONLY } BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE] SET autocommit = {0 | 1} 이 문법은 트랜잭션 사용에 대한 제어를 제공합니다 : + START TRANSACTION 또는 BEGIN 문법으로 새로운 트랜잭션을 시작합니다. + ..
■ 파티셔닝에 대한 제한 사항 이 글에서는 MySQL 파티셔닝 지원에 대한 현재 제한 사항에 대해 설명합니다. ▶︎ 금지된 문법. 파티셔닝 표현식에서는 다음 구성이 허용되지 않습니다. 저장 프로 시저, 저장 함수, UDF 또는 플러그인 선언된 변수 또는 사용자 변수 ▶︎ 산술 및 논리 연산자. 산술 연산자 +,-및 *는 파티셔닝 표현식에서 사용할 수 있습니다. 그러나 결과는 정수값 또는 NULL이어야합니다([LINEAR] KEY 파티셔닝의 경우 제외). DIV 연산자도 지원되며/연산자는 허용되지 않습니다. 비트 연산자 |, &, ^, 및 ~는 파티셔닝 표현식에서 허용되지 않습니다. ▶︎ HANDLER 문법. 이전에는 HANDLER문이 파티션된 테이블에서 지원되지 않았습니다. 이 제한은 MySQL 5.7...
■ 파티션 선택 MySQL 5.7은 명령문을 실행할때 주어진 WHERE 조건과 일치하는 행을 검사해야하는 파티션 및 하위 파티션의 명시적 선택을 지원합니다. 파티션 선택은 특정 파티션 만 일치하는지 검사하지만 두 가지 주요 측면에서 다르다는 점에서 파티션 정리와 유사합니다. 1. 점검할 파티션은 파티션 프루닝과 달리 자동으로 명령문을 발행하여 지정합니다. 2. 파티션 프루닝은 쿼리에만 적용되는 반면, 파티션의 명시적 선택은 쿼리와 다수의 DML문 모두에 대해 지원됩니다. 명시적 파티션 선택을 지원하는 SQL 문은 다음과 같습니다. 1. SELECT 2. DELETE 3. INSERT 4. REPLACE 5. UPDATE 6. LOAD DATA. 7. LOAD XML. 이 절의 나머지 부분에서는 방금 나열..
이 섹션에서는 파티션 정리(Partition 라고하는 최적화에 대해 설명합니다. 파티션 정리의 기본 개념은 비교적 간단하며“일치하는 값이 없는 파티션은 스캔하지 않습니다”라고 설명 할 수 있습니다. 이 명령문으로 정의된 파티션 된 테이블 t1이 있습니다. CREATE TABLE t1 ( fname VARCHAR(50) NOT NULL, lname VARCHAR(50) NOT NULL, region_code TINYINT UNSIGNED NOT NULL, dob DATE NOT NULL ) PARTITION BY RANGE( region_code ) ( PARTITION p0 VALUES LESS THAN (64), PARTITION p1 VALUES LESS THAN (128), PARTITION p2 ..