cari

Rumah  >  Soal Jawab  >  teks badan

并发 - redis队列里每天有超过一亿条数据,使用python如何高效的将其写入sql数据库?

使用python拉redis队列里的数据,如何确保完整高效不阻塞的把每天上亿条的数据写入mysql/oracle数据库?

PHPzPHPz2802 hari yang lalu872

membalas semua(6)saya akan balas

  • 怪我咯

    怪我咯2017-04-17 18:03:11

    Seluruh proses adalah baris gilir gilir penggunaan.

    Beri saya satu siri idea:

    1. Gunakan arahan monitor untuk memantau acara redis, atau tingkatkan versi redis (>=2.8) untuk memantau peristiwa perubahan redis.

    2. Berbilang proses/benang/coroutine mengendalikan acara (cth. dimasukkan ke dalam penimbal)

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

    balas
    0
  • 伊谢尔伦

    伊谢尔伦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

    balas
    0
  • PHPz

    PHPz2017-04-17 18:03:11

    Ia akan menjadi lebih pantas untuk menggunakan mongodb untuk jumlah data yang begitu besar

    balas
    0
  • 伊谢尔伦

    伊谢尔伦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.

    balas
    0
  • 迷茫

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

    balas
    0
  • PHPz

    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.

    balas
    0
  • Batalbalas