• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 서비스
    • MySQL유지보수
    • MySQL라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.1 한글메뉴얼) [close]
  • 1. MySQL 5.1 Reference Manual
  • 2. Installing and MySQL 업그레이드하기
  • 1. 설치 관련 일반 사항
    2. 바이너리 배포판을 사용해서 MySQL을 설치하는 표준 방법
    3. 윈도우에 MySQL 설치하기
    1. 설치 패키지 선택하기
    2. 자동 인스톨러를 사용해서 MySQL 설치하기
    3. MySQL설치 마법사 사용하기
    4. 구성 마법사 사용하기
    5. 노인스톨 집 아카이브 (Noinstall Zip Archive)로부터 MySQL 설치하기
    6. 설치 아카이브 풀기
    7. 옵션 파일 생성하기
    8. MySQL 서버 타입 선택하기
    9. 처음으로 서버 시작하기
    10. 윈도우 명령어 라인에서 MySQL 시작하기
    11. 윈도우 서비스로 MySQL 시작하기
    12. MySQL 설치 테스트하기
    13. 윈도우 환경에서 MySQL 설치 문제 해결
    14. 윈도우에서 MySQL 업그레이드 하기
    15. 윈도우 MySQL과 유닉스 MySQL 비교하기
    4. RPM 패키지를 사용해서 리눅스에 MySQL 설치하기
    5. Mac OS X에 MySQL 설치하기
    6. Solaris에 MySQL 설치하기
    7. Installing MySQL on NetWare
    8. 다른 유닉스 유사 시스템에 tar.qz 패키지를 사용해서 MySQL 설치하기
    9. 소스 배포판을 사용해서 MySQL 설치하기
    10. 설치 후 설정 및 테스팅
    11. MySQL 업그레이드 하기
    12. MySQL 다운그레이드 하기
    13. OS 관련 노트
    14. 환경 변수
    15. Perl Installation 노트
  • 3. 사용 설명서 (Tutorial)
  • 4. MySQL 프로그램 사용하기
  • 5. 데이터베이스 관리
  • 6. 리플리케이션
  • 7. 최적화 (Optimization)
  • 8. 클라이언트 및 유틸리티 프로그램
  • 9. 언어 구조 (Language Structure)
  • 10. 문자 셋 지원
  • 24. API 및 라이브러리
  • 25. Connectors

2.3.15. 윈도우 MySQL과 유닉스 MySQL 비교하기

 

윈도우용 MySQL은 매우 안정적이라는 것은 이미 검증되어 있다. MySQL 윈도우 버전은 이에 대응하는 유닉스 버전과 동일한 기능을 갖고 있지만, 아래와 같은 점에서는 차이를 가지고 있다:

  • 제한된 포트 수

윈도우는 클라이언트를 위해 약 4,000개의 포트를 사용할 수 있으며, 또한 한 포트에서 연결이 종료된 후에는, 그 포트를 다시 사용할 수 있을 때까지 2 ~ 4분 정도가 걸리게 된다. 이 같은 경우에, 클라이언트가 서버와 매우 빈번하게 연결 및 해제를 하게 되면, 종료된 포트를 다시 사용하기 전에 모든 포트가 사용될 가능성이 생기게 된다. 만일 이러한 일이 발생하면, MySQL 서버는 구동을 하더라도 무응답 상태가 되게 된다. 플랫폼에 있는 다른 어플리케이션도 포트를 사용하기 때문에, 이와 같은 경우 MySQL이 사용할 수 있는 포트는 매우 적은 수가 된다는 점을 알아두기 바란다.

 

http://support.microsoft.com/default.aspx?scid=kb;en-us;196271을 참조하여 이 문제에 관련된 보다 많은 정보를 얻기 바란다.

  • Concurrent Reads

MySQL은 INSERT 와 SELECT를 섞어 사용하기 위해서 pread() 및 pwrite() 시스템 호출을 사용한다. 현재의 버전까지는, 우리는 mutexes를 사용해서 pread()와 pwrite()를 모방(emulate)하고 있다. 우리는 향후에 가상의 인터페이스를 가지고 파일 레벨 인터페이스를 대신해서 보다 빠른 속도로 readfile()/writefile()를 실행시킬 예정이다. 현재까지는 MySQL5.0이 사용할 수 있는 오픈 파일의 숫자를 2,048개로 제한 하는데, 이것은 유닉스에서와 같이 많은 수의 쓰레드를 윈도우에서는 구동할 수 없음을 의미한다.

  • Blocking read

