2011년 9월 29일 목요일
2011년 9월 24일 토요일
2011년 9월 21일 수요일
[MySql] Server 기동, 중지
서버 기동
#>mysql -u root -p
서버 자동 기동
#>cp mysql.server /etc/rc.d/init.d/mysql // mysql.server스크립트 복사
#>chmod +x /etc/rc.d/init.d/mysql
#>chkconfig -- add mysql
#>chkconfig mysql on
서버 수동 중지
#>mysqladmin -p -u root shutdown
오타조심
돈복이 터지는 하루~
#>mysql -u root -p
서버 자동 기동
#>cp mysql.server /etc/rc.d/init.d/mysql // mysql.server스크립트 복사
#>chmod +x /etc/rc.d/init.d/mysql
#>chkconfig -- add mysql
#>chkconfig mysql on
서버 수동 중지
#>mysqladmin -p -u root shutdown
오타조심
돈복이 터지는 하루~
2011년 9월 20일 화요일
2011년 9월 15일 목요일
[MySql] 쿼리 속도 최적화
인덱스 선택시 고려할 점
- 검색, 정렬 또는 그룹 만들기 등에 사용되는 칼럼을 인덱스로 만들고 ,출력으로 표시되는 칼럼에 대해서는 인덱스로 만들지 않는다.
- 유일한 인덱스를 사용
- 짧은 데이터 타입으로 인덱스 생성
- 문자열로된 인덱스 접두어
- 가장 왼쪽의 접두어를 활용
- 과도한 인덱스 생성 금지
- 인덱스 타입과 비교 수행 시의 타입의 매치
- 느린 쿼리 로그를 사용하여 좋지 않은 수행력을 보여주는 쿼리들을 식별한다.
[MySql] 이벤트
이벤트 실행
[mysqld]
event_scheduler = ON
이벤트 생성 예
CREATE EVENT expire_web_session
ON SCHEDULE EVERY 4 HOUR
DO
DELETE FROM web_session
WHERE last_visit < CURRENT_TIMESTAMP - INTERVAL 1 DAY;
->4시간마다 실행
-> 최근 방문후 하루이상 만료되면 행 삭제
P287
[mysqld]
event_scheduler = ON
이벤트 생성 예
CREATE EVENT expire_web_session
ON SCHEDULE EVERY 4 HOUR
DO
DELETE FROM web_session
WHERE last_visit < CURRENT_TIMESTAMP - INTERVAL 1 DAY;
->4시간마다 실행
-> 최근 방문후 하루이상 만료되면 행 삭제
P287
[MySql] 트리거
트리거 생성
Create TRIGGER trigger_name
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON tblname
FOR EACH ROW trigger_stmt;
트리거 생성 예
CREATE TABLE t (percent INT, dt DATENAME);
delimiter $
CREATE TRIGGER bi_t BEFORE INSERT ON t
FOR EACH ROW BEGIN
SET NEW.dt = CURRENT_TIMESTAMP;
IF NEW.percent < 0 THEN
SET NEW.percent = 0;
ELSE IF NEW.percent > 100 THEN
SET NEW.percent = 100;
END IF;
END $
delimiter
-> 0 이하를 인서트 하면 0으로 바꾼다
-> 100이상을 인서트 하면 100으로 바꾼다
-> 시간은 현재 시간으로 책정한다
P285
Create TRIGGER trigger_name
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON tblname
FOR EACH ROW trigger_stmt;
트리거 생성 예
CREATE TABLE t (percent INT, dt DATENAME);
delimiter $
CREATE TRIGGER bi_t BEFORE INSERT ON t
FOR EACH ROW BEGIN
SET NEW.dt = CURRENT_TIMESTAMP;
IF NEW.percent < 0 THEN
SET NEW.percent = 0;
ELSE IF NEW.percent > 100 THEN
SET NEW.percent = 100;
END IF;
END $
delimiter
-> 0 이하를 인서트 하면 0으로 바꾼다
-> 100이상을 인서트 하면 100으로 바꾼다
-> 시간은 현재 시간으로 책정한다
P285
2011년 9월 13일 화요일
[MySql] 문자세트(charset) 확인
현재 설정 문자세트 확인
mysql>\s
문자세트 변경
mysql> SET character_set_client = euckr;
mysql> SET character_set_results = euckr;
mysql> SET character_set_connection = euckr;
mysql> ALTER DATABASE [DB명] DEFAULT CHARACTER SET euckr;
commit;
문자세트 확인
mysql>SHOW CHARACTER SET;
정렬순서 확인
mysql>SHOW COLLATION;
mysql>\s
문자세트 변경
mysql> SET character_set_client = euckr;
mysql> SET character_set_results = euckr;
mysql> SET character_set_connection = euckr;
mysql> ALTER DATABASE [DB명] DEFAULT CHARACTER SET euckr;
commit;
문자세트 확인
mysql>SHOW CHARACTER SET;
정렬순서 확인
mysql>SHOW COLLATION;
[MySql] 데이터베이스 선택, 생성, 삭제, 변경
데이터베이스 선택
$>USE dbname;
데이터베이스 생성
$>CREATE DATABASE dbname;
$>CREATE IF NOT EXISTS DATABASE dbname;
데이터배이스 삭제
$>DROP DATABASE dbname;
데이터배이스 변경
$>ALTER DATABASE dbname CHARACTER SET charset COLLATE collation;
$>USE dbname;
데이터베이스 생성
$>CREATE DATABASE dbname;
$>CREATE IF NOT EXISTS DATABASE dbname;
데이터배이스 삭제
$>DROP DATABASE dbname;
데이터배이스 변경
$>ALTER DATABASE dbname CHARACTER SET charset COLLATE collation;
[MySql] 메타데이터 획득
메타데이터 획득방법
SHOW DATABASES;
SHOW CREATE DATABASE dbname;
SHOW TABLES;
SHOW TABLES FROM dbname;
SHOW CREATE TABLE tblname;
SHOW TABLE STATUS;
SHOW TABLE STATUS FROM dbname;
SHOW COLUMNS FROM tblname;
SHOW INDEX FROM tblname;
SHOW TABLES IN INFORMATION_SCHEMA;
DESCRIBE INFORMATION_SHEMA.CHARACTER_SETS;
직접쳐보고 결과 확인-!
SHOW DATABASES;
SHOW CREATE DATABASE dbname;
SHOW TABLES;
SHOW TABLES FROM dbname;
SHOW CREATE TABLE tblname;
SHOW TABLE STATUS;
SHOW TABLE STATUS FROM dbname;
SHOW COLUMNS FROM tblname;
SHOW INDEX FROM tblname;
SHOW TABLES IN INFORMATION_SCHEMA;
DESCRIBE INFORMATION_SHEMA.CHARACTER_SETS;
직접쳐보고 결과 확인-!
[MySql] 인덱스추가
인덱스의 추가(ALTER TABLE)
ALTER TABLE tblname ADD INDEX indexname (index_columns);
ALTER TABLE tblname ADD PRIMARY KEY indexname (index_columns);
ALTER TABLE tblname ADD UNIQUE indexname (index_columns);
인덱스의 추가(CREATE INDEX)
CREATE INDEX indexname ON tblname (index_columns);
CREATE UNIQUE INDEX indexname ON tblname (index_columns);
CREATE PRIMARY KEY indexname ON tblname (index_columns);
인덱스의 추가(CREATE TABLE)
CREATE TABLE tblname
(
i INT NOT NULL PRIMARY KEY,
sz CHAR(10) NOUT NULL UNIQUE
);
인덱스의 삭제
DROP INDEX indexname ON tblname;
DROP INDEX 'PRIMARY' ON tblname; (PRIMARY KEY 삭제)
ALTER TABLE tblname DROP INDEX indexname;
ALTER TABLE tblname DROP PRIMARY KEY;
ALTER TABLE tblname ADD INDEX indexname (index_columns);
ALTER TABLE tblname ADD PRIMARY KEY indexname (index_columns);
ALTER TABLE tblname ADD UNIQUE indexname (index_columns);
인덱스의 추가(CREATE INDEX)
CREATE INDEX indexname ON tblname (index_columns);
CREATE UNIQUE INDEX indexname ON tblname (index_columns);
인덱스의 추가(CREATE TABLE)
CREATE TABLE tblname
(
i INT NOT NULL PRIMARY KEY,
sz CHAR(10) NOUT NULL UNIQUE
);
인덱스의 삭제
DROP INDEX indexname ON tblname;
DROP INDEX 'PRIMARY' ON tblname; (PRIMARY KEY 삭제)
ALTER TABLE tblname DROP INDEX indexname;
ALTER TABLE tblname DROP PRIMARY KEY;
[MySql] 임시테이블 생성, 삭제
임시테이블 생성
CREATE TEMPORARY TABLE tblname;
임시테이블 삭제
DROP TEMPORARY TABLE tblname;
[MySql] 테이블 생성, 삭제
테이블 생성 예
CREATE TABLE tblname
(
name CHAR(50),
birth DATE NOT NULL,
sex ENUM('F','M')
);
테이블 옵션확인
mysql> SHOW CREATE TABLE t\G
테이블 엔진 변경
mysql> ALTER TABLE tblname ENGINE = InnoDB;
존재하는 테이블의 구조 복사를 통한 테이블 생성
CREATE TABLE newtbl LIKE oldtbl;
테이블 삭제
DROP TABLE tblname1, tblname2......;
DROP TABLE IF EXISTS tblname;
CREATE TABLE tblname
(
name CHAR(50),
birth DATE NOT NULL,
sex ENUM('F','M')
);
테이블 옵션확인
mysql> SHOW CREATE TABLE t\G
테이블 엔진 변경
mysql> ALTER TABLE tblname ENGINE = InnoDB;
존재하는 테이블의 구조 복사를 통한 테이블 생성
CREATE TABLE newtbl LIKE oldtbl;
테이블 삭제
DROP TABLE tblname1, tblname2......;
DROP TABLE IF EXISTS tblname;
피드 구독하기:
글 (Atom)