ASP : MySQL UTF-8 로 접속하기

ASP가 UTF-8 환경이고 MySQL DB가 UTF-8 일 때 다음의 연결 문자열을 사용해서 처리가 가능하다.

Driver={MySQL ODBC 5.1 driver};Server=localhost;Port=3306;Option=3;Database=db;Uid=id; Pwd=password;charset=utf8

MySQL ODBC 3.51에서는 도저히 방법을 찾지 못했다. 또한 MySQL  ODBC 5.1.10에서는 System 오류(Specified driver could not be loaded due to system error 127)가 발생했고, MySQL ODBC 5.1.4 버전에서는 동작을 했다.

WINDOWS 2000 서버에 MYSQL 5.5 설치시 MINIDUMPWRITEDUMP, FREEADDRINFO 오류 해결법

윈도우 2000 서버에 MySQL 5.5 버전대는 설치하면서 Start Service 과정에서 오류가 발생할 수 있다. 이런 경우 이벤트 뷰어로 다음 둘 중의 하나의 오류가 보일때 해결 방법을 설명하고자 한다.

The procedure entry point MiniDumpWriteDump could not be located in the dynamic link library dbghelp.dll

The procedure entry point freeaddrinfo could not be located in the dynamic link library WS2_32.dll.

  1. MySQL을 uninstall 한다.
  2. C:\Program Files\MySQL\MySQL Server 5.5\bin 폴더를 만든다
  3. ws_dbghlp.zip을 다운받는다.ws_dbghlp.zip 
  4. 압축을 풀면 3가지 파일이 나온다. 하나는 dbghelp.dll의 업데이트 버전이고, 다른 두개는 ws2_32.dll KDI Wrapper 버전이다. 이 세가지 파일을 C:\Program Files\MySQL\MySQL Server 5.5\bin 폴더에 복사한다.
  5. 이렇게 하면 오류를 막기 위한 환경 설정 끝. MySQL을 다시 설치한다. 이번에는 오류가 발생하지 않고 설치가 잘 될것이다.

MySQL의 MYISAM과 InnoDB 타입의 성능비교

제목이 너무 거창한데 어제 처음으로 MS SQL Server에서 MySQL로 데이타 복사를 하면서 느낌 점을 적어보자 한다.

MS SQL Server에 40만건의 데이타를 갖고 있는 테이블을 DTS를 이용해서 MySQL ODBC 3.51 드라이버를 이용하여 Export를 시작했다. 근데 영 속도가 안나오는 거다. 1시간정도 경과, 9만건의 데이타가 복사됐다. 와! 너무 느렸다. 모두 복사되려먼 4시간을 더 기다려야 하는데 이건 내가 뭔가 설정을 잘못했을 거야 생각하고 Export를 중단하고 여러가지를 체크해봤다.

MySQL에 생성된 테이블 형태를 보니 InnoDB 형태였다. 트랜잭션을 지원하는 게 InnoDB라고 알고 있는 나로서는 굳이 트랙잭션이 필요없어서 이를 MYISAM 타입으로 바꿔서 다시 Export를 시도해보았다. 엄청나게 빨라진 복사 속도. 5분도 안되서 40만건이 데이타가 복사됐다.

InnoDB로는 40만건의 데이타를 Insert하는데 5시간정도가 걸리고, MYISAM 형태로는 5분미만이 걸린다는 결론. 내가 MySQL을 잘 몰라서 다른 고려 사항도 있겠지만, InnoDB는 Insert시 확실히 느렸다.  MySQL 버전 5부터 InnoDB 성능이 많이 향상됐다고 들었는데, 내가 체험해보기에는 MYISAM보다는 Insert에서 만큼은 차이가 많이 났다.