■ 테이블과 컬럼 ▶︎ 테이블 맨 끝에 \G를 붙이는것과 안붙였을때의 차이가 조금 있습니다. G\를 안붙였을 경우 결과를 테이블 형식으로 보여주고 붙였을 경우 리스트 형식으로 보여줍니다. SHOW CREATE TABLE 명령문 mysql> show create table Account; +---------+-------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +---------+-------------------------------------------------------------------------------..
■ 테이블 정보와 컬럼 정보 ▶︎ 테이블 정보 맨 끝에 \G를 붙이는것과 안붙였을때의 차이가 조금 있습니다. G\를 안붙였을 경우 결과를 테이블 형식으로 보여주고 붙였을 경우 리스트 형식으로 보여줍니다. •SHOW CREATE TABLE Statement mysql> show create table Account; +---------+-------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +---------+---------------------------------------------------------------..
■ AES 암호화 기법 MySQL에서 제공하는 암호화 기법은 여러가지가 있습니다. https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html 그중에 키를 이용한 AES 암호화 기법이 있습니다. 이것에 대해 한번 알아보겠습니다. 이 암호화 기법은 AES 암호 알고리즘(Advanced Encryption Standard)이라고 합니다. 다음을 참고하시면 자세한 내용을 확인해 보실 수 있습니다. https://namu.wiki/w/AES ■ 암호화 설정 암호화 방식은 서버 변수로 설정을 합니다. 이 설정 방법에 따라 강력한 암호화를 설정할 수 있습니다. 대신 그만큼 성능이 낮아지는것은 참고하셔야 합니다. 서버변수중 block_encryption_mod..
■ SHOW ENGINE 명령어 사용법 SHOW ENGINE engine_name {STATUS | MUTEX} SHOW ENGINE은 스토리지 엔진에 대한 운영 정보를 표시합니다. PROCESS 권한이 필요합니다. 이 문장에는 다음과 같은 다양한 방법이 있습니다. SHOW ENGINE INNODB STATUS SHOW ENGINE INNODB MUTEX SHOW ENGINE PERFORMANCE_SCHEMA STATUS SHOW ENGINE INNODB STATUS 표시는 InnoDB 스토리지 엔진의 상태에 대한 표준 InnoDB 모니터의 광범위한 정보를 표시합니다. InnoDB 모니터 바로가기 SHOW ENGINE INNODB MUTEX는 InnoDB 뮤텍스 및 rw-lock 통계를 표시합니다. SH..
■ Prepared 명령(Prepared Statement) • PREPARE Statement • EXECUTE Statement • DEALLOCATE PREPARE Statement MySQL 5.7은 server-side prepared statements을 지원합니다. 이 지원은 효율적인 클라이언트 / 서버 바이너리 프로토콜을 활용합니다. 매개 변수 값에 자리 표시 자와 함께 prepared statements을 사용하면 다음과 같은 이점이 있습니다. + 실행될 때마다 명령문을 구문 분석하기위한 오버 헤드가 줄어 듭니다. 일반적으로 데이터베이스 응용 프로그램은 쿼리 및 삭제 WHERE, 업데이트 SET 및 삽입 VALUES와 같은 절의 리터럴 또는 변수값만 변경하여 대량의 거의 동일한 명령문을 ..
■ KILL 명령어 KILL [CONNECTION | QUERY] processlist_id mysqld에 대한 각 연결은 별도의 스레드에서 실행됩니다. KILL processlist_id 문으로 스레드를 강제 종료 할 수 있습니다. 스레드 프로세스 목록 식별자는 INFORMATION_SCHEMA PROCESSLIST 테이블의 ID 컬럼, SHOW PROCESSLIST 출력의 ID컬럼 및 성능 스키마 스레드 테이블의 PROCESSLIST_ID 컬럼에서 확인할 수 있습니다. 현재 스레드의 값은 CONNECTION_ID () 함수에 의해 리턴됩니다. KILL은 선택적 CONNECTION 또는 QUERY 수정자를 허용합니다. + KILL CONNECTION은 수정자가 없는 KILL과 같습니다. 연결이 실행중인..
명령어 형식 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문으로..
트랜잭션 문법은 다음과 같습니다. 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 ..
■ 파티션 관리 MySQL 5.7은 분할된 테이블을 수정하는 여러 가지 방법을 제공합니다. 기존 파티션을 추가, 삭제, 재정의, 병합 또는 분할할 수 있습니다. 이러한 모든 조치는 ALTER TABLE 문에 대한 파티션 확장을 사용하여 수행 할 수 있습니다. 파티션된 테이블 및 파티션에 대한 정보를 얻는 방법도 있습니다. 다음 섹션에서 이러한 주제에 대해 설명합니다. 노트 MySQL 5.7에서 파티션된 테이블의 모든 파티션은 같은 수의 서브 파티션을 가져야하며 테이블이 생성되면 서브 파티션을 변경할 수 없습니다. 테이블의 파티셔닝 구성표를 변경하려면 partition_options절과 함께 ALTER TABLE문만 사용해야 합니다. 이 절은 파티션된 테이블을 작성하기 위해 CREATE TABLE에서 사용..