IllIIIIllIlIIlIl
34
2021-07-22 11:57:37
5
127

c# 윈폼으로 db 프로젝트 하는 중인데 너무 느리네요. 어떻게 하는게 좋을까요?


제가 원하는 기능은

mysql에 새로운 행이 추가된다면, 자동으로 그 행의 정보들을 리스트박스에 추가하는거에여

해당 프로그램을 사용하는 모두가 거의 실시간으로 정보가 추가되는 것을 바로바로 볼 수 있게요


제가 구현한 방법은 행을 추가할 때 그 시점의 유닉스 시간도 같이 저장하게 한 다음,

일정 주기마다 mysql에서 가장 큰 유닉스 시간을 가져오고,

그 시간을 지금 컴퓨터의 시간과 비교해서 mysql에 있는 행의 유닉스 시간이 더 작은 값이라면

그 값을 가져와서 리스트 박스에 추가하는 방식이에요


그런데 이런식으로 구현을 하니, 유닉스 시간을 가져오는 주기마다 프로그램이 너무 느려져서 테스트도 

하지 못할 정도에요.

따로 서버를 둔 것도 아니고 그냥 개인 pc 로컬로 하고있어요


저 기능을 어떤식으로 구현하는 것이 좋을까요?

그리고 설명 해 주신다면 가능하시다면 전문용어들은 빼고 쉬운용어로 바꿔서 설명해주세요..

0
  • 답변 5

  • 훅인더훅
    734
    2021-07-22 13:33:32

    굳이 시간 비교해서 최신행만 가져올 필요가 있을까요?

    그냥 최신 리스트 가져와서 뿌려주면 간단할 거 같은데요. 느려질 이유도 없을 거 같구요

  • 오징어먹물식빵
    320
    2021-07-22 13:35:34
    윗분 말씀대로 일정 주기마다 행 전체를 훑어서 (자세한 처리 과정은 모르겠지만) 가장 큰 유닉스 시간을 구하는 작업보다는 차라리 일정 주기마다 마지막 행을 가져오는게 더 낫지 않을까 하네요.
  • 쿠잉
    3k
    2021-07-22 13:50:24

    인덱스 생성되어있나요? 

  • _우리사이
    333
    2021-07-22 14:12:12

    웹소켓 라이브러리를 사용해서 서버를 별도로 두는게 좋아 보여요

    node 서버로 하신다면 socket.io

    asp.net core 서버로 하신다면 signalr core

    정도 라이브러리를 많이 쓰는 편이에요

    둘 다 윈폼 클라이언트 라이브러리로 있구요


    클라이언트에서 디비에 수정사항 발생하는 요청을 서버쪽에 하면

    그때만 다시 조회해서 클라이언트들 쪽으로 뿌려주는 방식으로요

    디비 조회는 서버에서만 하면 되구요

    이런식으로 하면 불필요한 자원 소모를 줄일 수 있어요

  • IllIIIIllIlIIlIl
    34
    2021-07-22 14:22:56

    이뇨 아직 인덱스는 만들어 두지 않았어요.
    그리고 찾아볼 것들이 많네요 시간내주셔서 답변 달아주신분들 너무 고마워요


  • 로그인을 하시면 답변을 등록할 수 있습니다.