강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
MySQL 5.5의 새로워진 것들
조회 : 22,060  



MySQL 5.5의 새로워진 것들


프로그램명 : MySQL 5.5.X
운영체제 : Linux, Unix, Windows 등
홈페이지 : www.mysql.com
라이센스 : 상업용, GPL


   최근 MySQL 5.5 버젼이 정식 릴리즈 되었고, 지금 내가 조사하고 있는 버전은 5.5.14이다. mysql의 ab사가 sun사에 인수되고, 다시 sun사가 Oracle 사에 인수되었다.
그럼 이 mysql도 Oracle만큼 강해질까? 5.5 리뷰를 하면서 느낀 것은 기능이 막강해 지면서 무거워 졌다는 느낌을 받았고, mysql의 버전이 업되면서 하위 호환을 위해
남겨두었던 설정변수들을 많이 정리하는 듯했다. 특히 mysql 설치 방식을 cmake를 도입했고, 설치 후에는 기존과 다르게 라이브러리 디렉토리, my.cnf 예제 파일,
mysql_install_db 파일등의 경로가 바뀌었다.  어떤 기능들이 추가 되고 개선되었는지, mysql 공식 홈페이지에서  발표한 내용을 한글로 편역해 보도록 하겠다.



1. 멀티코어 CPU에 대한 확장성이 향상되었다.
     CPU 속도(클럭)을 높이는데는 물리적인 한계가 있다. 그래서 요즘 CPU는 Core를 늘려 성능을 향상시킨다.
   mysql 5.5는 멀티코어 cpu를 잘~ 활용할 수 있게 향상되었다고 한다.
   이는 InnoDB의 locking 과 메모리 관리에 변화를 준것이다.

   - InnoDB에서는 확장성이 적은 mutexe를 사용하기 보다는 원자적인 CPU 명령을 사용한  RW-lock 사용하여 성능을 향상시켰다.
   - 메모리 관리 부분은 일반적인 malloc 라이브러리 보다 향상된 tcmalloc(리눅스), mtalloc(솔라리스)를 사용했다.



2. InnoDB I/O 서브시스템이 바뀌었다.
   InnoDB I/O 서브시스템이 사용가능한 I/O 용량을 효율적으로 사용할 수 있게 바뀌었다.
   -  Background I/O Thread 향상
    1개의 Thread가 read, write 를 담당했으나, 이제 read와 write에 다중 쓰레드를 할당할 수 있다.
       innodb_read_io_threads : 읽기 쓰레드 갯수 기본 4개
       innodb_write_io_threads : 쓰기 쓰레드 갯수 기본 4개

    - I/O Rate를 조정할수 있다.
      예전 버전은 기본적으로 IOPS(the number of Input/Output operations Per Second)가 100이였지만,
     지금은 기본이 200이며 이 값을 다음 변수로 제어할 수 있다.
       innodb_io_capacity : IOPS 값 (기본 200,  Disk가 7200RPM 이하라면 100으로 설정하는 것이 좋다.)



3. 진단과 모니터링 기능이 좋아졌다.
   - Performance Schema
      MySQL 서버 실행상태를 low 레벨에서 확인 할 수 있다.
      MySQL 데이터 디렉토리를 보면  performance_schema DB가 기본적으로 설치된다. 이 테이블을 이용한다고 하며 자세한 것은 mysql 메뉴얼을 참고하기 바란다.

   - DTrace 지원
      이는 Solaris, Mac OS X, FreeBSD 에서 사용되는 것이라니 skip 한다.

   - SHOW ENGINE INNODB STATUS 의 결과가 더 자세해 졌다.

   - Debug Sync : 디버그를 위한 동기화 포인트를제공한다.
  
   - 새로운 상태 변수 제공
      Innodb_have_atomic_builtins : innodb의 사용가능한 atomic instruction의 상태를 보여준다.(On/Off)



4. Solaris 에서  MySQL Server를 운영함에 있어 여러 명령어가 변경 및 향상되었다.
    난 Solaris를 거의 사용하지 않기에 skip