MySQL은 각각의 연결에서 블록킹 읽기를 사용한다. 네임드 파이프 연결이 활성화 될 경우에는 다음의 동작이 실행된다:

    • MySQL의 유닉스 버전에서와 마찬가지로, 한번 연결된 것은 자동으로 8시간 동안 끊기지 않게 된다.
    • 연결이 행(hang) 상태가 된다면, MySQl을 강제로 종료하기 전에는 끝낼 수가 없게 된다.
    • mysqladmin kill은 슬리핑(sleeping) 연결에서는 동작하지 않는다.
    • mysqladmin shutdown는 슬리핑 연결이 되어 있는 한 종료할 수 없다.

이 문제에 대해서는 나중에 해결할 계획이다.

  • ALTER TABLE

여러분이 ALTER TABLE 명령문을 실행 시키는 동안, 테이블은 다른 쓰레드에 의해 잠기게(locked) 된다. 윈도우에서는 필연적으로 이러한 일이 발생하고, 여러분은 다른 쓰레드가 사용중에 있는 파일을 삭제할 수 없게 된다. 향후에, 이 문제를 해결하도록 할 것이다.

  • DROP TABLE

MERGE 테이블이 사용하는 테이블에서 DROP TABLE 작업은 MERGE 핸들러가 MySQL의 최상위 계층으로부터 테이블 매핑을 숨기기 때문에 윈도우에서는 작동되지 않는다. 윈도우는 열려 있는 파일을 드롭핑하는 것을 허용하지 않기 때문에, 여러분은 우선 모든 MERGE 테이블을 가져 오거나 또는 테이블을 삭제하기 전에 MERGE 테이블을 삭제해야만 한다.

  • DATA DIRECTORY and INDEX DIRECTORY

CREATE TABLE 에 대한 DATA DIRECTORY 및 INDEX DIRECTORY 옵션들은 윈도우에서는 무시 되어지는데, 그 이유는 윈도우가 심볼릭 링크를 지원하지 않기 때문이다. 이러한 옵션들은 비 함수적인(non-functional) realpath() 호출을 갖는 시스템에서도 무시된다.

  • DROP DATABASE

다른 쓰레드가 사용하고 있는 데이터 베이스를 삭제할 수 없다.

  • Case-insensitive names

윈도우에서는 파일 이름의 대소 문자를 구분하지 않기 때문에 윈도우상의 MySQL 데이터베이스 및 테이블 역시 대소 문자를 구분하지 않는다. 단, 데이터 베이스와 테이블 이름은 명령문에서 지정하는 대소 문자와는 똑 같이 사용해야 한다.

  • ‘\’ pathname separator character

윈도우에서는 경로 이름을 ‘\’ 문자로 구분하는데, MySQL에서는 이 문자를 종료 문자로도 사용한다. 만약에 여러분이 LOAD DATA INFILE 또는 SELECT ... INTO OUTFILE를 사용한다면,  ‘/’ 문자를 가진 파일 이름을 사용하기 바란다:

 

mysql> LOAD DATA INFILE 'C:/tmp/skr.txt' INTO TABLE skr;

mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;

 

아니면, ‘\’문자를 두 번 연속 사용해야 한다:

 

mysql> LOAD DATA INFILE 'C:\\tmp\\skr.txt' INTO TABLE skr;

mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;

  • Problems with pipes

파이프는 윈도우 명령어 라인에서 정확히(reliably) 동작하지 않는다. 만약에 파이프가 문자 ^Z / CHAR(24)를 포함하고 있다면, 윈도우는 이것이 파일의 끝이고 프로그램을 종료하라는 의미로 받아 들인다.

 

이것은 주로 아래와 같이 바이너리를 적용하고자 할 때 문제를 일으킨다:

 

C:\> mysqlbinlog binary_log_file | mysql --user=root

 

만약에 로그를 적용하는데 문제가 있고 이 문제가 ^Z / CHAR(24) 문자 때문이라고 의심이 되면, 아래와 같이 다른 방법을 사용하기 바란다:

 

C:\> mysqlbinlog binary_log_file --result-file=/tmp/bin.sql

C:\> mysql --user=root --execute "source /tmp/bin.sql"

 

두 번째 명령어는 바이너리 데이터를 갖고 있는 어떤 SQL 파일에서도 안정적으로 사용할 수 있는 것이다.

  • Access denied for user error

만약에 MySQL이 호스트 이름을 정확하게 풀지 못하면, MySQL클라이언트 프로그램을 구동시켜서 동일 머신의 서버에 연결할 때 아래와 같은 에러를 보게 된다:

 

Access denied for user 'some_user'@'unknown'

to database 'mysql'

 

이 문제를 해결하기 위해서는, 아래의 정보를 갖는 \windows\hosts라는 파일을 하나 만들어야 한다:

 

127.0.0.1       localhost

서울시 강남구 영동대로 602 6층  TEL: 02-6061-0006
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved