Cara memantau aliran JPA Spring Data
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();
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
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();
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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? 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 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

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 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

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.

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 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