5. 기본 storage engine 가 MyISAM 에서 InnoDB로 바뀌었다.



6. Semisynchronous Replication 지원
   -  MySQL의 Replication은 기본적으로 비동기식이지만, Semi비동기식 리플리케이션을 제공한다.
      Semi비동기식이란 Master의 blocks을  Slave의 응답을 받은 후 처리한다.
   - 기본은 아니고 PLUGIN으로 설치해야 한다.
      INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
      INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';


7. 새로운 유니코드 언어셋을 지원한다.
   utf16, utf32, utf8mb4


8. 테이블 파티셔닝의 향상
   - 2가지의 새로운 사용자 정의 테이블 파티셔닝을 제공한다.
     RANGE COLUMNS 파티셔닝 ,  LIST COLUMNS 파티셔닝을 제공한다.
     예) RANGE COLUMNS 파티셔닝
         PARTITION BY RANGE (store_id) (
            PARTITION p0 VALUES LESS THAN (6),
            PARTITION p1 VALUES LESS THAN (11)
         );
 

     예) LIST COLUMNS 파티셔닝
        PARTITION BY LIST(store_id) (
            PARTITION pNorth VALUES IN (3,5,6,9,17),
            PARTITION pEast VALUES IN (1,2,10,11,19,20)
        );

 


9. 표준 SQL의 SIGNAL과 RESIGNAL 구문 제공
   오류 핸들링을 위해 제공한다.



10. LOAD XML INFILE 구문이 추가 되었다.




11. MySQL인증방식에서 pluggable authentication 과 proxy user 인증이 추가 되었다.
    pluggable 인증으로  LDAP, Kerberos, PAM, or Windows login ID 등을 사용할 수 있다.



12. 소스 설치 하는 방법이 바뀌었다.
    GNU autotools 대신 CMake를 사용한다. 설치법은 다음과 같다. ( cmake는 미리 설치해야 한다)

        cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  \
        -DDEFAULT_CHARSET=utf8 \
        -DDEFAULT_COLLATION=utf8_general_ci \
        -DENABLED_LOCAL_INFILE=1 \
        -DWITH_SSL=system \
        -DMYSQL_DATADIR=/usr/local/mysql/data \
        -DWITH_READLINE=ON

        make -j 4
        make install

    * CMake 를 사용하면 아래와 같이 컴파일 과정에 진행률과 보기좋게 컬러로 나온다.
    





