2011년 9월 24일 토요일

2011년 9월 21일 수요일

[MySql] 시스템 변수 확인

시스템 변수 확인
mysql>SHOW VARIABLES;

[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

오타조심
돈복이 터지는 하루~

2011년 9월 15일 목요일

[MySql] 쿼리속도 높이기

테이블을 분석시켜두자
  mysql>ANALYZE TABLE table1, table2;

쿼리속도가 빨라질 것이다.


타분.

[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

[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
 

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] 데이터베이스 선택, 생성, 삭제, 변경

데이터베이스 선택
$>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;


직접쳐보고 결과 확인-!

[MySql] 데이터 타입 변경

칼럼의 데이터 타입 변경
  ALTER TABLE 'tblname' MODIFY 'a' MEDIUMINT UNSIGNED;


[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;



[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;





[MySql] MySQL 엔진


MySQL 엔진확인
mysql>SHOW ENGINES\G

InnoDB엔진
->연속삭제와 갱신을 포함하는 외부 키와 참조 무결성 지원을 해준다.