Auto Increment 컬럼이란 자동 증가 값을 가지는 컬럼으로 값을 직접 대입할 수 없습니다. 중간에 값을 삭제한다고 해서, 삭제된 값을 재사용 하지 않으며레코드가 적재될 때마다 1씩 증가하게 됩니다. Auto Increment 초기화 방법 1. Truncate Truncate 를 하면 Auto Increment 값이 초기화가 됩니다. 12345678910111213141516171819202122232425262728293031323334CREATE TABLE t1 ( id INT(11) NOT NULL AUTO_INCREMENT, t1_text VARCHAR(50), PRIMARY KEY(id)) AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4; INSERT INTO t..
Database/MySQL
상황 특정 서버에서 DUMP 한 아래 프로시저를 다른 서버에 반영하려고 합니다. 1234567CREATE DEFINER=test@localhost PROCEDURE TEST()BEGIN set @s=CONCAT('truncate table test', DATE_FORMAT(NOW(), '%c') % 3); PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt;ENDColored by Color Scriptercs 이 때 오류가 발생했습니다. Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version ..
트랜잭션 격리 수준 기본적으로 트랜잭션은 시작과 끝 사이에서 데이터를 일관성있게 읽어들이는 것을 의미합니다.즉 다른 세션에서 변경된다고 하더라도 커밋이 이루어질때까지 또다른 세션은 변경작업을 확인할 수 없게 됩니다. 그렇지만, 트랜잭션의 격리 수준에 따라 위의 내용은 맞지 않을 수 있습니다.트랜잭션의 격리 수준은 4 단계로 이루어 집니다. 트랜잭션 레벨은 아래에서 확인할 수 있습니다.mysql> show variables like 'tx_isolation'; +---------------+------------------+ | Variable_name | Value | +---------------+------------------+ | tx_isolation | READ-UNCOMMITTED | +--..
MySQL 은 실행한 쿼리를 파일 혹은 테이블에 기록하는 기능을 제공합니다. 기록과 관련된 프로퍼티 프로퍼티 설명 general_log 로깅기능의 활성화 여부를 설정 general_log_file 로깅기록시 파일위치 및 명칭을 지정하며, log_output 이 FILE 인 경우 활성화 log_output 로깅기록의 저장장소 TABLE, FILE ,NONE 프로퍼티 설정 값 확인 방법Master-mysql> SHOW VARIABLES LIKE 'general_log%'; +------------------+-------------------------+ | Variable_name | Value | +------------------+-------------------------+ | general_log..
인덱스를 사용하는 이유 책에서 목차라고 생각하시면 편합니다.사용자는 목차를 보고 원하는 페이지를 바로 펼칠 수 있습니다. 즉, 인덱스를 사용하는 가장 큰 이유는 쿼리의 성능을 높이기 위해서 입니다.테이블에 다수의 레코드들이 정렬되어 있지 않고 무작위로 배열되어 있을 때, 특정 데이터를 찾기 위해서는 해당 테이블 전체를 검색해야 합니다.인덱스는 무작위 배열된 데이터를 정렬한 뒤, 필요로 하는 데이터만 가지고 오기 때문에 사용자는 빠른 결과를 받을 수 있습니다. 인덱스 생성시 고려사항 그렇다면 무작정 인덱스를 생성하면 좋을까요?아닙니다.인덱스 종류에 따라 물리적인 공간을 요구하기 때문에 무분별한 인덱스는 오히려 용량만 차지하게 됩니다.또한 옵티마이저는 생성한 인덱스 중 어느 인덱스를 선택해야 비용이 낮은지 ..
MySQL 은 이중화 기법으로 비동기, 반동기 방식 2가지를 제공한다. 참고로 Goldilocks 에서는 이중화 방식으로 Cyclone 툴인 비동기 방식, Cluster 인 완전한 동기화 방식을 지원합니다. 비동기 방식마스터 측은 슬레이브에 반영되었는지에 대한 여부를 판단하지 않습니다.따라서 네트워크 비용 + 슬레이브 동기화 비용이 빠지기 때문에 사용자는 빠른 응답을 받게됩니다.그러나 만약 네트워크 장애가 발생한다면 마스터와 슬레이브의 갭 차이는 벌어지게 됩니다. 반동기 방식마스터 측은 슬레이브에 릴레이 로그 기록까지를 동기화 범주로 판단합니다.이후 이 로그를 이용하여 슬레이브의 실 데이터베이스 업데이트는 판단하지 않습니다.여기에서는 네트워크 비용 + 슬레이브 동기화 비용이 추가됩니다.그렇지만 장애 발생..
MySQL 소켓 번호를 변경하는 방법을 알아보겠습니다. MySQL 을 설치시 기본 소켓 포트는 3306 입니다.netstat 로 열린 포트를 확인해보면 알 수 있습니다.$ netstat -na | grep 3306tcp6 0 0 :::3306 :::* LISTEN 포트를 변경하는 방법1. my.cnf 파일을 다음과 같이 수정합니다. [mysqld] DSN 으로 되어있는 곳에, port 프로퍼티를 추가 후 값을 설정합니다.[mysqld] port=33072. MySQL 을 재구동 합니다.3. 변경된 포트를 확인합니다.$ netstat -na | grep 3307 tcp6 0 0 :::3307 :::* LISTEN 혹은 ps 로도 확인할 수 있습니다.$ ps -ef | grep 3307mysql 30055 ..
테이블을 조인 할 때, Nested Loops, Sort Merge, Hash Join 결합을 많이 사용합니다. Nested Loops외부 테이블(Outer Table)에서 조건에 만족하는 레코드를 검색한 후, 결합 조건에 일치하는 레코드를 내부 테이블(Inner Table)에서 조인하는 방식입니다.Outer Join 에서 만족하는 레코드가 적을수록 NL 조인에서 효율이 좋습니다.조인 조건에 해당하는 컬럼들은 인덱스를 가지고 있어야 합니다. Sort Merge Join외부 테이블(Outer Table) 에서 조건에 만족하는 레코드를 검색한 후, 조인 키를 기준으로 정렬작업을 수행합니다.내부 테이블(Inner Table) 에서 조건에 만족하는 레코드를 검색한 후, 조인 키를 기준으로 정렬작업을 수행합니다...
JDBC 로 MySQL 연동 시, 다음과 같은 메세지가 출력되는 경우가 있습니다. WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need ei..
MySQL 에서 제공하는 JDBC 드라이버를 사용하여 MySQL 서버에 접속하는 방법입니다. 1. 아래 사이트에 접속한 뒤, 압축파일을 다운로드 합니다.https://dev.mysql.com/downloads/connector/j/ 2. 다운로드한 파일을 서버에 전송한뒤 압축해제합니다.$ tar xvzf mysql-connector-java-5.1.46.tar.gz 3. 압축해제 된 폴더로 들어간 뒤, jar 파일을 CLASSPATH 에 등록합니다.export CLASSPATH=$MYSQL_HOME/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar:$CLASSPATH export CLASSPATH=$MYSQL_HOME/mysql-connector-..