13. 제거된 내용들
    1) language 시스템 변수 제거 (lc_messages_dir와 lc_messages를 사용)
    2) log_bin_trust_routine_creators 시스템 변수 제거  (log_bin_trust_function_creators 사용)
    3) myisam_max_extra_sort_file_size 시스템 변수 제거
    3) record_buffer 시스템 변수 제거 (read_buffer_size 사용).
    4) sql_log_update 시스템 변수 제거.
    5) Innodb_buffer_pool_read_ahead_rnd와 Innodb_buffer_pool_read_ahead_seq 상태 변수 제거
         (Innodb_buffer_pool_read_ahead와 Innodb_buffer_pool_read_ahead_evicted 사용).
    6) table_type 시스템 변수 제거(storage_engine 사용).
    7) TIMESTAMPADD() 함수를 위한 FRAC_SECOND 수정자 제거 (MICROSECOND 사용)
    8) CREATE TABLE 이나  ALTER TABLE시  TYPE 테이블 옵션 제거( ENGINE 사용).
    9) SHOW TABLE TYPES 구문 제거 (SHOW ENGINES 사용).
    10) SHOW INNODB STATUS 와 SHOW MUTEX STATUS 구문 제거 ( SHOW ENGINE INNODB STATUS,  SHOW ENGINE INNODB MUTEX 사용).
    11) SHOW PLUGIN 구문 제거  (SHOW PLUGINS 사용).
    12) LOAD TABLE ... FROM MASTER 와 LOAD DATA FROM MASTER 구문 제거 (mysqldump, mysqlhotcopy사용하여 덤프 및 mysql을 사용하여 reload ).
    13) BACKUP TABLE 와 RESTORE TABLE 구문 제거 (mysqldump, mysqlhotcopy사용하여 덤프 및 mysql을 사용하여 reload ).
    14) TIMESTAMP(N) 데이터 타입 제거 ( N 없이 사용 하라)
    15) --default-character-set 과 --default-collation 서버 옵션 제거 (--character-set-server 과 --collation-server 사용).
    16) --default-table-type 서버 옵션 제거 (--default-storage-engine 사용).
    17) --delay-key-write-for-all-tables 서버 옵션 제거 (--delay-key-write=ALL 사용).
    18) --enable-locking과 --skip-locking 서버 옵션 제거 (--external-locking과 --skip-external-locking 사용).
    19) --log-bin-trust-routine-creators 서버 옵션 제거 (--log-bin-trust-function-creators 사용).
    20) --log-long-format 서버 옵션 제거
    21) --log-update 서버 옵션 제거
    22) --master-xxx 서버 옵션 제거 (CHANGE MASTER TO 구문 사용):
         --master-host, --master-user, --master-password, --master-port, --master-connect-retry,
         --master-ssl, --master-ssl-ca, --master-ssl-capath, --master-ssl-cert, --master-ssl-cipher, --master-ssl-key.
    23) --safe-show-database 서버 옵션 제거
    24) --skip-symlink와 --use-symbolic-links 서버 옵션 제거 (--skip-symbolic-links와  --symbolic-links 사용).
    25) --sql-bin-update-same 서버 옵션 제거
    26) --warnings 서버옵션 제거 (--log-warnings 사용).
    27) mysql명령어의 --no-named-commands 옵션 제거 (--skip-named-commands 사용).
    28) mysql명령어의 --no-pager 옵션 제거(--skip-pager 사용).
    29) mysql명령어의 --no-tee 옵션 제거 (--skip-tee 사용).
    28) mysqlbinlog명령어의 --position 옵션 제거 (--start-position 사용).
    29) mysqldump명령어의 --all 옵션 제거 (--create-options 사용)
    30) mysqldump명령어의 --first-slave 옵션 제거(--lock-all-tables 사용).
    31) mysqld_multi명령어의 --config-file 옵션 제거(--defaults-extra-file 사용).
    32) --set-variable=var_name=value과 -O var_name=value과 같이 일번적인 목적의 프로그램 변수 설정은 제거 (--var_name=value 사용).
    33) configure를 위한 --with-pstack 옵션 제거, mysqld를 위한 --enable-pstack 옵션 제거



14. 기타 소스 설치 후 달라 진 내용들 ( doly가 추가함 )
    1) mysql_install_db 프로그램의 경로가 변경되었다.
        /usr/local/mysql/scripts 로 바뀌었다.

    2) my.cnf 셈플 및 mysql.server 스크립트의 경로가 변경되었다.
        /usr/local/mysql/support-files

    3) 헤더 파일 및 라이브러리 디렉토리가 변경되었다.
        /usr/local/mysql/lib
        /usr/local/mysql/include

    4) PHP 연동시 라이브러리 위치 때문에 libmysqlclient.so.18 파일을 찾을 수 없다고 한다.
        ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib 이렇게 링크를 걸어 주면 끝난다.



참고자료 : http://dev.mysql.com/doc/refman/5.5/en/mysql-nutshell.html

[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1759


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
도리
도리(Doly)
(주)수퍼유저 기술이사 (CTO)
리눅스마스터 1급,2급 추천교재(2014년) 집필
리눅스마스터 1급,2급 전문위원(출제)(한국정보통신진흥협회, 2005년~)
SULinux 1.0, 1.5, 2.0, 2014 개발 총괄(sulinux.net, 1998년~)
SSU,LSCP,LSMP,CCMT외 다수 오픈소스 프로젝트 개발 및 운용 (lscp.sf.net외,2009년~)
리눅스 대량 시스템 구축 및 관리(5,000대리눅스 서버 구축 및 관리 경험, 2000년~)

E-Mail : doly골뺑이superuser.co.kr
소개 : 하루 하루 최선을 다합시다!!