자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey DB를 읽어오는 부분에 속도문제 (이미지포함)
2015.05.28 19:48
지난번에도 문의 드린적이 있는데 이미지가 포함된 DB를 읽어오는 부분에 속도문제가 있어 재문의드립니다.
사용하는 방법은
client : ClientDataSet 을 이용 commandtext 를 변경하여 select
server : DataSnap REST Application(http:3 tier) : FireDAC(FDQuery,DataSet Provider,FDConnection)
1. 페이징 단위로 가져오는 방법은 서버쪽 FDQuery FetchOption 부분과 clientDataSet의 packetrecord 를 변경해봤을 때 잘 안되었습니다.
(잘 못 했을 수도 있겠지요 –체크할 항목을 알려주시면…)
2. Select 쿼리에서 Limit 로 적게 가져오는 방법을 써봤지만 만족할 만한 속도는 아닌 듯 합니다. 전체를 가져올 때랑 차이가 많이 나지 않습니다.
(별다른 옵션 변경 없이 했으니 변경해야 할 옵션(server)이 있다면…)
3. Table 의 index 추가, server 의 FDQuery 에 sql를 넣고 parameter 로 open 처리도 해보았습니다
이미지가 포함된 자료를 열 때의 속도를 빠르게 할 수 있는 방법을 제안해주시기 바랍니다.
- 사용한 방법들에 체크할 항목
- 다른 방법 : server / Client 를 바꿔서 해 볼 방법을 여러가지로 제안 부탁드립니다.
Firemonkey DB를 읽어오는 부분에 속도문제 (이미지포함)
2015.05.28 19:48
지난번에도 문의 드린적이 있는데 이미지가 포함된 DB를 읽어오는 부분에 속도문제가 있어 재문의드립니다.
사용하는 방법은
client : ClientDataSet 을 이용 commandtext 를 변경하여 select
server : DataSnap REST Application(http:3 tier) : FireDAC(FDQuery,DataSet Provider,FDConnection)
1. 페이징 단위로 가져오는 방법은 서버쪽 FDQuery FetchOption 부분과 clientDataSet의 packetrecord 를 변경해봤을 때 잘 안되었습니다.
(잘 못 했을 수도 있겠지요 –체크할 항목을 알려주시면…)
2. Select 쿼리에서 Limit 로 적게 가져오는 방법을 써봤지만 만족할 만한 속도는 아닌 듯 합니다. 전체를 가져올 때랑 차이가 많이 나지 않습니다.
(별다른 옵션 변경 없이 했으니 변경해야 할 옵션(server)이 있다면…)
3. Table 의 index 추가, server 의 FDQuery 에 sql를 넣고 parameter 로 open 처리도 해보았습니다
이미지가 포함된 자료를 열 때의 속도를 빠르게 할 수 있는 방법을 제안해주시기 바랍니다.
- 사용한 방법들에 체크할 항목
- 다른 방법 : server / Client 를 바꿔서 해 볼 방법을 여러가지로 제안 부탁드립니다.
전반적으로 만족할 만한 답변을 드리기에는 시간이 많이 걸릴 것 같아
먼저 간단한 아이디어 몇가지 드립니다.
1, 텍스트와 이미지를 분리해서 가져오세요.
- 텍스트와 이미지(즉 작은데이터와 큰데이터)를 한번에 가져오면 당연히 큰데이터이기 때문에 속도가 느릴 수 밖에 없습니다.
일차적으로 텍스트로 정보를 가져와 목록을 구성하고, 쓰레드등을 이용해 이미지를 백그라운드에서 가져오며 이미지 항목을 체워나가면 사용자가 체감하는 속도는 개선될 것으로 보입니다.(물론 말처럼 구현이 쉽지는 않습니다.^^)
- TThread.Queue 를 검색해 참고하세요.
2, 이미지는 캐쉬로 처리해보세요.
- 업무상 이미지가 자주 변경되는 것이 아니라면 이미지를 받으면 로컬(또는 로컬DB)에 저장하고, 로컬에 없는 이미지만 서버에서 받아올 수 있을 것 같습니다.(그러면 자연히 트래픽도 줄어 좋겠네요.)
- (1번항목에서)텍스트 정보 수신 시 이미지의 메타정보를 받아 비교하는 알고리즘을 구현해보세요.