MySQL 에서 테이블을 만들다 보면 4 G 이상의 크기가 되면 (ERROR 1114 (HY000): The table 'TBSOJM00' is full ? ) 이런 류의 에러를 발생하게 됩니다. 이것은 테이블의 크기가 기본적으로 4GB 로 되어 있기 때문에 발생하는 오류입니다. 이것을 해결하기 위한 글입니다.
---- Mysql을 처음 사용하는 초보로써 마땅히 해결방법을 찾지 못하다가 도움을 주신분들을 통해 Menual을 찾아 그 문제를 해결하였습니다. 저 같이 초보되신 분들이 같은 문제로 고민할것 같아 정리해 보았습니다.
Error Code: ERROR 1114 (HY000): The table 'TBSOJM00' is full
정리: tbsojm00이라는 Table이 4GB로 제한된 Size에 때문에 table에 full이 난 상황이며, 이에 대한 해결방법입니다.
먼저, 해당Table에 대한 정보를 조회합니다. mysql>환경에서 입력해야 합니다.
[Syntax] show table status from DataBase명 like 'Table명'; [예제] DataBase명- korea, table명-seoul일 경우 show table status from korea like 'seoul';
조회된 결과에서 max_rows Column과 avg_row_length Column값을 변경하면 됩니다. [Syntax] alter table table명 max_rows=레코드수 avg_row_length=원하는테이블용량 [예제] 레코드수-1억건, 원하는테이블용량-60GB일 경우 alter table seoul max_rows=100000000 avg_row_length=60240000000;
[도움이 된 싸이트] http://www.mysql.com/doc/en/Full_table.html
테스트 결과 현재 6GB를 넘겼습니다. |
참고로 Windows 계열에서 FAT32 로 포맷팅되어 있는 경우 파일의 최대 크기가 filesystem 자체에서 4GB 로 한정되게 되어 있습니다. 그러므로 이런 경우는 파일 크기를 늘일 방법이 없습니다. filesystem 을 NTFS 로 변경하셔야 합니다.
게시판에서 "테이블의 최대 크기를 4 G 이상으로 늘이는 방법" 에 대해 2가지 의견이 있어, 그 의견중 어떤 것이 정확한 것인지 문의합니다.
<사용자가 원하는 테이블 조건>
1. 레코드 수(MAX_ROWS) : 1억개의 튜플(레코드),
2. 테이블의 크기 : 100G 라고 가정했을때,
다음 1)과 2) 중 어느 것이 정확한 건지 아시는 분 있으면 꼭 답변 부탁드립니다
(편의상 1KB = 1000Byte 으로 계산).
1) 테이블 크기= max_rows * avg_row_length
100,000,000,000 Byte = 100,000,000 레코드 * avg_row_length
=> avg_row_length = 1000 Byte , max_rows = 100,000,000 레코드
2) avg_row_length : 원하는 데이블 용량,
max_rows : 레코드 수
=> avg_row_length = 100 GB = 100,000,000,000 Byte,
=> max_rows = 1억 튜플 = 100,000,000 레코드
위의 2 가지 중에서 어떤 것이 맞는 건지 꼬오옥 좀 답변 바랩니데이...
그럼 이만 욕보쇼이...
MySQL Administrator 프로그램에서,
Catalogs 메뉴를 클릭하고 좌측의 테이블 목록에서 해당 테이블을 선택하세요.
하단의 Details>> 를 누른후 Row Status를 보시면 현재 테이블의 정보가 보입니다.
즉, Avg row length * Rows가 테이블의 용량이 되는 것입니다.
만약 1MB의 이미지 데이터가 100개 있는 경우에는
avg row length = 1 * 1024 * 1024
rows = 100
이렇게 하시면 됩니다.
alter table seoul max_rows=100000000 avg_row_length=60240000000;
초기갑 4294967295
mysql> use chit_mail
Database changed
mysql> alter table aid Max_data_length=60240000000;
ERROR 1064: 'SQL 구문에 오류가 있습니다.' 에러 같읍니다. ('Max_data_length=60240000000' 명령어 라인 1)
mysql> alter table max_rows=100000000 avg_row_length=60240000000;
Query OK, 0 rows affected (0.09 sec)
레코드: 0개 중복: 0개 경고: 0개
mysql> show table status from
+------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+---------------------------------------------+---------+
| Name | Type | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Create_options | Comment |
+------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+---------------------------------------------+---------+
| aid | MyISAM | Dynamic | 0 | 0 | 0 | 281474976710655 | 1024 | 0 | 1 | 2006-09-27 18:00:20 | 2006-09-27 18:00:20 | NULL | max_rows=100000000 avg_row_length=110457856 | |
+------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+---------------------------------------------+---------+
1 row in set (0.04 sec)
mysql>
댓글 없음:
댓글 쓰기