database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Columns 21398 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 21398
MySQL 3.x->4.x 로 가면서 달라진 점.
작성자
정재익(advance)
작성일
2004-03-29 10:10
조회수
19,455

3.X 버전에 비해 새로워진점(1)

이전 4.0대 버전 개발자들은 기존의 기능들의 성능 향상, 새로운 기능 추가, 미래지향적인 Mysql 아키텍쳐의 변경 이렇게 3가지를 개발의 중심 과제로 삼았다. 이들 모두를 설명하는 하기에는 분량이 책 한권을 넘을 정도로 많기 때문에 가장 핵심적인 몇가지를 설명하겠다.

  • 먼저, Mysql의 질의 최적화기(질의를 수행해 가는데 있어서 가장 적은 시간으로 질의의 결과를 얻어오기 위해 수행되는 모듈)가 질의을 풀어가는데 있어 인덱스 사용부분에 더 좋은 결과가 유출될 수 있도록 좋아져서 이전에 비해 매우 빨르게 질의를 수행 할 수 있게 되었다.
  • Mysql 3.X 에서는 풀 텍스트 인덱스(full-text index) 사용을 위해서는 설치 옵션을 다시 조정하여 재컴파일을 사용하였지만, 새로운 버전에서는 재컴파일 없이 단지 환경설정 옵션에서 옵션 값을 변경하고 재시작하는 것으로 사용 가능하게 되었다.
  • key cache의 변화로 인덱스를 검색하여 찾는 질의에 대해서 굉장한 속도 증가를 가져오게 되었다.
  • 환경 변수의 수가 거의 두배로 증가하여 Mysql을 좀더 세세하게 자신의 환경에 맞추어 설정을 할 수 있게 되었다.

     

  • 3.X 버전에 비해 새로워진점(2) - InnoDB -

    Mysql은 MyISAM, ISAM, HEAP, BDB (Berkeley DB), InnoDB 이렇게 다섯 개의 테이블을 지원하고 있다. 이중에서 가장 눈에 띄는 것이 InnoDB 이다.

    보통의 테이블은 autocommit 방식을 사용한다. autocommit방식이란 어떠한 질의가 어떠한 테이블의 데이터를 수정 시켰다면 그 테이블은 그 순간 바로 수정되어지는 것을 말한다. 하지만 InnoDB는 nonautocommit방식을 사용할 수 있다. 이말은 어떠한 질의가 테이블의 데이터를 수정 시켰더라도 바로 수정되지 않고 Commit을 사용해야 테이블의 데이터가 수정이 된다. 즉 트랙잭션(Transaction)을 지원한다. 이같이 autocommit방식을 nonautocommit방식으로 변경하기 위해서는 다음과 같이 해주면 된다.

    SET AUTOCOMMIT = 0 InnoDB의 특징은 이것뿐만이 아니고 매우 많은데 대부분의 Mysql의 특징을 가지고 있다고 보면 된다. 다음은 그 특징들이다.
  • 자동 복구 기능(Automatic crash recovery) : Mysql이 어떤 질의를 처리 도중 갑작스럽게 비정상적으로 종료가 되면 InnoDB은 자동으로 질의 처리 이전 상태로 되돌려놓는다(Rollback)
  • 외래키 선언이 가능하다.(Foreign Key)
  • 로우레벨락(Row-level locking) : MyISAM 테이블의 경우 질의 수행중에는 다른 질의로부터 데이터의 무결성을 보장하기위해서 테이블에 락을 걸지만 InnoDB에서는 row 차원에서 락을 걸기 때문에 사용이 많은 테이블에 용이하다.
  • Non-locking SELECTs 지원 : 다른 질의가 데이터를 변경하기 위해서 락을 걸었더라도 데이터를 가져오기 위해서 읽어오는데 실패를 하지는 않는다.

    다음은 InnoDB의 생성 방법에 대해서 알아보자. 방법은 이전 테이블 생성과 같고 마지막에 type = InnoDB만 추가 해 주면 된다.

    CREATE TABLE mytable (
      id         INTEGER      UNSIGNED AUTO_INCREMENT PRIMARY KEY,
      rank       INTEGER      NOT NULL,
      stuff      VARCHAR(255) NOT NULL
    ) Type = InnoDB

     참고로, 이 InnoDB 데이터 베이스는 오라클을 모델로 만들었다.

  •  


     

  • 3.X 버전에 비해 새로워진점(3) - SSL 지원 -

    이전까지는 데이터 베이스의 사용자와 비밀번호만 맞으면 누구나 이 데이터 베이스에 접근이 가능했다. 이러한 이유로 보안에 많은 문제점이 생기게 되었는데 이번 버전에서는 새롭게 SSL 기능을 추가하여 보안에 신경을 썼다. 지금부터는 이부분에 대해서 알아보자.

  • REQUIRE SSL : 이 옵션은 SSL로 암호와 된 접근만 허용한다. 하지만 이것도 역시 사용자와 암호만 맞으면 누구나 접근이 가능한 문제점을 가지고 있다. 다음은 그 사용 방법이다.
    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost
        -> IDENTIFIED BY "mysql" REQUIRE SSL>
    
  • REQUIRE X509 : 이 옵션은 ssl 옵션과 많은 면에서 비슷하지만 차이가 있다면 접근을 하기 위해서는 보증서가 필요하다. 하지만 이러한 제안 사항도 많은 보증서(Certificate Authority)중에 하나와 우연히 맞아 떨어진다면 접근이 가능하다.

    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost -> IDENTIFIED BY "mysql" REQUIRE X509>

  • REQUIRE SUBJECT,ISSUER,CIPHER : 이들은 자신이 직접 보증서의 내용을 작성하기 때문에 더 보안을 강화 할 수 있다. 물론 개별적으로 사용할 수도 있다.
    mysql> GRANT ALL PRIVILEGES ON test.* TO root@localhost
        -> IDENTIFIED BY "goodsecret"
        -> REQUIRE SUBJECT "C=EE, ST=msyql, L=mysql,
        "> O=MySQL demo client certificate,
        "> CN=mysql/Email=mysql@mysql.com"
        -> AND ISSUER "C=FI, ST=mysql, L=mysql,
        "> O=MySQL Finland AB, CN=mysql/Email=mysql@mysql.com"
        -> AND CIPHER "EDH-RSA-DES-CBC3-SHA";
    
  • 3.X 버전에 비해 새로워진점(4) - 질의 캐시(Query Cache) -

    Mysql 개발자들은 공통적으로 실행되는 질의에 대한 속도 향상을 위해서 질의 캐시 방식을 사용하였다. 이 캐시는 가장 최근에 실행된 Select 질의와 결과를 메모리에 저장한다. 이 값은 환경 설정 파일에서 query_cache_size 값을 조절하므로서 질의 캐시의 메모리량을 조절할 수 있다.

     또 캐시된 내용이 다른 질의에 의해서 변화 될 수 있기 때문에 Mysql은 이 캐시에 연관이 있는 테이블들 중에 하나의 데이터가 변화될 경우 캐시에 있는 데이터들은 모두 버린다.

    이것은 데이터는 자주 바뀌지 않지만 매우 자주 사용되는 질의에 대해서 상당히 빠른 처리 속도를 낼 수 있다.

  • 3.X 버전에 비해 새로워진점(5) - UNION -

    이 UNION은 여러 테이블의 질의의 결과를 하나의 결과로 합쳐서 보여주는 기능으로 이전가지는 이 기능이 추가 되지 않았다가 이번에 추가된 기능이다. 간단한 사용방법은 다음과 같다.

    (SELECT a FROM table_name WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
    UNION
    (SELECT a FROM table_name WHERE a=11 AND B=2 ORDER BY a LIMIT 10)
    ORDER BY a;
    
  • 강좌를 마치며

     지금까지 4.0에 추가된 새로운 기능에 대해서 알아보았다. 이들 기능은 다른 대부분의 상용 데이터 베이스에서 지원하는 기능이다. 그리고 Mysql은 다른 상용 데이터 베이스에서 지원하는 기능을 아직 모두는 지원하고 있지는 않는 실정이다. 하지만 5.0 버전까지면 대부분의 기능을 지원할 것으로 예상된다. 그때도 지금의 성능이 날지는 알 수 없지만 그때를 기약해 보며 이번 강좌를 마치다.  17회 : [공개 데이터 베이스 ? PostgreSQL 실전편] Redhat7.x에서 PostgreSQL의 설치와 설정
    에서는 PostgreSQL의 설치 방법과 그에 따른 여러 설정 방법을 살펴보기로 하겠다.

  •  

    원문 출처 : http://korea.internet.com/channel/content.asp?cid=455&nid=26736

    [Top]
    No.
    제목
    작성자
    작성일
    조회
    23326MySQL [4.0 -> 4.1] 업그레이드시 체크할것
    이경환
    2005-03-17
    14679
    23324MySQL [3.23 -> 4.0] 업그레이드시 체크할것
    이경환
    2005-03-17
    10648
    22937MySQL 을 이용한 프로그램 개발시 라이센스에 유의하시기 바랍니다. [4]
    정재익
    2005-01-11
    13006
    21398MySQL 3.x->4.x 로 가면서 달라진 점.
    정재익
    2004-03-29
    19455
    21156MySQL 라이센스 [2]
    정재익
    2004-02-26
    16332
    20289서버 데이타베이스의 승자 MySQL [4]
    정재익
    2003-10-22
    21185
    19889MySQL 4.0이상에서 형변환 함수, CAST(), CONVERT()
    강병기
    2003-08-26
    75175
    Valid XHTML 1.0!
    All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
    작업시간: 0.046초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다