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 23324 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 23324
MySQL [3.23 -> 4.0] 업그레이드시 체크할것
작성자
이경환(babocom)
작성일
2005-03-17 11:00ⓒ
2005-07-18 01:16ⓜ
조회수
10,638

## 다른분들의 편의를 위해 허접한 실력이지만 번역해 봅니다..

## 이글을 작성당시 4.0 최신버전은 4.0.23 입니다.

## 이글은 mysql document 중 Upgrading from Version 3.23 to 4.0 을 번역한 겁니다.

 

- ISAM 테이블은 더이상 지원되지 않을것이며 4.1 버전에선 디폴트로 포함되지 않을 것이다.
- 4.0 에서 3.23 으로 다운그레이드 할때 full text index 를 사용하고 있다면 반드시 dump & restore 를 해야 한다. 4.0 버전은 3.23 과 다른 full text index 포멧을 사용한다.


[Server Changes]

1. 권한테이블의 변경(user 테이블에 몇가지 컬럼 추가)

2. --safe-show-database 옵션이 없어졌다.

3. safe_mysqld 가 mysqld_safe 로 변경되었다. 하위호환을 위해 safe_mysqld 는 mysqld_safe 의 심볼릭링크로 여전히 존재한다.

4. InnoDB 가 디폴트로 지원된다. InnoDB 사용을 원하지 않으면 서버시작시 --skip-innodb 옵션을 사용하라. 컴파일시 InnoDB 지원을 원하지 않으면 --without-innodb 옵션을 사용하여 컴파일하라.

5. myisam_max_extra_sort_file_size 와 myisam_max_extra_sort_file_size 의 설정값이 byte 단위로 입력된다. (4.0.3 이전까진 MB 단위로 입력되었다.)

6. --temp-pool 옵션이 디폴트로 적용된다. 이 옵션은 리눅스에서 성능향상이 있다.

7. --skip-locking 와 --enable-locking 옵션이 --skip-external-locking 와 --external-locking 로 변경되었다.

8. MyISAM/ISAM 에 대한 외부잠금이 디폴트로 비활성화 되었다. --external-locking 옵션으로 활성화할 수 있다.

9. 다음과 같은 시작변수와 옵션명이 변경되었다.

Old Name New Name
myisam_bulk_insert_tree_size bulk_insert_buffer_size
query_cache_startup_type query_cache_type
record_buffer read_buffer_size
record_rnd_buffer read_rnd_buffer_size
sort_buffer sort_buffer_size
warnings log-warnings
--err-log --log-error (for mysqld_safe)

10. record_buffer, sort_buffer 및 warnings 시작옵션이 여전히 존재하지만 추후 삭제될 예정이다.

 

[SQL Changes]

1. 다음의 SQL 변수들의 이름이 변경되었다.

Old Name New Name
SQL_BIG_TABLES BIG_TABLES
SQL_LOW_PRIORITY_UPDATES LOW_PRIORITY_UPDATES
SQL_MAX_JOIN_SIZE MAX_JOIN_SIZE
SQL_QUERY_CACHE_TYPE QUERY_CACHE_TYPE

예전이름도 4.0 버전에선 여전히 사용가능하지만 추후 삭제될 예정이다.

2. SET SQL_SLAVE_SKIP_COUNTER=skip_count 대신에

SET GLOBAL SQL_SLAVE_SKIP_COUNTER=skip_count 를 사용해야 한다. (변수들이 GLOBAL 과 SESSION 으로 구분되었다.)

3. 바이너리 로그를 기록하지 않는다면 SHOW MASTER STATUS 는 널값을 리턴할 것이다.

4. slave 가 시작되지 않았다면 SHOW SLAVE STATUS 는 널값을 리턴할 것이다.

5. SHOW INDEX 에 두가지 정보가 추가되었다. (Null 과 Index_type)

6. SHOW OPEN TABLES 의 양식이 변경되었다.

7. ORDER BY col_name DESC 는 NULL 값을 마지막에 정렬한다. 3.23 과 4.0 초기버전에서는 이에 대한 규칙이 없었다.
8. CHECK, LOCALTIME, 와 LOCALTIMESTAMP 들이 예약어로 추가되었다.

9. DOUBLE 과 FLOAT 컬럼이 UNSIGNED 표기를 가진다. (이전에는 UNSIGNED 는 무시되었다.)

10. 모든 비트연산(|, &, <<, >>, and ~)의 결과는 unsigned 이다. 이것은 signed 결과가 필요한 곳에서 문제가 될 수 있다.

