Q&A

  • Mysql DB로 저장시 속도가 너무느려요.!!
안녕하세요..!! 하나가 해결되니까..! 다른 하나가 또 생기는군요..!!ㅜ.ㅜ

다름이 아니오라..!! 아래 내용을 mysql DB로 저장을 시키려 하는데...

저장 속도가 너무 느리답니다..!!

물론 아래와 같이 필드가 4개고 데이타가 적을시는 괜찮은거 같은데....

필드도 아래거보다 훨씬 많은 44개 이고(이건 상관없나..?^^)

데이타양이 시간대별로 저장되어있을시 텍스트에(양이 많음(1000건 도 넘는거 같음)

저장속가 엄청느립니다..!!

해결하는 방법좀 가르쳐 주십시요..!

Q/A 찾아보니까..query를 써서 commit을 하라고는 되어있는데...

아직 델파이 초보라서 잘 활용을 못하겠습니다..!!

고수님들의 의견 기다리겠습니다..!!^^



procedure TForm1.Button1Click(Sender: TObject);

var

f : TextFile;

s, s1, s2, s3 : String;

Str_len, Pos1_len, Pos2_len, Pos3_len, Pos4_len, i : Integer;

begin

OpenDialog1.Execute;

if OpenDialog1.FileName <> '' then

begin

Assignfile(F, OpenDialog1.FileName);

reset(F);





while Not eof(F) do

begin

readln(F,S);

Table1.Append;

Table1.Edit;



Str_len := length(S);

Pos1_len := Pos(' ', S)-1;



S1 := Copy(S, Pos1_len+2, Str_len);

Pos2_len := Pos(' ', Copy(S1, 0, Str_len))-1;



S2 := Copy(S1, Pos2_len+2, Str_len);

Pos3_len := Pos(' ', Copy(S2, 0, Str_len))-1;



S3 := Copy(S2,Pos3_len+2,Str_len);

Pos4_len := Pos(' ', Copy(S3, 0, Str_len))-1;

.

.





Table1.FieldByName('a').asString := Copy(S , 0, Pos1_len);

Table1.FieldByName('b').asString := Copy(S1, 0, Pos2_len);

Table1.FieldbyName('c').asString := Copy(S2, 0, Pos3_len);

.

.

Table1.FieldByName('d').AsString := S3;

Table1.Post;

Table1.Next;

end;

closefile(F);

end;

end;



1  COMMENTS
  • Profile
    ^-_-^ 2001.12.27 07:01
    yo`



    TTable을 사용하시네요? TQuery로 insert문을 사용하세요!! ^^''

    글쿠 텍스트파일이 정형화가 되어 있다면 load data infile 문으로 더 빨리 인서트를 할수 있습니다. mysqlimport 유틸리티를 사용해도 되고요..



    RDB는 TQuery콤포같은것으로 쿼리를 이용하는것이 속도면이나, 안정성이나 좋습니다.



    그럼 이만..



    bLue bLood.



    Commom wrote:

    > 안녕하세요..!! 하나가 해결되니까..! 다른 하나가 또 생기는군요..!!ㅜ.ㅜ

    > 다름이 아니오라..!! 아래 내용을 mysql DB로 저장을 시키려 하는데...

    > 저장 속도가 너무 느리답니다..!!

    > 물론 아래와 같이 필드가 4개고 데이타가 적을시는 괜찮은거 같은데....

    > 필드도 아래거보다 훨씬 많은 44개 이고(이건 상관없나..?^^)

    > 데이타양이 시간대별로 저장되어있을시 텍스트에(양이 많음(1000건 도 넘는거 같음)

    > 저장속가 엄청느립니다..!!

    > 해결하는 방법좀 가르쳐 주십시요..!

    > Q/A 찾아보니까..query를 써서 commit을 하라고는 되어있는데...

    > 아직 델파이 초보라서 잘 활용을 못하겠습니다..!!

    > 고수님들의 의견 기다리겠습니다..!!^^

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > f : TextFile;

    > s, s1, s2, s3 : String;

    > Str_len, Pos1_len, Pos2_len, Pos3_len, Pos4_len, i : Integer;

    > begin

    > OpenDialog1.Execute;

    > if OpenDialog1.FileName <> '' then

    > begin

    > Assignfile(F, OpenDialog1.FileName);

    > reset(F);

    >

    >

    > while Not eof(F) do

    > begin

    > readln(F,S);

    > Table1.Append;

    > Table1.Edit;

    >

    > Str_len := length(S);

    > Pos1_len := Pos(' ', S)-1;

    >

    > S1 := Copy(S, Pos1_len+2, Str_len);

    > Pos2_len := Pos(' ', Copy(S1, 0, Str_len))-1;

    >

    > S2 := Copy(S1, Pos2_len+2, Str_len);

    > Pos3_len := Pos(' ', Copy(S2, 0, Str_len))-1;

    >

    > S3 := Copy(S2,Pos3_len+2,Str_len);

    > Pos4_len := Pos(' ', Copy(S3, 0, Str_len))-1;

    > .

    > .

    >

    >

    > Table1.FieldByName('a').asString := Copy(S , 0, Pos1_len);

    > Table1.FieldByName('b').asString := Copy(S1, 0, Pos2_len);

    > Table1.FieldbyName('c').asString := Copy(S2, 0, Pos3_len);

    > .

    > .

    > Table1.FieldByName('d').AsString := S3;

    > Table1.Post;

    > Table1.Next;

    > end;

    > closefile(F);

    > end;

    > end;

    >