Q&A

  • [질문] MYSQL5 와 ZEOS 속도가 점점 느려집니다.
안녕하세요. 이곳에서 항상 많이 배우고있는데,  문제가 생격서 문의합니다.

현재 사무실에 업무용을 간단히 프로그램 만들어 사용하고 있습니다. 근데 문제가 생겼습니다.

MYSQL5 DB와 ZEOS 6.1.5 버젼을 이용해서 자료 관리를 하고있는데, 자료의 레코드수가 처음에는

얼마 안됐는데, 점점 용량이 늘어나 지금은 6만 5천 레코드가 넘습니다. 앞으로도 점점 늘어 날것이구요.

처음 개발당시에는 프로세스에서 메모리 할당량이 4메 정도 였으나 지금은 6메가 넘어가고 있습니다.

개발한 프로그래을 처음에 사용자 아이디와 로그인 아이디를 통해 접속자이 되면, 쿼리를 통해 자료를 보여주

도록 했는데, 점점 속도가 늦어지고 있습니다. 해결 방법이 없을까요....??? 프로그램을 실행시키면 약 3분 정도

있어야 로그인 창이 나타납니다. 어떻게 하면 처음 접속창이 빨리 나타날까요..? 프로그램 용량은 약 4.5메가

정도 입니다.(제 생각으로 레코드 양이 늘어남에 따라 속도가 늦어지는 것 같은데...)
1  COMMENTS
  • Profile
    까마귀 2008.12.03 23:26
    흠...
    아마 메인폼 실행후에 로그인 창이 뜨도록 만들어져 있는 것 같네요.
    그리고, 메인폼 실행시 쿼리등도 다 오픈하는 것 같고요.
    이런 경우라면 데이터가 많아질수록 느려지겠지요.

    MySQL 과 Zeos 문제라기 보다는 프로그램 방식의 문제로 보입니다.

    일단 로그인 처리는 메인폼 실행전에 처리되도록 하는게 좋을 것 같고요. -> dpr 소스 부분에서 처리...
    계정 인증을 위해 DB 에 접속해야 한다면, DataModule 에 관련 컴포넌트를 두시고 DataModule 이 먼저 실행되도록 하면 되겠죠.
    인증이 되면 메인폼을 불러들이고, 인증 실패시 바로 종료하도록 처리하면 됩니다.

    일단 인증이 되어서 메인폼이 실행되었을 경우는.
    기본적으로 쿼리등은 Close 상태로 두시고요. -> 미리 데이터를 불러오지 않도록.
    각각의 메뉴 실행시에도 데이터가 없는 상태로 열리는게 좋겠죠. -> 코드창 등 특별한 경우는 제외.
    그 후에 조회버튼 등을 클릭시 데이터를 불러오도록 처리를 하면 됩니다.

    일단 프로그램 실행시에는 꼭 필요한 폼만 메모리에 떠 있도록 하는게 좋을 것 같습니다.
    Project Options 에서 Auto-Create Forms 에는 꼭 있어야 하는 폼만 두면 됩니다.
    DataModule, MainForm 등요.



    위대한 단군혼이 살아있는 나라.... 대한민국.
    • 김길현
    • 2008.12.05 01:45
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.05 01:05
      추측하자면... UDP1.GetMessage(str);에서 타임아웃되어서 종료되고 이 때문에 str에는 아무 값도 설정...
    • absurdite
      2008.12.05 02:22
      앗! 딱 맞습니다ㅡㅜ UDP1.GetMessage(str); if (not (str = '')) then Memo1.Lines.Add(str); ...
    • cell
    • 2008.12.04 23:22
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.05 00:55
      보내는 부분에서 잘못된 곳이 있네요... 동적 배열 (array of ...)은 포인터형입니다. 실제 데이터는 다...
    • cell
      2008.12.05 01:24
      맞네요... 동적배열이 포인터형인데... 먼짓을 한건지...^^ 감사합니다.
    • 별이^^
    • 2008.12.04 18:51
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이건희
    • 2008.12.03 20:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장성호
      2008.12.03 22:08
      Timer를 이용해보세요 1. OnMouseDown이벤트에서 1.1 레이블의 숫자를 증가시키세요 ...
    • 박종학
    • 2008.12.03 20:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 까마귀
      2008.12.03 23:26
      흠... 아마 메인폼 실행후에 로그인 창이 뜨도록 만들어져 있는 것 같네요. 그리고, 메인폼 실행시 쿼...
    • 이정욱
      2008.12.03 12:57
      클래스를 사용하면 좋겠지만, 만약 네트웍이나 시리얼을 통해 자료를 주고 받는 다면 packed record를 사...
    • 이은주
      2008.12.03 15:45
      아 그럼 동일한 환경이라면 클래스를 쓰는 것이 유리하고 정보를 전송하는 경우는 packed record 가 유리...
    • 김명민
    • 2008.12.03 06:10
    • 0 COMMENTS
    • /
    • 0 LIKES
    • cell
    • 2008.12.03 04:38
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.03 07:21
      쩝~ 왜 꼭 4바이트 형태로 만들어야 된다고 생각하시는지요? Byte든 Char 이든, 16진수이든 10진수이든...
    • cell
      2008.12.04 22:31
      최용일님 말씀처럼 너무 4바이트에 연연했나보네요 ^^ 잘해겼됐습니다.
    • Jackie
    • 2008.12.03 03:09
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.03 03:25
      왜 겹치려고 하는지는 모르겠지만.... TLabel은 절대 TPageControl위로 올라갈 수가 없습니다. TLabel...
    • Jackie
      2008.12.03 03:43
      님의 덕분에 해결을 하였습니다. 정말 감사합니다. 두 콤포넌트가 겹치는것은 대면부구성상 탭오른...
    • 장성호
      2008.12.03 04:02
      TLabel 과 TSpeedButton은 Graphic-Control(윈도우핸들이 없는놈)입니다. 그리고 TPageControl 과 TSt...
    • 꼬꼬마
    • 2008.12.02 21:50
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.02 22:39
      아래와 같이해서 함수를 하나 만들어 쓰세요. 1. 년도와 월 가지고 그달의 1일을 구하세요. (EncodeDate...
    • 꼬꼬마
      2008.12.02 23:44
      휴...;;; 무슨 말인지는 알겠는데요;; 아직 델 초보라서;;; 이것저것 계속 해보고 있는데;;;;; ...
    • 장성호
    • 2008.12.02 23:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 꼬꼬마
      2008.12.03 00:53
      장성호님..최용일님.. 두분 감사합니다..;; 몇일째 고생했던게;;;; 시원하게 풀렸네요... 여기서 멈...
    • cell
    • 2008.12.02 06:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.02 18:58
      동적 배열을 사용해보세요. A+B+C+D만큼의 크기를 동적배열로 잡고 거기에 데이터를 넣어서 전송하시면 ...
    • 꼬꼬마
    • 2008.12.01 22:10
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.02 02:14
      뭐가 잘 안된다는 것인지.... 그냥 for문으로 원하시는 주를 삽입하시면 될것 같은데요...
    • 꼬꼬마
      2008.12.02 04:01
      어떤 식으로... for문을 돌려야 하는건가요? 이거..그냥 계속 제자리 걸음을 하는거 같네여;; ㅠㅜ
    • 장성호
      2008.12.02 05:03
      벌써 여러번 같은 질문 올리셨죠? 이곳 말고 델마당에도... http://www.delphi.co.kr/zboard/view....
    • 조일현
    • 2008.12.01 21:16
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.02 02:16
      뭘 그렇게 숨기시려고 하시는지... 'zzzzzz'이란 에러메세지에 해답이 있습니다. 잘 분석해보세요.
    • 아르스
      2008.12.02 19:09
      ^^
    • 조일현
      2008.12.07 20:36
      감사합니다~~
    • 백록화
      2008.12.01 19:52
      흠... DataSet - DataSource - DbGrid 이렇게 연결되어 있는 상태에서 DbGrid 의 Row가 변경이 되...
    • 델파이쌩초보
      2008.12.02 00:55
      백록화님 먼저 관심이 갖고 답변을 해주셔서 너무 감사드립니다. 진작 들어와봤으면 좋았을껄.. ㅎㅎ ...
    • 백록화
      2008.12.02 04:14
      네...각 콤포넌트들 (TDataSet, TDataSource, TDbGrid) 는 서로 유기적으로 묶여져 있습니다. 따라서 어...
    • 델파이쌩초보
      2008.12.04 20:34
      백록화님 정말 감사드립니다. 한번에 정확히 이해를 못하고는 있지만.. 약간 감은 오는 것 같습니다. ...
    • 유경민
    • 2008.11.29 22:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • safebear
      2008.12.01 19:07
      자료실에 원하시는게 있네요 ^^ http://www.delphi.co.kr/zboard/view.php?id=component&page=1&sn1=&...