[주의]정수연산에서 어느한쪽이 unsigned 타입이면 결과는 unsigned 이다. 4.0 으로 이전하기 전에 정수연산에서 발생할 수 있는 문제를 체크하라. 이 기능은 서버시작시 --sql-mode=NO_UNSIGNED_SUBTRACTION 옵션을 사용하여 활성화하지 않을 수 있다.

11. BIGINT 컬럼에 integer 값으로 입력할 수 있다. (3.23 에서는 string 으로 입력해야 했으며 여전히 동작한다.)

12. 3.23 에서 INSERT INTO ... SELECT 는 무조건 IGNORE 로 동작하였다. 4.0 에서는 IGNORE를 명시하지 않을때 에러가 발생하면 중단하거나 롤백할 것이다.

13. 테이블의 모든 열을 지우고 리턴값을 받을 필요가 없을때 TRUNCATE TABLE 을 사용하라.(delete 보다 빠르다.)
(4.0 에서 DELETE FROM tbl_name 는 삭제된 열수를 리턴하며 AUTO_INCREMENT 카운터를 리셋하지 않는다. )

14. TRUNCATE TABLE 이나 DROP DATABASE 을 실행시 실행중인 트랜잭션이나 LOCK TABLES 가 있을때는 에러가 발생할 것이다.

15. MATCH ... AGAINST (... IN BOOLEAN MODE) 로 full-text 검색을 사용하기 위해서는 REPAIR TABLE tbl_name USE_FRM 명령으로 인덱스를 재구성해야 한다.
인덱스를 재구성하지 않고 boolean mode full-text 검색을 사용하면 정확하지 않은 결과가 리턴될 것이다.

16. LOCATE() 와 INSTR() 는 binary string 이 인자로 사용될때 대소문자를 구분할 것이다. 그렇지 않은 경우에는 대소문자 구분을 하지 않는다.

17. STRCMP() 실행시 현재 글자셋을 비교 기준으로 사용한다. binary string 을 인자로 사용하지 않는다면 대소문자 구분을 하지 않을것이다.

18. HEX(str) 은 문자를 hex 값으로 리턴한다. 숫자값을 hex 값으로 바꾸고 싶다면 숫자타입의 인자를 사용하라.
19. RAND(seed) 는 3.23 과는 다른 난수열을 리턴한다. 이것은 RAND(seed) 와 RAND(seed+1) 의 차이를 더 명확히 하기 위해 도입되었다.
20. IFNULL(A,B) 의 리턴값은 A 와 B 중 더 범용적인 타입으로 리턴될 것이다.

(타입의 범용 순서는 string, REAL, INTEGER 순이다.)

 

[C API Changes]

1. MySQL 컴파일시 CFLAGS=-DUSE_OLD_FUNCTIONS 를 명시하지 않으면 mysql_drop_db(), mysql_create_db(), mysql_connect() 를 사용할 수 없다.

4.0 의 새로운 API 들을 사용하도록 클라이언트 프로그램을 변경하는 것이 더 좋다.

2. MYSQL_FIELD 구조체의 length 와 max_length 가 unsigned int 에서 unsigned long 으로 변경되었다. 문제가 발생하진 않겠지만 printf() 류의 함수에서 인자로 사용시 warning message 를 발생할 것이다.

3. 멀티쓰레드 클라이언트는 mysql_thread_init() 와 mysql_thread_end() 을 사용하라.

 

[Other Changes]

Perl DBD::mysql module 을 다시 컴파일하기 위해서는 최신버전을 사용하라. 2.9003 버전을 추천한다. 1.2218 이전버전은 이미 삭제된 mysql_drop_db() 호출을 사용하기 때문에 사용할 수 없다.

[Top]
No.
제목
작성자
작성일
조회
23508SAPDB Roks!
정재익
2002-08-08
8492
23327MySQL [4.1 -> 5.0] 업그레이드시 체크할것
이경환
2005-03-17
10868
23326MySQL [4.0 -> 4.1] 업그레이드시 체크할것
이경환
2005-03-17
14669
23324MySQL [3.23 -> 4.0] 업그레이드시 체크할것
이경환
2005-03-17
10638
22937MySQL 을 이용한 프로그램 개발시 라이센스에 유의하시기 바랍니다. [4]
정재익
2005-01-11
12996
21398MySQL 3.x->4.x 로 가면서 달라진 점.
정재익
2004-03-29
19443
21156MySQL 라이센스 [2]
정재익
2004-02-26
16320
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다