Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kokie yra iškalbingų ir neapdorotų SQL užklausų našumo skirtumai


Kokie yra iškalbingų ir neapdorotų SQL užklausų našumo skirtumai


„Laravel“ iškalbingos „Laravel“ ir RAW SQL užklausų našumo skirtumai yra reikšmingi, o STEM pirmiausia iš abstrakcijos ir apdorojimo pridėtinės išlaidos iškalbingai, palyginti su tiesioginiu RAW SQL vykdymu.

našumo pridėtinė kaina iškalbingoje ORM

„Eloquent“ pateikia objektų ryšių žemėlapių sluoksnį, kuris išverčia duomenų bazės įrašus į PHP objektus. Ši abstrakcija padidina patogumą ir skaitomumą, tačiau pristato keletą veiklos išlaidų:

- Padidėjęs CPU ir atminties naudojimas: iškalbingas momentas pateikia kiekvieno gauto duomenų bazės įrašo ar manipuliavimo objektą, kuris sunaudoja daugiau atminties ir CPU išteklių nei RAW SQL, kuris tiesiogiai veikia duomenų eilutes be objekto konvertavimo [3] [6].

- Lėtesnis vykdymo laikas: Dėl papildomo apdorojimo iškalbingos užklausos paprastai užtrunka ilgiau. Tai ypač tariama atliekant birias operacijas, tokias kaip tūkstančių įrašų įterpimas ar atnaujinimas, kai „Eloquent“ pridėtinės vertės kaupiasi žymiai [3] [6].

- Sudėtingos užklausų generavimas: Operacijoms, susijusioms su keliomis lentelės jungtimis, iškalbus dažnai sukuriama kelios SQL užklausos ar sudėtingos užklausos, kurios yra mažiau optimizuotos nei viena gerai pagaminta RAW SQL prisijungimo užklausa. Tai lemia ilgesnį vykdymo laiką pasirinktose operacijose su keliomis jungtimis [3].

Neapdoroti SQL pranašumai

Neapdorotos SQL užklausos apeina ORM sluoksnį, siunčiant tiesiogines SQL komandas į duomenų bazę. Tai lemia:

- Greitesnis vykdymas: Neapdorotos SQL užklausos vykdo greičiau, nes jos išvengia objektų kūrimo ir vertimo sluoksnių pridėtinės vertės. Našumo testai rodo „Raw SQL“, pralenkiantį iškalbingam įdėklo, atnaujinimo ir pasirinkimo operacijoms, didėjant laiko skirtumams, didėjant duomenų tūrio ar užklausos sudėtingumui [3] [6].

- Geriau atliekant didelius ir sudėtingas operacijas: RAW SQL yra efektyvesnis birių intarpų/atnaujinimų ir sudėtingų užklausų, susijusių su keliomis jungtimis, nes tai leidžia tiksliai valdyti užklausų struktūrą ir optimizavimą [3] [6].

Kada naudoti kiekvieną

- iškalbingas ORM: geriausiai tinka mažoms ir vidutinėms programoms, palyginti su gana paprastomis CRUD operacijomis ir mažesniais duomenų rinkiniais. Tai pagerina kūrėjų produktyvumą, kodų skaitomumą, prižiūrimumą ir saugumo funkcijas, todėl jis yra idealus, kai neapdorotas našumas nėra kritinis [3] [6].

- Neapdorotas SQL: pageidautina, kad našumui kritinės programos, susijusios su dideliais duomenų kiekiais, birių operacijų ar sudėtingų užklausų, kai vykdymo greitis yra svarbiausia. RAW SQL suteikia daugiau šių scenarijų kontrolės ir efektyvumo [3] [6].

Santrauka

Nors iškalbingas ORM siūlo didelį vystymosi patogumus, ji patiria išmatuojamą bausmę, palyginti su neapdorotomis SQL užklausomis. Skirtumas yra svarbiausias atliekant didelio masto duomenų operacijas ir sudėtingas užklausas. RAW SQL vykdo greičiau ir naudoja mažiau išteklių, tačiau reikalauja daugiau rankinės užklausų valdymo. Pasirinkimas tarp jų priklauso nuo programos veiklos reikalavimų ir plėtros prioritetų [3] [6].

Citatos:
[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- which-is-really-better
[3] https://www.diva-portal.org/smash/get/diva2:1014983/fulltext02
[4] https://stackoverflow.com/questions/14570568/speed-comparion-between-lequent --orm-query-builder-and- raw-sql-queries
[5] https://www.youtube.com/watch?v=n_rbSojfcau
[6] https://blog.livares.com/comparion-of-performance-between-eloquent-and- raw-query/
[7] https://dev.to/hesamrad/laravel-orm-vs-query-builder-vs-sql-speed-test-4knf
[8] https://stackoverflow.com/questions/38391710/what-are-the-key-differences-between-laravels-lequent-orm-and-query-builder