Database/mysql tip: 21개의 글
REGEXP LIKE 연산자보다 더욱 복잡한 패턴을 검색하고 싶을 때는 REGEXP 연산자를 사용할 수 있습니다. REGEXP 연산자는 정규 표현식을 토대로 하는 패턴 매칭 연산을 제공합니다. REGEXP 연산자와 함께 사용할 수 있는 패턴은 다음과 같습니다. 패턴설명 . 줄 바꿈 문자(\n)를 제외한 임의의 한 문자를 의미함. * 해당 문자 패턴이 0번 이상 반복됨. + 해당 문자 패턴이 1번 이상 반복됨. ^ 문자열의 처음을 의미함. $ 문자열의 끝을 의미함. | 선택을 의미함.(OR) [...] 괄호([]) 안에 있는 어떠한 문자를 의미함. [^...] 괄호([]) 안에 있지 않은 어떠한 문자를 의미함. {n} 반복되는 횟수를 지정함. {m,n} 반복되는 횟수의 최솟값과 최댓값을 지정함. 만약 해당..
Mysql은 기본 isolation이 REPEATABLE-READ으로, Oracle은 COMMIT-READ으로 되어있다. 둘의 차이점은 무엇일까? 그리고 종종 Mysql에서는 Dead lock이 걸리는데 그 이유가 무엇일까? ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction MySQL의 InnoDB에는 lock에는 종류가 있다. - Row -level lock - Record lock - Gap lock 하나씩 알아보자 1) Row-level lock 가장 기본적인 lock으로서 테이블의 row마다 걸리는 단위다. 여기서는 2가지 종류가 있다. - Shared lock (S) - Exclusive l..
MySQL 혹은 MariaDB 환경에서 1억개의 Row가 저장되어 있다고 가정하자. 인덱싱이 지정되어 있지 않은 칼럼에서 검색을 수행했을때 데이터베이스는 1억개를 Full Scan을 하게 되어 SELECT 쿼리결과가 나오기까지 오랜시간이 필요로 한다. 이렇게 비교적(?) 대용량의 데이터를 처리하기 위해서는 여러가지 튜닝방법이 존재하는데, 튜닝의 우선순위는 아래와 같다. 1. 가급적 로직을 DB상에서 처리하지 않고 WEB Applicaition 상에서 구현한다. WEB Application 부하는 DB Server에서 발생하는 부하보다 비교적 쉽게 해결이 가능하다. Web 서버는 라운드로빈이든 L4를 활용하든 너무나 쉽게 확장이 가능한 반면, DB Server는 Master-Slave Replication..
1. Mysql의 최대 접속자 수 확인하기. show variables like '%max_connection%'; max_connections는 mysql에서 connect할 수 있는 최대 소켓수를 정의한 값입니다. 접속 최대수를 초과해 접속 시도를 하는 경우 "too many connections error"이 발생 합니다. 2. 접속수 보기. show status like 'Max_used_connections'; 3. Connection 설정을 위한 변수. - variables (예 show variables like '%max_connection%';) max_connections – 최대 동시 접속 가능 수. max_connection 수가 늘어 나면 innodb 의 thread별 메모리 사용..
● 로콜 서버에 접속 명령어 : mysql -u 계정명 -p 예) mysql -u root -p ● 원격지에 접속 명령어 : mysql -h 호스트주소(ip) -P 포트번호 -u 계정명 -p 이때 대소문자를 구분해서 기입해 줘야 합니다. 예) mysql -h 192.168.0.33 -P 13306 -u root -p ● 원격지의 특정 database에 접속 명령어 : mysql -h 호스트주소(ip) -P 포트번호 -u 계정명 -p 디비 이름 예) mysql -h 192.168.0.33 -P 13306 -u root -p userDB 출처 : code-factory.tistory.com/44?category=724516
출처 : http://rapapa.net/?p=311 ● 샘플 데이타 생성 입력 CREATE TABLE user_info ( id bigint NOT NULL AUTO_INCREMENT COMMENT '고유 번호', name varchar(64) NOT NULL DEFAULT '' COMMENT '이름', reg_date datetime NOT NULL COMMENT '등록 시각', address varchar(64) NOT NULL DEFAULT '' COMMENT '주소', phone varchar(64) NOT NULL DEFAULT '' COMMENT '주소', PRIMARY KEY (id, name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='테스트 ..
● 설정 기본 하드웨어 : 대용량 InnoDB에서는 CPU보다 메모리가 성능에 더 영향을 미칩니다. 빠른 입출력을 원한다면 SSD나 SAS를 사용하는게 유리 합니다. ● my.cnf [code lang="bash"] vi /etc/my.cnf [/code] [code lang="Apache"] [client] port = 3306 socket = /tmp/mysql.sock [mysqld] # generic configuration options port = 3306 socket = /tmp/mysql.sock back_log = 100 max_connections = 500 max_connect_errors = 10 table_open_cache = 2048 max_allowed_packet = 16M..
● MySQL Memory MySQL은 하나의 프로세스로 동작 합니다. 세션은 thread로 확장되고 시스템 자원을 할당 받습니다. MySQL의 Memory 부분은Connection 수의 영향을 받는 부분이며 항상 주의를 요해야 합니다. ● Memory Management MySQL 레퍼런스에 나온 식 : innodb_buffer_pool_size + key_buffer_size + max_connections*(sort_buffer_size+read_buffer_size+binlog_cache_size) 레퍼런스에 달린 코멘트 (by David Tonhofer) total memory = innodb_buffer_pool_size + key_buffer_size + innodb_additional_me..
Index 개요 Index는 MYI (MySQL Index)파일에 저장 됩니다. Index가 설정되지 않았다면 Table Full Scan이 일어 나 성능이 저하 되거나 치명적인 장애가 발생 합니다. Index는 검색 속도를 향상 시키는 장점이 있지만, update, insert, delete 속도는 저하 됩니다. 이는 Table의 Index 색인 정보를 갱신하는 비용이 추가 되기 때문입니다. Index 설정시 이런 부분들을 위의 하여 효율적인 컬럼 선정이 이루어 져야 합니다. 주 목적은 다음과 같습니다. 조건과 일치하는 열을 빨리 찾기 위해 사용. JOIN시 다른 Table의 열을 추출 하기 위해 사용. Max, Min값을 찾기 위해 사용. 다음과 같은 사항을 고려 하여 사용하면 좋습니다. Index의..
mysqldump MySQL의 대표적인 Logical 백업 프로그램으로서 스토리지 엔진에 상관 없이 백업을 받을 수 있는 tool 입니다. mysqldump 는 기본적으로 dump를 하려고 하는 테이블에 대한 SELECT 권한, dump하려는 view에 대한 SHOW VIEW 권한, dump하려는 trigger에 대한 TRIGGER 권한을 가지고 있어야 합니다. 만약, --single-transaction 옵션을 사용할 수 없는 스토리지 엔진이라면 LOCK TABLES 권한이 추가적으로 필요합니다. 만약, 다른 옵션을 추가적으로 사용한다면 추가적인 다른 권한도 필요하게 됩니다. dump file을 reload하기 위해, 계정은 dump file을 생성했을 때 가졌던 권한을 다 가지고 있어야 합니다. 사용..