Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 웅변과 원시 SQL 쿼리의 성능 차이는 무엇입니까?


웅변과 원시 SQL 쿼리의 성능 차이는 무엇입니까?


Laravel의 Eloquent ORM과 Raw SQL 쿼리의 성능 차이는 주로 RAW SQL의 직접 실행과 비교하여 웅변의 추상화 및 처리 오버 헤드에서 주로 STEM입니다.

Eloquent Orm의 성능 오버 헤드

Eloquent는 데이터베이스 레코드를 PHP 객체로 변환하는 객체 관계 매핑 레이어를 제공합니다. 이 추상화는 편의성과 가독성을 추가하지만 몇 가지 성능 비용을 소개합니다.

- CPU 및 메모리 사용 증가 : 웅변은 검색 또는 조작 된 각 데이터베이스 레코드의 객체를 인스턴스화하여 객체 변환없이 데이터 행에서 직접 작동하는 원시 SQL보다 더 많은 메모리와 CPU 리소스를 소비합니다 [3] [6].

- 실행 시간이 느린 경우 : 추가 처리로 인해 웅변 쿼리는 일반적으로 실행하는 데 더 오래 걸립니다. 이것은 특히 수천 개의 레코드를 삽입하거나 업데이트하는 것과 같은 대량 작업에서 두드러집니다.

- 복잡한 쿼리 생성 : 여러 테이블 조인과 관련된 작업의 경우 Eloquent는 종종 잘 만들어진 단일 RAW SQL 조인 쿼리보다 최적화되지 않은 여러 SQL 쿼리 또는 복잡한 쿼리를 생성합니다. 이로 인해 여러 조인이있는 선택 작업에서 실행 시간이 더 길어집니다 [3].

원시 SQL 장점

원시 SQL 쿼리는 ORM 레이어를 우회하여 데이터베이스에 직접 SQL 명령을 전송합니다. 결과가 발생합니다.

- 더 빠른 실행 : 원시 SQL 쿼리는 객체 생성 및 번역 레이어의 오버 헤드를 피하기 때문에 더 빠르게 실행됩니다. 성능 테스트는 데이터 볼륨 또는 쿼리 복잡성이 증가함에 따라 시간 차이가 증가함에 따라 인서트, 업데이트 및 선택 작업에서 웅변적인 실적을 보여줍니다 [3] [6].

- 벌크 및 복잡한 작업의 경우 : 쿼리 구조 및 최적화를 정확하게 제어 할 수 있으므로 대량 인서트/업데이트 및 다중 조인과 관련된 복잡한 쿼리에 대해 원시 SQL이 더 효율적입니다 [3] [6].

각각을 사용할 때

-Loquent ORM : 비교적 간단한 CRUD 작업 및 소규모 데이터 세트를 갖춘 중소형 응용 프로그램에 가장 적합합니다. 개발자 생산성, 코드 가독성, 유지 관리 및 보안 기능을 향상시켜 원시 성능이 중요하지 않을 때 이상적입니다 [3] [6].

-RAW SQL : 실행 속도가 가장 높은 대량의 데이터, 벌크 작업 또는 복잡한 쿼리를 다루는 성능 크리티컬 애플리케이션에 선호됩니다. 원시 SQL은 이러한 시나리오에서 더 많은 제어와 효율성을 제공합니다 [3] [6].

요약

Eloquent ORM은 상당한 개발 편의성을 제공하지만 원시 SQL 쿼리에 비해 측정 가능한 성능 페널티가 발생합니다. 차이는 대규모 데이터 작업 및 복잡한 쿼리에서 가장 주목 할만합니다. RAW SQL은 더 빠르게 실행하고 더 적은 리소스를 사용하지만 더 많은 수동 쿼리 관리가 필요합니다. 이들 중에서 선택하는 것은 응용 프로그램의 성능 요구 사항과 개발 우선 순위에 달려 있습니다 [3] [6].

인용 :
[1] https://www.reddit.com/r/laravel/comments/hezv6m/eloquent_vs_query_builder_vs_sql_performance_test/
[2] https://laravel.io/forum/04-23-2014-eloquent-vs-raw-sql whith-is-really-better
[3] https://www.diva-portal.org/smash/get/diva2:1014983/fulltext02
[4] https://stackoverflow.com/questions/14570568/speed-comparison-between-eloquent-morm-query-builder and-raw-sql-queries
[5] https://www.youtube.com/watch?v=n_rbsojfcau
[6] https://blog.livares.com/comparison-of-performance-between-eloquent-and-raw-query/
[7] https://dev.to/hesamrad/laravel-orm-vs-query-builder-vs-sql-test-4knf
[8] https://stackoverflow.com/questions/38391710/what-are-the-key-differences-between-laravels-eloquent-orm-and-query-builder