Background Image

FORUM

ysh
조회 수 552 추천 수 0 댓글 14
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Window7 32bit, Linux 64bit 등
CUBRID Ver.
[cubrid_rel] 수행 결과
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java, php, odbc 등 입력


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요 매일 1억건의 데이터가 인서트되고, 삭제됩니다

인서트는 해결을 했는데 1억건 가량의 데이터를 삭제하는 쿼리를 jar로 만들어 주기적으로 돌리면 FATAR ERROR가 발생합니다

 

원인과 해결책을 알려주시면 정말 감사하겠습니다..

 

  • ?
    오명환 2021.04.21 09:11
    첨부해주신 내용만 가지고는 어떤 문제인지 확인이 어렵습니다. 다음과 같은 추가 정보를 올려주시면 감사드리겠습니다.
    (1) 사용하시는 큐브리드 cubrid version
    (2) 사용하시는 OS
    (3) $CUBRID/log/server 아래의 로그 파일들 (zip으로)
    (4) $CUBRID/conf/cubrid.conf 파일
    (5) 1억건 가량의 데이터 삭제 관련 질문
    - 해당 테이블에서 1억건이 차지하는 비율은 어떻게 되나요 ?
    - 1억건을 delete 하실때, commit 주기는 어떻게 되나요 ? 예를 들어 1억건를 한꺼번에 지우고 commit를 하는지, 아니면 특정 단위로 지우면서 commit를 하는지..
  • ?
    ysh 2021.04.22 11:48 Files첨부 (1)

    (1) CUBRID 10.1 (10.1.4.7800-ccdd47b) (64bit release build for Linux) (May 27 2020 15:10:26)
    (2) 우분투 16.04
    (3) 업로드 용량을 초과해서 따로올리겠습니다 ㅠㅠ

    (4) 첨부하였습니다

    (5) 1. 약 1억건 가량의 데이터가 매일들어오는데 이틀전 데이터를 jar로 돌려 지우려고 하고 있습니다. 총 2~3억건이라 차지하는 비율은 30~50퍼센트 정도되는것 같습니다

    2. sql에 commit문은 따로 안적은것같습니다..ㅠㅠㅠ 그냥 sql로 delete문만 돌리고 있습니다 ㅠㅠ

  • ?
    ysh 2021.04.22 11:50 Files첨부 (1)

    로그첨부1

  • ?
    ysh 2021.04.22 11:52 Files첨부 (1)

    로그첨부2

  • ?
    ysh 2021.04.22 11:53 Files첨부 (1)

    로그첨부3

    여기까지 로그 첨부 다 올렸습니다. 감사합니다

  • ?
    오명환 2021.04.22 13:12
    올려주신 server 로그를 확인해보니 아래의 archive가 없어서 발생하는 문제인데요.
    /mnt/a/CUBRID-10.1.4.7800-ccdd47b-Linux.x86_64/databases/DINGDONG/DINGDONG_lgar484
    /mnt/a/CUBRID-10.1.4.7800-ccdd47b-Linux.x86_64/databases/DINGDONG/DINGDONG_lgar485

    현재 문제는 로그를 확인해보니, DINGDONG_lgar485 아카이브로그 파일이 없어서 서버 구동을 못 하고 있습니다.
    해당 아카이브 로그 파일이 있는지 확인부탁드립니다.

    그리고 혹시, 아카이브 로그 파일을 수동으로 삭제하셨는지요 ?
  • ?
    ysh 2021.04.22 13:39

    확인해보니 해당 로그파일이 없습니다 ㅠ 그런데 수동으로 삭제하지 않았습니다! ㅠㅠ

  • ?
    오명환 2021.04.22 13:42
    해당 로그 파일(DINGDONG_lgar484, DINGDONG_lgar485) 있는지 확인해주시고. /mnt/a/CUBRID-10.1.4.7800-ccdd47b-Linux.x86_64/databases/DINGDONG/DINGDONG_lginf 파일 첨부 부탁드립니다.
  • ?
    ysh 2021.04.22 14:07 Files첨부 (1)

    두로그 파일 모두 없습니다 ㅠ 첨부하였습니다!

  • ?
    오명환 2021.04.22 15:44
    올려주신 로그를 보면 아래와 같은 I/O 오류가 발생하면서부터 문제가 발생한 것으로 예측됩니다. 좀 더 자세한 것은 분석후 답변을 드리겠습니다.
    An I/O error occurred while synchronizing state of volume "/mnt/a/CUBRID-10.1.4.7800-ccdd47b-Linux.x86_64/databases/DINGDONG/DINGDONG_lgar486".... Bad file descriptor

    저희가 분석하는데 있어, 추가적인 질문드립니다.
    (1) cubrid.conf의 log_max_archives를 0 으로 하신 이유가 있나요 ?
    (2) 1억 delete 하실때 사용하신 query를 알려주시면 분석하는데 도움이 될 것 같습니다.
    (3) $CUBRID/conf/cubrid_broker.conf 도 올려주세요. 로그를 보면 max_clients 넘는 오류가 많이 출력되어 있습니다.

    현재 보내주신 로그로는 해당 DB를 재구동하거나 살리기는 힘들어 보입니다. 백업본이 있으면 복구하셔야 할 것 같습니다.
  • ?
    ysh 2021.04.23 10:36 Files첨부 (1)
    (1) 아뇨 제가 따로 설정하지는 않은것같습니다!
    (2) DELETE FROM trade_volume WHERE TO_DATETIME(trade_datetime) < ADDDATE(SYSDATETIME,-2) 입니다
    (3) 첨부하였습니다!

    DB는 다행히 백업받아놓은게 있어서 원인 해결하면 복구시킬수있을것같습니다 ㅠㅠ

  • ?
    오명환 2021.04.23 11:51

    DB 백업본이 있으니 다행이네요.

    올려주신 로그 및 설정 파일를 기반으로 수정 가이드 드립니다.
    (1) cubrid_broker.conf 변경
    broker1 ~ 28 까지를 설정이 min은 5, max가 400으로 되어 있는데, 이는 최대 11,200 까지 session을 만들겠다는 의미입니다. 아래에 설명드리는 것처럼 10.1은 최대 2,000 session을 열게 되어 있습니다. 그리고 사용하지 않는 broker는 off를 하시거나 설정 파일에 지워주세요.
    또한 broker에 connection의 기본값이 transaction단위로 share 할 수 있게 되어 있습니다.
    어떤 workload로 DB를 사용하는지 모르지만 broker1을 min 300, max 400 정도만 맞추고 broker1만 사용하셔도 될 것 같습니다.

    (2) cubrid.conf 변경
    - data_buffer_size 가 default값인 512M로 되어 있습니다. 해당 설정값은 cache buffer로 자주 사용하는 데이타 페이지를 올려 놓는 메모리입니다. memory 여유가 있으시면 올려주는 것이 성능에 도움이 됩니다.
    - log_max_archives = 10 정도 변경해주세요.
    - max_clients 은 10.1에서 최대 2,000 입니다. max_clients 숫자가 높을 수록 관련된 메모리를 잡게 되어 있습니다. 적당량을 권장드립니다.

    (3) table option 변경
    - 매일 1억건이 저장되고, 삭제되는 테이블에 대해서는 create table 시 reuse_oid option을 주셔야 공간 활용이 좋아집니다.
    자세한 내용은 https://www.cubrid.org/manual/ko/10.1/sql/schema/table_stmt.html#reuse-oid 를 참고하세요.

    alter table로는 reuse_oid를 변경할 수 없습니다. 새롭게 재생성을 해주세요.

    (4) 1억건 삭제하는 하는 로직은 다음과 같이 수정해주세요.

    commit 없이 1억건을 삭제하게 되면 로그가 많이 생성될 수 있습니다. 100,000 단위로 삭제 후 commit하는 것을 권장드립니다.
    다음은 pseudo code.입니다.
    while (1) {
    affected_row = DELETE FROM trade_volume WHERE TO_DATETIME(trade_datetime) < ADDDATE(SYSDATETIME,-2) limit 100,000
    if (affected_row <= 100,000) {
    commit
    break;

    } else {

    commit;

    }

    }

     

    (5) ulimit의 file descriptors 조정 필요 (로그를 보니 file descriptor 오류가 발생하면서 fatal error가 발생했습니다.)

    ulimit -a로 확인 가능하면 검색을 통해 file descriptor를 늘리는 방법을 파악해서 영구 반영하세요.

  • ?
    ysh 2021.04.23 13:36
    자세한 설명 정말 감사드립니다 ㅠㅠ
    적어주신대로 해보겠습니다!
  • ?
    필교 2021.04.25 14:14

    오 좋은 정보네요


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 142
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4481
1365 큐브리드 매니저 사용법 문의 2 유진욱 2018.10.24 552
1364 SELECT FETCH 문제 3 초보123 2018.03.07 552
1363 큐브리드 9.3 버전에서 dba 암호 분실시 어떻게 해야 하나요? 1 하늘나무 2018.07.04 552
» 매일 1억건의 데이터를 지울수 있는 방법이 필요합니다 14 file ysh 2021.04.20 552
1361 트리거, 프로시져 조회 문의 1 해리맥 2021.12.23 551
1360 큐브리드 매니저 9.3 인데요 모니터링 툴에서 데이터베이스 추가를 몇개까지 할수 있나요? 1 coolkkm 2017.09.26 550
1359 한글 컬럼 comments 변경은 어떻하는거죠? 아무리 봐조 모르겠습니다. 1 덴드로비움 2020.09.09 550
1358 날짜 데이터 변환 1 옐인 2019.07.03 547
1357 Edit Host 에러 (bad record MAC) 8 file 알고싶어요 2021.08.16 546
1356 failed to initialize broker shared memory 5 정민영 2020.11.04 545
1355 cubrid.conf 설정 질문 드립니다. 2 지옥성녀은비 2019.11.12 539
1354 특정 Table만 백업하는 방법 1 nagh 2021.01.06 538
1353 JDBC Driver로 부터의 오류메시지에 대한 질의 3 Fe2 2022.06.22 537
1352 select 쿼리 case변경 문의 3 yodongky 2017.08.18 535
1351 CUBRID-PHP-10.2-latest.tar.gz 설치 ../src/cci/cci_util.c:53:34: error: libregex38a/regex38a.h: No such file or directory 4 함마칙스 2020.07.29 534
1350 CUBRID Manager 오류 메시지 및 드라이버 버전에 따른 접속(DB 접근) 문제 3 뽀대남 2021.01.15 534
1349 함수 사용시 max, min 값 문의 4 kipo0821 2020.01.20 533
1348 CUBRID 11.2 쿼리 성능 이슈 13 tree1891 2022.08.02 532
1347 DB 이중화 관련 Clob 데이터는 어떻게 해야 하나요? 1 광합성 2018.01.16 522
1346 우분투 부팅시 cubrid 서버 자동 실행 8 정민영 2020.06.19 521
Board Pagination Prev 1 ... 128 129 130 131 132 133 134 135 136 137 ... 201 Next
/ 201

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales