Saya ingin melaksanakan beberapa statistik pada data, seperti mata pengguna, bilangan siaran, bilangan ulasan, dsb., jumlah bilangan siaran dalam bahagian, jumlah komen dan seumpamanya;
Contoh: Catatan pengguna meningkatkan mata, mengemas kini statistik bilangan siaran, menukar statistik siaran dalam bahagian yang sama, atau mungkin terdapat perubahan statistik lain.
Dalam kes ini, patutkah kita terus menggunakan statistik data table count() jika perlu atau menambah pelbagai medan statistik pada jadual dan melengkapkannya melalui transaksi apabila dicetuskan?
Saya secara peribadi lebih suka yang kedua, tetapi saya rasa agak tidak munasabah untuk menggunakan transaksi untuk memastikan ketekalan statistik? ?
Tetapi sekali lagi, jika transaksi tidak digunakan, beberapa ralat akan disebabkan oleh ralat statistik di beberapa tempat, seperti kesalahan paging?
Adakah anda mempunyai sebarang idea atau cadangan yang baik? Tolong beri saya nasihat!
Sebaik-baiknya jangan gunakan kiraan Apabila jumlah data adalah besar, pangkalan data tidak dapat mengendalikan pertanyaan seperti ini, terutamanya pertanyaan seperti ini kepada pengguna.
Bilangan tetap dan kemudian masukkan ke dalam cache
Saya bukan master, tetapi jika saya melakukannya, saya akan meletakkan data seperti ini dalam redis.
[Latar Belakang]
1 Masalah ini disebabkan oleh prestasi pangkalan data tidak dapat memenuhi senario perniagaan sedia ada
2 Mengikut senario perniagaan yang anda berikan, data dibenarkan mempunyai ralat tertentu
【Struktur Program】
Struktur program sedia ada beroperasi dengan memanggil pangkalan data secara terus, tetapi prestasi pangkalan data tidak dapat memenuhi keperluan Pada masa ini, kami tidak boleh bergantung semata-mata pada pangkalan data, jadi kami perlu menambah lapisan [counter] antara pangkalan data
.Sebelum dan selepas pelarasan program, kita perlu menambah [aspek] dalam tiga pautan [tambah], [padam] dan [ubah suai] pangkalan data, yang merupakan acara afterSave, yang juga boleh difahami sebagai cangkuk
Redis biasanya digunakan untuk [counter], kerana ia boleh Persistence
【Nota diperlukan】
1 Kerana operasi db mungkin biasa, tetapi operasi redis gagal, mungkin terdapat ralat data
2 Memandangkan mungkin terdapat ralat, mekanisme pembetulan ralat diperlukan. Mekanisme ini boleh mengurangkan tekanan pada pelayan . Dalam kes kecil, gunakan kiraan atau jumlah mysql untuk mengemas kini
3 atau gunakan [mekanisme transaksi] lain untuk memastikan keatoman operasi DB dan Redis.
Pengiraan InnoDB perlu mengimbas semua baris data dalam masa nyata, yang perlahan
Myisam tidak boleh digunakan sangat
Cadangan
数据表添加统计字段
Statistik diproses menggunakan perkhidmatan bahagian belakang Sebagai contoh, bahagian belakang disambungkan kepada hamba
Orang pertama tidak mengesyorkan menggunakan borang count() untuk pengumpulan data, dan harus memilih bentuk kumulatif.
Oleh kerana setiap kali data baharu ditambah, count() mesti digunakan untuk mengira, yang sangat menggembirakan untuk pangkalan data.
Jadi adalah disyorkan untuk melakukan ini:
1. Gunakan nosql untuk mengekalkan semua data statistik
2 Apabila menambah data baharu, cetuskan modul untuk mengumpul data yang sepadan dan tulis ganti data asal.
3 Untuk memastikan masalah nosql down berlaku, adalah disyorkan untuk menyimpan data statistik yang sepadan dalam pangkalan data dan menulis modul logik untuk menyimpan data nosql ke pangkalan data dengan kerap.
4 Sudah tentu, anda boleh menggunakan kiraan dengan kerap (ini boleh dilakukan apabila pelayan melahu) dan semak semula sama ada statistik itu betul