Rumah > Soal Jawab > teks badan
使用python拉redis队列里的数据,如何确保完整高效不阻塞的把每天上亿条的数据写入mysql/oracle数据库?
怪我咯2017-04-17 18:03:11
Seluruh proses adalah baris gilir gilir penggunaan.
Beri saya satu siri idea:
Gunakan arahan monitor untuk memantau acara redis, atau tingkatkan versi redis (>=2.8) untuk memantau peristiwa perubahan redis.
Berbilang proses/benang/coroutine mengendalikan acara (cth. dimasukkan ke dalam penimbal)
Data penimbal dimasukkan ke dalam pangkalan data secara berkelompok. (mysql nampaknya boleh memasukkan sehingga 5,000 item pada satu masa, tidak pasti, ia mungkin 9999 atau 4999, tetapi terdapat had atas), bergantung pada fungsi transaksi pangkalan data SQL, ia akan melancarkan semula jika gagal.
Bercakap tentang siri gunung:
4. Untuk data yang begitu besar, anda boleh mempertimbangkan pangkalan data lajur, hbase dan seumpamanya.
Siri tidak bertanggungjawab:
5. Sesetengah orang seolah-olah mengatakan bahawa terdapat masalah dengan persidangan volum data mongodb, termasuk di luar negara dan dalam negeri, serta kesimpulan selepas diuji oleh orang di sekeliling saya.
伊谢尔伦2017-04-17 18:03:11
Pangkalan data apa yang digunakan? Prestasi versi kendiri MySQL dan SQL Server jauh berbeza. Prestasi SQL Server / Oracle / DB2 berada pada tahap yang sama Prestasi MySQL sumber terbuka tidak begitu baik Memandangkan kluster, postgresql adalah lebih baik
Jika anda ingin memindahkan sejumlah besar data ke dalam pangkalan data. , anda mesti mempertimbangkan
1) Indeks yang sesuai boleh meningkatkan prestasi penulisan dengan banyak.
2) Jika pangkalan data tidak mempunyai reka bentuk master-slave, maka pertimbangkan untuk menggunakan RAID atau SSD Prestasinya tidak sedikit pun lebih teruk daripada pemacu keras mekanikal biasa.
3) Menggunakan enjin pangkalan data yang berbeza, mengambil MySQL sebagai contoh, masih terdapat perbezaan prestasi antara InnoDB dan MyISAM.
4) Jangan lakukan setiap rekod prestasi komitmen terpusat akan menjadi lebih daripada 10 kali lebih baik.
5) Asingkan membaca dan menulis, jika tidak, anda akan mendapati bahawa data penulisan menyekat pembacaan data.
Jika jumlah data setiap hari begitu besar, maka SQL tidak sesuai.
Malah, pangkalan data yang anda gunakan lebih bergantung pada format data anda Sesetengah pangkalan data lebih mesra kepada data dalam format tertentu Contohnya, HDF5 lebih mesra kepada data binari dan ruang
PHPz2017-04-17 18:03:11
Ia akan menjadi lebih pantas untuk menggunakan mongodb untuk jumlah data yang begitu besar
伊谢尔伦2017-04-17 18:03:11
Mysql tidak banyak digunakan, tetapi SQL Server mempunyai fungsi import kelompok yang boleh melepasi 10,000 dengan mudah dalam satu saat.
Saya rasa Mysql juga mempunyai fungsi penyisipan batch Selepas penyisipan, pemprosesan pasca mesti mempertimbangkan sub-pangkalan data dan jenis induk-hamba jadual.
迷茫2017-04-17 18:03:11
Masukkan 100 juta keping data ke dalam mysql setiap hari. . . Menganalisis pertanyaan adalah masalah. . Tetapi ia sepatutnya hanya data sejarah
PHPz2017-04-17 18:03:11
1. [Lengkap]: Gunakan mekanisme pengesahan.
2. [Cekap]: Gunakan bacaan kelompok, penulisan kelompok atau antara muka khusus.
3. [Tiada sekatan]: Adalah mustahil untuk tidak menyekat sama sekali Masa menyekat hanya boleh disimpan sesingkat mungkin tanpa menyebabkan sebarang persepsi. Ini memerlukan penggunaan dua mekanisme: pembahagian tugas dan pemprosesan perkongsian masa. Anda juga boleh memperkenalkan dua kaedah pemprosesan lanjutan: anggaran lengkung prestasi berdasarkan pembelajaran mesin dan pengimbangan beban masa nyata.