2008-10-29 3 views
8

구문상의 설탕과 표현력 외에 런타임 효율성의 차이점은 무엇입니까? plpgsql은 plpythonu 또는 pljava보다 더 빠를 수 있습니다. 아니면 모두가 거의 같습니까? 우리는postgresql에서 plpgsql을 사용할 때의 이점은 무엇입니까

+0

이 정보가 사용될 시스템에 대해 더 자세히 알려주십시오. 사람들은 귀하와 귀하의 팀이 사용하는 언어 및 아키텍처 선택에 따라 더 나은 조언을받을 수 있습니다. –

답변

8

plpgsql 내가 믿고 더 큰 형태의 안전성을 제공한다 (기록 10M의 주위에) 중간 정도 크기의 데이터베이스에 거의-중복에게 사람들의 기록을 검출하는 작업에 대한 저장 프로 시저를 사용하는

, 당신은 경우 명시 적 캐스트를 수행해야 varchar 및 text 또는 int4 및 int8과 같은 유사한 유형의 두 개의 다른 열을 사용하여 작업을 수행하려고합니다. 저장된 proc 사용 인덱스가 필요할 경우 postgres에서 유형이 조인 조건과 정확하게 일치해야하므로 중요합니다 (편집 : 동일성 검사에 대해서도 마찬가지입니다).

다른 언어에서도이 기능이있을 수 있지만 사용하지는 않았습니다. 어쨌든, 이것이 당신에게 당신의 수사를위한 더 좋은 출발점을 제공하기를 바랍니다.

2

실제 테스트를 수행하지 않으면 plpgsql이 다른 언어보다 다소 효율적일 것으로 기대합니다. 그런데 SQL 함수는 plpgsql보다 훨씬 빠르다는 것을 기억하십시오. 함수가 SQL로만 작성할 수있을 정도로 간단하면 말입니다.

+0

plperg 나 plpgsql 이외의 것을 사용하여 테스트 한 결과, SQL 관련 로직이 아닌 경우 잘 작동합니다. 예를 들어 루핑이나 계산을 할 때 plperl은 제한된 테스트에서 항상 plpgsql을 피웠다. – Kuberchaun

6

plpgsql은 SQL과 매우 잘 통합되어 있습니다. 소스 코드는 매우 깨끗하고 읽기 쉽습니다. PLJava 또는 PLPython과 같은 SQL 언어의 경우 SQL 문은 격리되어야합니다. SQL은 언어의 일부가 아닙니다. 그래서 조금 더 많은 코드를 작성해야합니다. 프로 시저에 많은 SQL 문이있는 경우 plpgsql 프로 시저가 더 짧고 빨라야합니다. 프로 시저에 SQL 문이 없으면 외부 언어의 프로 시저가 더 빠를 수 있지만 외부 언어 (초기화)에 약간의 시간이 필요하므로 간단한 작업의 경우 SQL 또는 plpgsql 언어의 프로 시저가 더 빨라야합니다. http://www.postgres.cz/index.php/PL/Perlu_-_Untrusted_Perl_%28en%29

내가 아는 어떤 - - 사람들이 일반적으로 PL 언어의 조합을 사용 - (SQL, plpgsql, plperl) 또는 (SQL 당신이 인터넷에 액세스, 파일 시스템에 대한 액세스와 같은 일부 기능을 필요로 할 때

외부 언어가 사용된다 , plpgsql, plpython).

관련 문제