Q&A

  • 빠른 insert를 할려고 하는데...
제가 해야할 작업이 단시간(?)내에 350만건 정도의 데이터를 insert해야할
작업입니다...
근데.. 속도를 최소한도로 할려고 하다보니.. 생각해낸게
thread를 이용해서 insert문을 돌리는 건데요
막상 할려고 하니 thread의 구현이 쉽지가 않네요..
자료를 찾아봐도 두세개의 thread를 만들어서 동시에
select문을 돌리는 것뿐이구.. 응용이 쉽지가 않네요..
전 while문 내에서 계속 돌려야 하는데...
thread pool이라는 개념도 있던데.. 이해도 안가구..
적당한 자료도 찾을 수가 없습니다...
어떠한 자료라도 괜찮습니다...
도움이 될만한 자료좀 부탁드립니다...
고수님들의 많은 도움 부탁드립니다...
4  COMMENTS
  • Profile
    KDDG_ZZOM 2003.04.15 07:13
    쓰레드를 이용해서 돌리면 빠르겠지만...

    350만건이면 배치성아닌가요?

    우선 테이블 인덱스를 삭제하고 인서트를 해도 쪼금 빠를겁니다...

    아니면... 데이타베이스가 뭔가요? 오라클이면 로더기능으로 인서트하는것도
    있고요...

    별도움 못드려 죄송합니다...

    참고로 저도 쓰레드에대해서는 잘모르지만... 데모밑에있는거 가지고 해보니깐
    되긴되던데...

    즐프하세요...


  • Profile
    서은구 2003.04.15 07:30
    답변 감사합니다..
    오라클이 맞기는 한데요.. 그게 고려될 사항이 많거든요..
    하나의 테이블이 여러개로 분산되기도 하구..
    여러개의 테이블이 하나로 통합이 되기도 하구..
    없던 필드도 생기고.. 계산 필드도 생기고... 있던게 없어지기도 하구..
    그래서 프로그램으로 처리한 후 돌릴려구 햇는데...
    insert 시간이 젤 오래 걸리네요.. ㅠ.ㅠ
    그래서 결국 생각한게 thread였답니다....
    insert 하는 부분만 쓰레드로 돌리고 바로 넘어가면
    다음꺼 처리하는 시간에 insert가 완료될듯해서요...
    제가 잘못 생각한거 일까요...???

  • Profile
    거리 2003.04.15 18:16
    많은 데이터라면 디비단에서 바로 프로시저 만들어서
    쓰시기 바랍니다.
    jsp에서 말하는 DBConnectionPool이라는거...
    요런식으로 스레드를 만들어도 가능하겠다고
    생각해봤습니다.


  • Profile
    장태원 2003.04.15 19:25
    쓰레드가 빠른것은 아닙니다.

    어짜피 서버가 처리해야 하는 속도는 한계가 잇고.

    쓰레드는 단지.. 클라이언트에서 작업하는 시간에 다른 행위를 할 수 있도록

    여유를 줄수 잇다는 정도입니다.

    그렇다면 이렇게 해보십시오..

    SQL 에서는 INSERT 는 한 레코드씩 문장을 날리고 수행하고..

    이것을 반복하기 때문에 느릴수 밖에 없습니다.

    방법을 간단히 말씀드리면, 두가지가 있습니다.

    1)

    TBatchupdate 를 사용하시는것이 빠를듯 합니다.

    서버의 Table과 같은 타입의 Table을 로칼에서 생성하여 로칼에 먼저 저장합니다.

    그다음 로칼테이블을 TBatchupdate 를 이용하여 서버테이블로 올립니다.

    사용방법을 모르시다면...다시 질문하셈.

    2) insert into tablename select * from table 과 같은 형식의 insert 라면

    속도는 엄청 빨라집니다.

    서버테이블 데이타를 select 하여 저장하는 경우라면 1)번보다 2)번이 훨씬 빠릅니다.

    이경우는 서버에서 계산하여 일괄저장하기 때문에 진짜 빠릅니다.


    그러나 서버가 꼬지면 느리겠지요. ㅋㅋ;;

    P.S 제이름으로 팁란을 검색하시면 쓰레드로 쿼리 날리기 있습니다.

    그럼 수고
    • 김상완
    • 2003.04.15 21:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 서은구
      2003.04.15 21:51
      음.. 일단 클래스가 틀리겠죠.. 둘다 TCustomMemo 까지는 같이 상속을 받지만 그후에 틀려지네요.. Ric...
    • 이종택
    • 2003.04.15 21:18
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 임진묵
      2003.04.15 21:24
      확장자가  Pas 로 되어 있는 걸을.. 델파이에 Component - Install component - Unit file name...
    • 이종택
      2003.04.15 23:58
      죄송한데요.잘모르겠요.. 제가 원하는 팔레트에 올려놓고 그걸 가져다가 쓰고 싶은데 그게 잘 안되네요...
    • 임진묵
      2003.04.22 04:13
      [델5]기준으로... 메뉴에 보시면 컴포넌트에 팔레트 설정 부분이 있습니다. (제일 아래에 있어요) 그...
    • 이경남
    • 2003.04.15 20:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 그냥
      2003.04.15 22:25
      Access Violation 에러는 메모리관련 부분에서 에러가 발생합니다. 혹시 DB관련 내부 함수나 아님 폼에 선...
    • 최용일
      2003.04.16 00:04
      안녕하세요. 최용일입니다. 인디 8.0부터 아래와 같이 바뀌었네요...   AThread.Connectio...
    • 델파이스
      2003.04.16 20:53
    • irashi
    • 2003.04.15 20:07
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 정우성
    • 2003.04.15 19:27
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 임진묵
      2003.04.15 21:18
      이건 제가 짜본건데요.... 맞는건지.. 님꺼 보니깐.. 이해가.. 잘 ㅡ.ㅡ (죄송) 주석은 파일 안에...
    • 정우성
      2003.04.15 23:13
      관심 가져주셔서 정말 감사합니다. 님이 짜주신걸 봤는데요, 솔찍히 정말 감동이었습니다. ^^ 그런데........
    • 임진묵
      2003.04.15 23:31
      이제야 목적을 알겠군요...ㅎㅎ 제가 보냈던건 점들의 거리상 젤루 작은거리는 어느것이냐 하는 것이었습...
    • 장태원
      2003.04.15 19:51
          while cn<k do     begin     &nb...
    • 정우성
      2003.04.15 20:53
      친절한 답변 진심으로 감사드립니다. 말씀하신 부분을 고쳐서 while cn<k do     ...
    • 티모니
    • 2003.04.15 19:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.04.16 00:09
      안녕하세요. 최용일입니다. 인디 컴포넌트보시면 TIdAntiFreeze란게 있습니다. 이게 어는거 방지해줍니...
    • 김동환
      2003.05.14 18:47
      안녕 하세요.... 소스 2부분 설명드릴 려고 합니다.... 아마도 HPrt 의 변수를 선언 하실 때 Integer...
    • 최용일
      2003.04.16 00:19
      안녕하세요. 최용일입니다. 다른건 다 해결되신거 같구... 2번째 질문인데... if not OpenPrinter(AD...
    • 나명
      2003.04.16 01:41
      감사합니다. 제가 너무 바보 같아서 여기 들르신 분들 너무 번거롭게 해드린거 같네요.. 정말 무지...
    • 그냥
      2003.04.15 22:41
      uses 절에 Variants 입니다. Variant가 아닙니다. 읽다가 보니 혹시나 해서리..^^ 그리고 포인터가 상...
    • 나명
      2003.04.15 23:24
      답변 감사합니다. uses 절  도움말이나 혹시나 해서 제가 스펠링을 잘못 적었나 싶어서 여...
    • nilriri™
      2003.04.15 19:23
      1. uses 절에 Variants 가 지정되어있는지 확인해 보세요.. function VarIsNull(const V: Variant): Boo...
    • 나명
      2003.04.15 19:53
      같은 폼상에.. uses 절에는 Variant 가 지정되어 있지 않아요 그래서 써주신데로 표기해보고 다른 폼에도 ...
    • • • •
    • 궁금이
    • 2003.04.15 18:47
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2003.04.15 19:16
      procedure TForm1.FormCreate(Sender: TObject); begin   Application.HintHidePause := 10000...
    • 궁금이
      2003.04.17 00:41
      답변감사합니다. 마우스를 안갖다대고 풍선만 나오게하는 방법은 업나요 클릭할때 다른곳에서 풍선이 나...
    • KDDG_ZZOM
      2003.04.15 18:39
      전 잘나오는데요??? 다시 한번 확인해보세요... 델7에서 Label1.Caption := FormatCurr('#,##', 1543500...
    • 양승렬
    • 2003.04.15 08:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2003.04.15 09:34
      객체앞에 @ 를 붙이면 됩니다.
    • 서은구
    • 2003.04.15 07:00
    • 4 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2003.04.15 07:13
      쓰레드를 이용해서 돌리면 빠르겠지만... 350만건이면 배치성아닌가요? 우선 테이블 인덱스를 삭제하...
    • 서은구
      2003.04.15 07:30
      답변 감사합니다.. 오라클이 맞기는 한데요.. 그게 고려될 사항이 많거든요.. 하나의 테이블이 여러개로 ...
    • 거리
      2003.04.15 18:16
      많은 데이터라면 디비단에서 바로 프로시저 만들어서 쓰시기 바랍니다. jsp에서 말하는 DBConnectionPool...
    • 장태원
      2003.04.15 19:25
      쓰레드가 빠른것은 아닙니다. 어짜피 서버가 처리해야 하는 속도는 한계가 잇고. 쓰레드는 단지.. 클...
    • 푸우
    • 2003.04.15 06:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장태원
      2003.04.15 22:43
      Access 를 오라클 같이 사용해보세요. 오라클에스 트리거라는 이벤트형식이 존재합니다. 저장시, 삭...
    • 권순모
      2003.04.15 10:21
      리스트뷰의 마우스 다운 이벤트로 한번 만들어봤습니다. 님이 원하는데로 선택적 팝업을하려면 델파이에...
    • 고가람
      2003.04.15 18:35
      답변 감사합니다. ^^;; 아래는 제가 어제 질문을 올리고 대충 작정한 코드인데요... 답변해주신 것...
    • 최용일
      2003.04.16 00:24
      안녕하세요. 최용일입니다. 두번째부터 팝업메뉴가 뜨는것은 맨처음실행될때는 Listview1.PopupMenu에 ...
    • yuricity
    • 2003.04.15 04:40
    • 0 COMMENTS
    • /
    • 0 LIKES