좋아요, 질문이 다소 모호하지만 감사합니다. 하루가 지나면 아무 도움이 없어 도움이 될 것이며 기꺼이 도와 드리겠습니다. 뭐든지 해봐.PSQL = 빠름, 원격 SQL = v.slow
문제는 우리가 특정 테이블에 10-1500 만 행을 가진 PostgreSQL 데이터베이스를 가지고 있다는 것입니다.
테이블의 DateTime 필드를 기반으로 모든 열에 대해 select를 수행합니다. 조인이 없으며 where 절을 사용하는 표준 선택입니다 (시간> = x 및 시간 < = y). 필드에 인덱스도 있습니다 ...
로컬 머신에서 psql을 사용하여 sql을 수행하면 약 15-20 초 내에 실행되고 0.5 백만 개의 행이 반환되며 그 중 하나는 행당 많은 양의 데이터를 보유하는 텍스트 필드 (프로그램 스택 추적). 동일한 SQL을 사용하여 Windows에서 Npgsql 또는 pgadmin III를 실행하면 약 2 분이 소요됩니다.
이것은 네트워크 문제라고 생각하게 만듭니다. 나는 쿼리가 실행 중이고 엄청난 양의 메모리 나 CPU를 사용하지 않고 있으며 네트워크 속도가 무시할 수있을 때 머신을 체크했다.
메모리 설정에 대한 권장 사항은 Postgres 사이트에도 나와 있습니다. shmmax와 shmall 업데이트하기.
우분투 10.04, PSQL 8.4, 4GB RAM, 2.8GHz 쿼드 제온 (가상이지만 전용 리소스)입니다. 그 기계는 윈도우 카운터 파트 (2008 R2, SS2008)도 가지고 있지만 꺼져 있습니다. 쿼리는 동일한 스키마와 데이터를 가진 SS를 사용하여 약 10-15 초 내에 반환됩니다.이 비교는 직접 비교가 아니지만 디스크 성능 문제가 아니라는 것을 보여주고 싶었습니다.
그래서 질문은 ... 어떤 제안입니까? 변경해야하는 네트워크 설정이 있습니까? 내가 놓친 것은 뭐니? 나는
Index Scan using "IDX_column1" on "table1" (cost=0.00..45416.20 rows=475130 width=148) (actual time=0.025..170.812 rows=482266 loops=1)
Index Cond: (("column1" >= '2011-03-14 00:00:00'::timestamp without time zone) AND ("column1" <= '2011-03-14 23:59:59'::timestamp without time zone))
Total runtime: 196.898 ms
psql을 사용하여 원격 Windows machne에서 동일한 명령을 실행하고 NPGSQL 또는 PGADMIN 또는 네트워크인지 여부를 알려주는 내용을 확인하십시오. 내 추측에 따르면 그것은 총 시간에 약간의 추가 시간을 추가하는 네트워크입니다. 또한 실제로 필요한 컬럼 만 다시 가져 오십시오. 모두가 실제로 필요하지 않는 한 – Kuberchaun
또한 원격 시스템에서 psql을 실행할 때 명령 창이 아닌 파일에 출력을 tee/pipe합니다. 화면에 쓰기가 느려지고 결과가 왜곡됩니다. – AngerClown
다음을 실행했습니다 ... – Martin