java - for循环效率问题
巴扎黑
巴扎黑 2017-04-17 17:50:58
0
4
486

for循环,大概需要遍历100万的数据,对于每一条数据,需要更新5张表,调用两次API接口,但是在执行过程中,因为数据量太大,所以执行的中间,由于耗时严重,经常会出现链接中断等问题,如果把这种遍历100万数据的逻辑,搞成多线程,应该怎么搞啊?

巴扎黑
巴扎黑

membalas semua(4)
黄舟

Gunakan kumpulan benang atau pemprosesan yang diedarkan Jika sekeping data tertentu telah diproses, anda boleh menandainya di suatu tempat dan menulisnya dalam masa nyata jika ia gagal, anda boleh memulakan semula dari awal dan menapis data yang lengkap.

Anda juga boleh menetapkan tamat masa, kemudian simpan rekod yang gagal secara berasingan dan gunakan strategi untuk mencuba lagi.

PHPzhong

Mendengar nada anda, jika anda hanya mahu memproses 1 juta data ini dalam satu masa, daripada menggunakan program ini untuk masa yang lama, anda perlu membuka beberapa proses lagi dengan mudah dan kasar, dan kemudian lulus beberapa parameter kepada proses melalui baris arahan Anggapkan bahawa 10 proses dibuka, setiap proses bertanggungjawab untuk 100,000 data, dan data yang bertanggungjawab untuk setiap proses boleh dibezakan mengikut peraturan tertentu. Contohnya, selang ID

大家讲道理

Bahagikan 1 juta data kepada beberapa bahagian, setiap utas memproses satu keping data, dan data mesti dimasukkan secara berkelompok Jika pangkalan data mempunyai indeks, lebih baik untuk mematikannya selepas semua data dimasukkan , indeks akan disatukan Jika ia adalah Oracle Anda boleh menggunakan SQL Loader atau alat lain yang serupa untuk memasukkan secara langsung, mengelakkan penggunaan Hibernate dan sebagainya.

刘奇

Gunakan kumpulan benang untuk merekodkan titik permulaan setiap data urutan, dan kemudian mula membaca data Anda disyorkan untuk menggunakan kemas kini kelompok untuk mengemas kini antara muka API dipanggil secara tidak segerak dan jadual dikemas kini semasa membuat panggilan . Jika anda rasa prosedur ini lebih rumit. Ia dilaksanakan secara berurutan menggunakan jadual kemas kini pangkalan data yang dipanggil oleh antara muka api.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan