1. gzyueqian
      13352868059

      Java培訓:Java中的性能反模式| N+1問題

      更新時間: 2022-01-14 10:46:43來源: 粵嵌教育瀏覽量:11568

        隨著應用程序(以及用于構建它們的工具)變得越來越復雜,并且數據需求變得越來越大,開發團隊開發出能夠在基線和規模上高效執行的應用程序至關重要。但是實現這個目標有很多障礙:像 N+1 問題這樣的性能反模式可能會減慢或破壞最好的應用程序。想對性能反模式有更深入的了解,可以參加java培訓,在專業老師的指導下,你可以很快掌握性能反模式的更多特性。


        在本文中,我們將探討 N+1 問題、Java 中 N+1 問題背后的常見原因。


        Java 中的性能反模式


        性能反模式通常圍繞著在負載或規模上復合的低效或多余查詢。出現這些模式的原因多種多樣,但最終結果可能從性能差到級聯故障。


        我們今天看到的反模式稱為 N+1 問題。它以對數據庫的一系列過度請求為標志,并經常伴隨對象關系映射 (ORM) 工具。


        什么是 N+1 問題?


        N+1 問題,也稱為 N+1 選擇問題或 N+1 查詢,發生在服務從數據庫請求多行 (N) 數據,然后單獨請求這些項目的相關數據 N 次時。


        在下面分布式 Spring PetClinic 演示應用程序的示例中,我們看到 vet.specialties 方法從數據庫中請求 24 行,然后循環并通過單獨的查詢從數據庫中請求 24 行。


        那是 24 次調用,加上對數據庫本身的 24 行數據的初始調用——或者,簡而言之,N + 1 次調用。 當然,這些單獨的行調用可以通過單個調用來完成。在java培訓中,培訓課程不僅注重理論,更注重項目的實戰能力,能夠讓你快速適應企業開發的進度,成為企業所需要的Java人才。



        是什么導致 Java 應用程序中的 N+1 問題?


        有一些常見的罪魁禍首,它們通常與 ORM 工具或框架以及它們生成查詢的方式有關。


        1. ORM 框架


        像 Java 這樣的面向對象語言通常需要使用關系數據庫。這要么意味著開發人員或數據庫管理員需要編寫(優化)SQL 請求,要么他們需要使用中間層,如 ORM 框架,為該數據庫生成兼容的請求。雖然功能強大,但 ORM 框架在創建未優化查詢(包括 N+1 查詢)方面享有盛譽。


        2. 延遲加載


        默認情況下,像 Hibernate 這樣的 ORM 框架可以在其生成的數據庫請求中使用 FetchType.LAZY。而且,由于這些查詢沒有保持會話,因此每次請求服務需要時,都會對該數據庫進行 N+1 次查詢。


        3. 開發人員和數據庫管理員


        事實是,這些 ORM 框架雖然很方便,但無法取代開發人員或數據庫管理員自己編寫請求的誠實努力。而且,由于 ORM 工具在開發人員沒有太多監督的情況下生成查詢(除了功能),因此開發人員在生產中出現之前不會看到這個問題。參加以實戰項目為主要教學方法的Java培訓,可以有效地縮短同企業具體用人需求之間的差距,快速提升自己。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 日韩深夜在线精品视频 | 日韩性色一区二区三区 | 午夜婷婷一区二区 | 亚洲一区二区综合色精品 | 日本道二区免费 | 久久综合激情视频 |