Jadual Kandungan
Kandungan soalan
Penyelesaian
Rumah Java Cara memantau aliran JPA Spring Data

Cara memantau aliran JPA Spring Data

Feb 22, 2024 pm 02:01 PM
Pemantauan log

editor php Youzi membawakan anda soalan dan jawapan java tentang pemantauan aliran JPA Data Musim Bunga. Semasa pembangunan, memantau aliran data dalam masa nyata adalah penting untuk pengoptimuman prestasi sistem dan penyelesaian masalah. Artikel ini akan memperkenalkan cara memantau aliran JPA Spring Data, membolehkan anda memahami dengan lebih baik proses pemprosesan data, mengesan masalah dalam masa dan mengendalikannya dengan sewajarnya. Mari bincangkan cara memantau aliran JPA Data Spring dengan berkesan dan meningkatkan kestabilan dan prestasi sistem!

Kandungan soalan

Saya cuba menggunakan penstriman jpa data spring seperti yang dijelaskan di blog ini. Walau bagaimanapun, saya tidak boleh memantau proses atau kemajuan dengan sebarang log. Sekiranya saya melihat berbilang pertanyaan sql yang dicetak dalam log apabila proses cuba mengekstrak data dalam kelompok? Jika tidak, maka bagaimana saya tahu bahawa semua baris tidak dimuatkan sekaligus?

Blog lain (seperti yang ini dan yang ini ) mencadangkan agar saya menukar mysql kepada hint_fetch_size 设置为 integer.min_value , yang saya fikir mungkin penyelesaiannya, tetapi ini membuang pengecualian berikut:

2024-01-29 14:40:20.843 amaran 78247 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.sqlexceptionhelper: Ralat sql: 0, sqlstate: s1000 2024-01-29 14:40:20.843 Ralat 78247 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.sqlexceptionhelper: Set hasil penstriman com.mysql.cj.protocol.a.result@ resultsetrowsstreaming. 4ca63fa5 masih aktif. Tiada kenyataan akan dikeluarkan semasa sebarang set hasil penstriman dibuka dan digunakan pada sambungan tertentu. Sebelum mencuba lebih banyak pertanyaan, pastikan anda telah memanggil .close() pada mana-mana set hasil penstriman aktif. Masa tamat: 48 org.springframework.orm.jpa.jpasystemexception: Tidak dapat mengekstrak set keputusan; di org.springframework.orm.jpa.vendor.hibernatejpadialect.converthibernateaccessexception(hibernatejpadialect.java:331)

Ini kod repositori saya:

@QueryHints(value = {
        @QueryHint(name = org.hibernate.jpa.QueryHints.HINT_FETCH_SIZE, value = "" + Integer.MIN_VALUE),
        @QueryHint(name = org.hibernate.jpa.QueryHints.HINT_CACHEABLE, value = "false"),
        @QueryHint(name = org.hibernate.jpa.QueryHints.HINT_READONLY, value = "true"),
})
@Query("SELECT s FROM Salary s")
Stream<Salary> findAllStream();
Salin selepas log masuk

Saya rasa saya ingin mendapatkan jaminan jika cara di atas adalah cara yang betul untuk menggunakan pertanyaan strim dalam data spring jpa kerana saya sendiri tidak boleh memantau prestasi penstriman dengan pasti?

Dikemas kini

Pengecualian di atas berlaku kerana panggilan berulang ke kaedah findallstream dalam kaedah panggilan yang sama. Mengalih keluar salah satu daripadanya membetulkan pengecualian.

Penyelesaian

Saya tidak menemui sebarang konfigurasi log untuk menunjukkan sama ada data sedang diambil secara berkelompok. Tetapi saya telah menemui cara untuk menguji prestasi secara tempatan.

Untuk menguji fungsi penstriman, saya perlu mengakses pangkalan data yang mengandungi berjuta-juta rekod. Saya menggunakan imej docker https://www.php.cn/link/7092d5eb1bbca1a22bdc69ba3f517e68 untuk menggunakan data pekerja mysql

Selepas menyediakan imej docker, saya menghadapi masalah menyambungkan meja kerja mysql dengan pelayan. Nampaknya imej docker tidak dikonfigurasikan untuk menerima sambungan ssl secara lalai. Saya terpaksa melumpuhkan bendera use ssl untuk mewujudkan sambungan. Tetapan ini muncul dalam meja kerja mysql di bawah tab ssl.

Rentetan sambungan dalam aplikasi juga mesti dikonfigurasikan seperti berikut:

spring.datasource.url=jdbc:mysql://localhost:3307/employees?verifyservercertificate=false&usessl=false&requiressl=false
Salin selepas log masuk

Data dalam pangkalan data pekerja terdiri daripada jadual bernama salaries yang mempunyai kira-kira 2.8 juta baris.

Untuk ujian, saya menulis aplikasi jpa data spring kecil yang mempunyai kaedah berikut dalam kelas repositori dan pengawal mudah untuk memanggil kaedah ini:

@Override
List<Salary> findAll();

@QueryHints(value = {
        @QueryHint(name = org.hibernate.jpa.QueryHints.HINT_FETCH_SIZE, value = "" + Integer.MIN_VALUE),
        @QueryHint(name = org.hibernate.jpa.QueryHints.HINT_CACHEABLE, value = "false"),
        @QueryHint(name = org.hibernate.jpa.QueryHints.HINT_READONLY, value = "true"),
})

@Query("SELECT s FROM Salary s")
Stream<Salary> findAllStream();
Salin selepas log masuk

Saya kemudian menulis sekeping kod kecil yang menukar data baca menjadi objek json dan kemudian menulisnya kembali ke fail menggunakan berbilang benang. Ini adalah untuk mensimulasikan pemprosesan dalam kes kehidupan sebenar.

Ini yang saya perhatikan.

  • Penggunaan memori meningkat dengan ketara apabila menggunakan kaedah senarai. Pertanyaan awal mengambil sebahagian besar masa, tetapi setelah semua data dimuatkan, pemprosesan data sebenar selesai dengan cepat.

  • Apabila menggunakan kaedah strim, kesan ke atas penggunaan memori hampir tidak dapat dilihat. Tetapi secara keseluruhan, prestasi bahagian pemprosesan penyiapan adalah serupa atau lebih teruk berbanding kaedah senarai.

Kesimpulan

Penemuan saya di atas membawa saya untuk membuat kesimpulan bahawa pendekatan repositori ialah stream 返回类型仅应在存在内存不足风险时使用,即获得 out 内存异常 . Jika tidak, jika aplikasi anda sudah berjalan pada pelayan yang cukup besar, impak keseluruhan pada penggunaan memori akan hampir tidak ketara dan hanya akan sementara jika proses anda selesai dengan cepat.

Statistik penggunaan memori daripada intellij profiler

  • kiri -> apabila kaedah senarai berjalan
  • Betul -> Apabila kaedah strim berjalan

Atas ialah kandungan terperinci Cara memantau aliran JPA Spring Data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan skrip PHP untuk pemantauan log dalam sistem Linux Cara menggunakan skrip PHP untuk pemantauan log dalam sistem Linux Oct 05, 2023 am 11:36 AM

Cara menggunakan skrip PHP untuk pemantauan log dalam sistem Linux Dengan aplikasi sistem Linux yang meluas, pemantauan sistem dan analisis log telah menjadi semakin penting. Antaranya, menggunakan skrip PHP untuk pemantauan log adalah cara biasa. Artikel ini akan memperkenalkan cara menggunakan skrip PHP untuk melaksanakan pemantauan log mudah dan menyediakan contoh kod khusus. 1. Buat fail skrip PHP Pertama, buat fail bernama "log_monitor.php" pada sistem Linux

Bagaimana untuk melaksanakan pemantauan dan amaran log melalui alat Linux? Bagaimana untuk melaksanakan pemantauan dan amaran log melalui alat Linux? Jul 28, 2023 pm 08:41 PM

Bagaimana untuk melaksanakan pemantauan dan amaran log melalui alat Linux? Dalam pengurusan pelayan harian dan proses operasi dan penyelenggaraan, pemantauan masa nyata dan analisis log adalah sangat penting. Sistem Linux menyediakan beberapa alatan berkuasa yang boleh membantu kami melaksanakan pemantauan log dan fungsi penggera. Artikel ini akan menerangkan cara menggunakan alatan Linux untuk memantau dan memaklumkan log, serta menyediakan beberapa contoh kod. Gunakan arahan ekor untuk melihat log dalam masa nyata Perintah ekor boleh melihat kandungan fail log yang dikemas kini dalam masa nyata. Dengan menggunakan arahan ekor, kita boleh

Bagaimana untuk menyelesaikan masalah kehilangan log pelayan Linux Bagaimana untuk menyelesaikan masalah kehilangan log pelayan Linux Jun 30, 2023 pm 04:37 PM

Bagaimana untuk menyelesaikan masalah kehilangan log sistem pada pelayan Linux Ringkasan: Pada pelayan Linux, log sistem adalah sangat penting untuk pemantauan dan penyelesaian masalah. Walau bagaimanapun, kadangkala log sistem mungkin hilang atau gagal dirakam dengan betul, menyebabkan penyelesaian masalah. Artikel ini akan memperkenalkan beberapa penyelesaian untuk membantu menyelesaikan masalah kehilangan log sistem pada pelayan Linux. Pengenalan: Pada pelayan Linux, log sistem adalah sumber yang sangat penting Ia digunakan untuk merekodkan status berjalan, maklumat ralat, maklumat amaran dan

Penerokaan mendalam: Cara Golang melaksanakan fungsi pemantauan fail Penerokaan mendalam: Cara Golang melaksanakan fungsi pemantauan fail Feb 23, 2024 am 09:27 AM

Sebagai bahasa pengaturcaraan yang cekap dan ringkas, Golang mempunyai prestasi cemerlang dalam pemprosesan fail. Antaranya, pemantauan fail adalah fungsi yang sangat biasa dan berguna, yang boleh membantu kami memantau perubahan dalam sistem fail dalam masa nyata, untuk membuat pemprosesan yang sepadan tepat pada masanya. Artikel ini akan menyelidiki cara Golang melaksanakan fungsi pemantauan fail dan menyediakan contoh kod khusus untuk membantu pembaca memahami dan menggunakan fungsi ini dengan lebih baik. Mengapa anda memerlukan keupayaan pemantauan fail? Dalam proses pembangunan perisian moden, operasi fail adalah pautan yang sangat penting. khususnya

Penyusunan kod sumber dan pemasangan PHP PDO MySQL: petua praktikal dan langkah berjaga-jaga Penyusunan kod sumber dan pemasangan PHP PDO MySQL: petua praktikal dan langkah berjaga-jaga Mar 07, 2024 pm 09:27 PM

Penyusunan dan pemasangan kod sumber PHPP DOMySQL: Petua praktikal dan langkah berjaga-jaga PHP ialah bahasa skrip bahagian pelayan yang digunakan secara meluas, dan MySQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka yang popular. Dalam pembangunan sebenar, selalunya perlu menggunakan sambungan PHPPDO untuk menyambung ke pangkalan data MySQL untuk mencapai penyimpanan dan operasi data. Artikel ini akan memperkenalkan cara memasang PHP melalui penyusunan kod sumber, mengkonfigurasi PDO untuk menyambung ke MySQL dan menyediakan

Bagaimana untuk menyelesaikan masalah kehilangan perkhidmatan Oracle? Bagaimana untuk menyelesaikan masalah kehilangan perkhidmatan Oracle? Mar 08, 2024 pm 04:27 PM

Menyelesaikan masalah kehilangan perkhidmatan Oracle Pangkalan data Oracle adalah sistem pengurusan pangkalan data hubungan pilihan untuk banyak perusahaan dan organisasi Walau bagaimanapun, dalam penggunaan sebenar, kehilangan perkhidmatan pangkalan data kadangkala berlaku, menjejaskan operasi normal sistem. Artikel ini akan memperkenalkan cara menyelesaikan masalah kehilangan perkhidmatan Oracle, dan memberikan contoh kod khusus untuk membantu pembaca menangani kegagalan pangkalan data biasa ini dengan lebih baik. 1. Semak status perkhidmatan Oracle Sebelum menyelesaikan masalah kehilangan perkhidmatan Oracle, anda perlu mengesahkan status semasa perkhidmatan tersebut.

Pemantauan log MySql: Bagaimana untuk mengesan dan menganalisis ralat dan pengecualian MySQL dengan cepat Pemantauan log MySql: Bagaimana untuk mengesan dan menganalisis ralat dan pengecualian MySQL dengan cepat Jun 15, 2023 pm 09:42 PM

Dengan kemunculan Internet dan era data besar, pangkalan data MySQL, sebagai sistem pengurusan pangkalan data sumber terbuka yang biasa digunakan, diterima pakai oleh semakin banyak syarikat dan organisasi. Walau bagaimanapun, dalam proses aplikasi sebenar, pelbagai ralat dan pengecualian mungkin berlaku dalam pangkalan data MySQL, seperti ranap sistem, tamat masa pertanyaan, kebuntuan, dsb. Anomali ini akan memberi kesan serius terhadap kestabilan sistem dan integriti data Oleh itu, mengesan dan menganalisis ralat dan anomali MySQL dengan cepat adalah tugas yang sangat penting. Pemantauan log adalah fungsi penting MySQL

Bagaimana untuk memantau dan menyelesaikan masalah log sistem jualan kilat PHP Bagaimana untuk memantau dan menyelesaikan masalah log sistem jualan kilat PHP Sep 19, 2023 am 08:24 AM

Bagaimana untuk menjalankan pemantauan log dan penyelesaian masalah sistem jualan kilat PHP Pengenalan: Dengan perkembangan pesat industri e-dagang, aktiviti jualan kilat telah menjadi cara penting untuk menarik pengguna. Dalam aktiviti jualan kilat, kestabilan sistem dan keupayaan pemprosesan serentak yang tinggi adalah penting. Untuk memastikan operasi normal sistem jualan kilat, pemantauan log dan penyelesaian masalah diperlukan. Artikel ini akan memperkenalkan cara menggunakan PHP untuk pemantauan log dan penyelesaian masalah sistem jualan kilat, dan menyediakan beberapa contoh kod. 1. Tahap log tetapan pemantauan log Dalam fail konfigurasi sistem jualan kilat, kita boleh tetapkan