대규모로 운영중인 MySQL 데이터베이스의 문제는 서버를 중단시키지 않고 전체 백업(clean backup)을 하는 것이다. 백업은 시스템을 느리게 만들며, 백업을 수행중인 테이블과 관련된 데이터가 변경될 수 있기 때문에 데이터 일관성을 해칠 수도 있다. 서버를 다운시키면 일관된 데이터를 얻을 수 있지만 이는 사용자에게 서비스 중단을 의미한다. 반드시 필요하고 어쩔 수 없는 경우라면 서버를 다운시킬 수 있지만, 데이터를 백업하기 위해 매일 서버를 중단하는 것은 받아들이기 어려운 일이다. 날마다 서버를 중단하지 않고 안정적인 백업을 받는 방법은 MySQL에 복제(replication)를 설정하는 것이다. 역주1: 업무상 DB 전체 백업에 해당하는 것이 원어에서는 clean backup이다. 따라서 클린 백..
- DAYOFWEEK(date) : 해당 날짜의 요일을 숫자로 반환한다. 일요일은 1, 토요일은 7 이다. - 예 : select DAYOFWEEK('1998-02-03'); - WEEKDAY(date) : 해당 날짜에 대한 요일을 반환한다. 월요일은 0, 일요일은 6 이다. - 예 : select WEEKDAY('1997-10-04 22:23:00'); - DAYOFYEAR(date) : 해당 날짜의 1월 1일부터의 날수를 반환한다. 결과값은 1에서 366 까지이다. - 예 : select DAYOFYEAR('1998-02-03'); - YEAR(date) : 해당 날짜의 년을 반환한다. - 예 : select YEAR('98-02-03'); - MONTH(date) : 해당 날짜의 월을 반환한다. -..
특정 시간을 지정하고 지정된 시간이상 걸리는 쿼리의 로그만 따로 남기기... 1. 설정화일 수정 방법 .수정 화일 : /etc/my.cnf #--log-slow-queries = /usr/local/var/slow.log log-slow-queries = /usr/local/var/slow.log // Log 저장 경로 set-variable = long_query_time = 1 // 지정시간(초) 2. 데몬 구동옵션 $mysqld_safe --log-slow-queries=slow_query.log -O long_query_time=10 // 10초이상 걸리는 로그를 slow_query.log 에 남기기
1.1 Replication 이란? ¶ Replication은 3.23.15부터 지원되기 시작한 기능으로 ‘복제’라는 사전적 의미에 맞게 마스터의 MySQL 서버의 데이터를 여러 대의 슬레이브 MySQL 서버의 데이터와 동기화 시켜주는 기능이다. 주로, MySQL의 데이터를 실시간으로 백업하거나, 데이터 서버의 부하분산을 하고자 할 때 많이 사용된다. Dual-Master Replication을 구축하기 위해, 먼저 Master-Slave로 구성된 Replication 상태를 만들어야 한다. [edit] 1.2 How to Set Up Replication ¶ [edit] 1.2.1 MASTER 와 SLAVE 설치 ¶ MySQL을 master 와 slave 서버에 설치한다. 안정성을 위해 두 서버의 버전..
MySQL Cluster 저작권:이 문서는 자유롭게 배포가 가능합니다. 단 상업적 용도로 사용할 수 없습니다. 배포 시 작성자의 이름 및 출처를 꼭 명시하기 바랍니다. 작성자 : f405(ccotti22) 작성일 : 2005년 8월 10일 수요일 이메일 : f405@naver.com 홈페이지 : http://f405.tistory.com 이 문서는 MySQL Cluster 매뉴얼을 번역, 정리한 것으로 틀린 부분을 다소 포함할 수 있으며, 저는 그에 대한 책임을 지지 않겠습니다. 부족하지만 다른 분들도 공부하는데 도움이 되길 바랍니다. 그리고 이 문서를 작성하기 전 참고한 리눅스 및 MySQL 문서들을 작성하신 많은 선배님들에게 감사의 말씀을 드립니다. 그리고 이 후부터는 경어는 생략하였습니다. 양해의 ..
--------------------------- mysql의 최대 성능 향상 방법 출처 : tunelinux.co.kr --------------------------- 10.1 버퍼 크기 조정 mysqld 서버가 사용하는 기본 버퍼 크기는 다음의 명령으로 알 수 있다. shell> mysqld --help 이 명령은 모든 mysqld 옵션의 목록과 설정 변수를 보여준다. 출력되는 내용은 기본값을 포함하고 있으며 다음과 비슷하다. Possible variables for option --set-variable (-O) are: back_log current value: 5 connect_timeout current value: 5 join_buffer current value: 131072 key_bu..
어떤 쿼리를 날려서 수행결과 나오는 row 수 = Cadinality Ex) 레코드수 = 1,000 (칼럼a = no, 칼럼b = 학년) qry : 칼럼b = "1학년", result = 10ea 10(결과값) / 1,000(총레코드수) = 0.01 (선택도) 0.01(선택도) * 1,000(총레코드수) = 10 (Cadinality) 인덱스를 사용할때 선택도와 카디널리티가 중요한 기준이됩니다. DB의 옵티마이져가 기존 테이블이나 인덱스 통계에서 이런 수치를 가지고 실행계획을 세우게 되죠. 일반적으로 옵티마이져는 여러 인덱스가 있을때 선택도가 낮은 인덱스를 사용합니다
mysql> begin mysql> commit mysql> rollback 트랜잭션을 사용할때 사용하는 명령어들 입니다. Mysql에서 트핸잭션을 사용하려면 DBD나 InnoDB를 이용해야 합니다. 다른 테이블 타입은 트핸잭션 명령을 사용해도 적용되지 않습니다. begin - 트랜잭션을 시작한다는 뜻입니다. begin 이휴의 모든 명령들은 취소할 수 있습니다. commit - 트랜잭션을 종료하는 명령입니다. rollback - 잘못된 쿼리를 적용시키거나 이전 명령을 취소하고자 할 때 사용하는 명령입니다. 이 명령을 사용하면 begin 이전으로 복구됩니다.
1. What is Innodb Table space ? - 그 동안 Myisam 방식으로 테이블 스페이스를 사용하던 mysql은 rollback 이 되지 않는다. 다른 데이터베이스 와 달리 autocommit 이 자동으로 실행 하여 데이터 베이스의 트렌젝션시 발생되는 lock을 처리 하기 힘들었다. - innodb는 오라클 처럼 shared tablespace ( ibdataN) 와 로그파일 (ib_logfileN ) 로 구성된다. 로그파일은 트랜젝션들을 처리하는 오라클의 아카이브 로그 같이 생각 하면 된다. 2. Mysql의 주요 특징 참고 : Mysql Technical Reference fo Ver 5.0 : 16장 InnodB Configureation - rollback 을 구현 할수 있다. ..
전에 정리한 책 내용인데.. explain select * from jun_board_db where seq_num > 1; 위와 같은 쿼리를 실행하였을때.. 다음과 같은 결과가 나왔다. +--------------+------+-------------------+------+-------------+------+------+--------------+ | table | type | possible_keys| key | key_len | ref | rows | Extra | +--------------+------+-------------------+------+--------------+-------+------+------------+ | jun_board_db | ALL | PRIMARY | NUL..
MySQL을 개인이 일반용도로 사용한다면 트랜잭션을 관리하는 InnoDB 저장엔진보다는 MyISAM 저장엔진을 많이 사용하게 된다. 1. 저장옵션의 종류 MyISAM 저장엔진에서 하나의 로우를 저장할 때 사용하는 방법은 2가지가 있는데, 하나는 고정식(fixed) 그리고 다른 하나는 가변식(dynamic)이 있다. 1.1 고정식(fixed) 가변길이 문자열(VARCHAR)을 고정길이 문자열(CHAR)로 변환하여 저장 한다. 예제> CREATE TABLE dgs10_fix(bday CHAR(8) NOT NULL,indx VARCHAR(13) NOT NULL) ROW_FORMAT = FIXED; 1.2 가변식(dynamic) 고정길이 문자열(CHAR)을 가변길이 문자열(VARCHAR)로 변환하여 저장 한다...
10. 데이터베이스 데이터베이스란 서로 관련된 자료들의 집합을 의미하며 컴퓨터 분야에서 데이터베이스 시스템 기술은 방대한 자료의 효율적 저장과 관리에 필수적인 요소입니다. 최근 개발되는 대다수의 웹프로그램은 데이터베이스와의 연동을 분리하고는 생각할 수 조차 없는 실정입니다. PHP역시 데이터베이스 시스템과의 연동을 염두해 두고 개발이 되었습니다. 따라서 이 책의 초반부에서 언급한 것과 같이 다양한 데이터베이스 시스템을 지원합니다. 이 장에서는 MySQL을 위주로 데이터베이스 시스템의 기본 개념에 대해서 공부하도록 하겠습니다. 10.1 데이터베이스 시스템 현대 사회는 방대한 양의 자료가 다양한 형태로 존재합니다. 학교의 경우 학생 및 교직원과 관련된 신상정보, 수강과목 및 성적 등 취급해야 하는 많은 정보..
1. 패스워드 변경 > UPDATE user SET password = password('새로운암호') WHERE user='root' ; > flush privileges; 또는 $ mysqladmin -u root reload $ mysql -u root -p 1. 가동/중지 $ mysql/bin/mysqladmin 을 실행시켜 mysql에 접속할수 있도록 합니다. $ mysql/bin/mysql을 실행합니다. 옵션: mysql -u 사용자명 -p 비밀번호(사용할 DB명) -h 접속호스트명 mysql을 처음 설치하고 나서는 그냥 mysql만 입력하여도 됩니다. $ mysql/bin/mysqladmin shutdown 1. 데이타베이스 만들고 사용자 부여하기 > create database orcl; ..
DB 속도 개선 1. 쿼리를 잘 분석한 후 꼭 필요한 칼럼만 인덱스로 만들어야 한다. 2. 최대한 작은 칼럼 타입을 선택하라. 3. varchar 보다는 char를 사용하라 (varchar를 사용하면 디스크 사용량을 줄일 수 있는 반면 검색 시 속도가 떨어지게 된다.) 4. enum 칼럼을 사용할 수 있으면 사용하라. 5. not null을 사용하라(not null을 이용하면 속도가 빨라지며 한 칼럼 당 1비트를 줄일 수 있다.) 6. procedure analyse()를 사용하라( 3.23.x 이상의 버전에서 쓸 수 있는 기능으로 해당 칼럼을 어떤 타입으로 정의하면 좋을 지를 보여줍니다.) -> 예 : select * from zipCode procedure analyse(); 7. BLOB 이나 TE..
select a.* from ( select tmp.*, rank() over (partition by mail_ymd order by (send+blocks) desc) as rank from ( select mail_ymd, org_nm, sum(i_normal_sum+o_normal_sum) send, sum(i_block_sum+o_block_sum) blocks, sum(i_block_control+o_block_control) control, sum(i_block_filter+o_block_filter) filters, sum(i_block_spam+o_block_spam) spam, sum(i_block_user+o_block_user) users, sum(i_block_virus+o_blo..
SQL의 실행계획 보기(EXPLAIN) [문법] EXPLAIN tbl_name or EXPLAIN SELECT select_options EXPLAIN tbl_name EXPLAIN tbl_name은 테이블의 구조를 나타냅니다. EXPLAIN SELECT select_options EXPLAIN SELECT select_options 은 SQL의 실행계획을 표시합니다. 결과에 나오는 항목으로는 table : 테이블 명 type : 조인의 타입 system : 테이블이 하나의 레코드만 가지는 경우 const : 테이블에 조건을 만족하는 레코드가 하나일 때, 상수 취급 eq_ref : 인덱스가 UNIQUE이거나 PRIMARY KEY인 경우의 조인으로 const를 제외한 조인 중 가장 좋은 형태 ref : e..
MySQL 데이터베이스 서버 5.0의 신기능 MySQL 사용자들이 2년 이상의 개발기간 동안 애타게 기다려 왔던 MySQL 데이터베이스 서버 5.0 버전의 발표가 이제 11월로 다가왔다. MySQL은 많은 버전업에도 불구하고 크게 눈에 띄는 기능상의 변화가 적었다. 하지만 그 동안의 MySQL 사용자들이 다른 데이터베이스 서버에 비해 부족하다고 생각했던 기능들을 이번 5.0 버전에서는 대부분 충족시켜줄 정도로 혁신적인 업그레이드가 이뤄졌다. MySQL AB사가 새로운 도약을 위해 심혈을 기울인 MySQL 5.0에서는 어떠한 변화가 이뤄졌는지 자세히 살펴보자. MySQL은 3.x 버전에서 본격적으로 사용되기 시작했고 4.x 버전에서 기본 기능들을 안정화시키는 기간을 거쳐 이제는 성숙기에 접어드는 5.0 버..
# 이글은 mysql document 의 7.2.1 Explain Syntax 를 대~충 번역한 것입니다. # 틈틈이 번역하고 있으나 언제 완료될지 모릅니다.. EXPLAIN 을 사용함으로써 인덱스가 적절히 사용되고 있는지 검토할 수 있다. 인덱스가 잘못 사용되고 있다면 ANALYZE TABLE 을 사용하여 테이블을 점검하라. 이것은 테이블의 상태를 갱신하며 옵티마이저의 동작에 영향을 준다. 옵티마이저가 SELECT 에 기록된 순서대로 조인을 행하게 강제하려면 SELECT 대신에 SELECT STRAIGHT_JOIN 을 사용하라. EXPLAIN 은 SELECT 문에 사용된 각 테이블당 하나의 행을 리턴한다. 나열된 순서는 MYSQL 이 쿼리처리에 사용하는 순서대로 출력된다. MYSQL 은 모든 조인을 s..
mysql의 주요 함수 참조 : http://dev.mysql.com/doc/mysql/en/functions.html 여기서는 mysql의 주요 함수에 대해서 설명한다. 지면관계 상 모든 함수를 설명하지는 못했으며 기초적인 함수와 중요함수 위주로 설명했다. 또한 mysql은 개발 속도가 비교적 빠른 데이터베이스 이므로 가능한 매뉴얼을 참고하는 것이 바람직하다. 편의를 위해 각 함수의 결과는 간략하게 표현했다. 예를 들어 다음 문장의 실행 결과를 mysql> select mod(29,9); 1 rows in set (0.00 sec) +-----------+ | mod(29,9) | +-----------+ | 2 | +-----------+ 아래와 같이 표현했다. mysql> select mod(29,..
- Total
- Today
- Yesterday