2011-10-29 2 views
1

데이터베이스에서 백만 레코드를 가져와 JqGrid에 표시해야하는 사이트가 있습니다. 하지만 그렇게하면 레코드를 가져 와서 보여주는 데 45 분에서 60 분 정도 걸립니다.JqGrid에서 백만 개의 레코드 표시

JSP, Hibernate, JPA 및 MySQL 데이터베이스에서 JqGrid를 사용하고 있습니다.

아무에게도이 문제를 어떻게 해결할 수 있습니까? 따라서 시간 지연이 줄어들고 레코드가 더 빨리로드됩니다. 사전

@UPDATE

에서

덕분에 내가 대신 XML의 JSON을 사용하여 시도하고, 시간은 30 분으로 감소되었다. 이 30 분은 데이터베이스에서 데이터를 가져 오는 데 14 분 정도 남아있는 데이터가

@UPDATE 2

나는 시간을 단축 할 수 있었다있는 몇 가지 방법이 있습니다 프론트 엔드로 전달 16 분 걸립니다 jqgrid에 데이터를로드하는 데 사용됩니다.

방법 1 : 내가 그것을 제거 내 쿼리에서 ORDER BY 절을했고 시간 5 분

방법 2 45~60분에서 감소 : 쿼리에서 조인의 수를 감소/제거합니다.

웨이 3 : Hibernate 또는 JPA 오브젝트를 직접 사용하는 대신 결과 세트에서 조회 결과를 직접 얻고 그 결과 세트를 사용하여 json 오브젝트를 작성하십시오.

1과 3 가지 방법을 사용하여 200000 레코드를 1 분 32 초로로드하는 시간을 줄였습니다.

답변

2

일반적으로 수백만 개의 레코드를 동시에 표시 할 필요가 없습니다. 그것은 미친 짓이며 완전히 비실용적입니다. 필요한 것은 페이지 매김을 구현하는 것입니다. 서버 측 페이지 매김. 따라서 화면에 현재 표시 할 수있는 레코드 만 가져올 수 있습니다. 한 번에 10-30 개의 레코드가 합리적으로 표시되는 것처럼 보입니다. 수백만 개의 레코드를 가져 오지 않고 매우 적은 수의 레코드 만 표시하려면 데이터베이스 수준에서 페이지 매김을 수행하는 것이 중요합니다.

+0

동의합니다. 하지만 45 분에서 60 분을 더하고 싶었어?!? 그건 미친 소리. 나는 얼마나 많은 시간이 데이터베이스에서 기다리고 있는지, 얼마나 많은 파싱을 기다리는지를 결정하려고 노력할 것이다. 데이터베이스가 그 시간의 좋은 부분을 차지한다면 최적화해야 할 수도 있습니다. – dnuttle

+0

@dnuttle, 대부분의 시간이 걸릴 것 IMHO는 HTTP 프로토콜을 통해이 엄청난 양의 데이터를 클라이언트로 전송하며 가장 중요한 것은 브라우저 내부에 너무 많은 요소가있는 DOM 트리를 작성하는 것입니다. 아마 –

+0

. 로봇이 아닌 사용자에게 백만 개의 행을 표시하는 것은 확실히 실용적이지 않습니다. – dnuttle

관련 문제