Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

tabel dan pelaporan mysql yang sangat besar

Mulailah dengan melihat ke partition siapkan meja Anda jika Anda belum melakukannya:

http://dev.mysql.com/doc/refman/5.1 /en/partitioning.html

http://www.slideshare.net/datacharmer/mysql-partitions-tutorial

http ://blog.mayflower.de/archives/353-Is-MySQL-partitioning-useful-for-very-big-real-life-problems.html

Bagaimana Anda 'mengkonsolidasikan' data Anda? Mungkin cara yang Anda gunakan belum maksimal. Satu pendekatan yang baik (beri tahu saya jika ini yang Anda lakukan) adalah membuat tabel yang berisi data agregat. Kemudian atur seperti ini:

Pertama-tama kesampingkan bagaimana data dibuang ke tabel utama Anda...

  • Buat pekerjaan (cron atau apa pun yang mungkin Anda miliki atau sudah dikonfigurasi) yang berjalan pada interval tertentu, relatif terhadap bagaimana data dimuat ke dalam tabel utama (sebut saja MAIN , bergerak kedepan). Jika tabel MAIN Anda dimuat setiap jam, maka sinkronkan. Setengah jam? Tidak masalah. Anda tetap dapat memeriksa kecepatannya, atau jika laporan Anda berjalan mendekati jam sibuk, maka jadwalkan mendekati jam tersebut

  • Indeks tabel Anda dengan benar untuk data gabungan. Sebut saja AGG bergerak maju.

  • Buat prosedur tersimpan yang memuat data dari MAIN ke AGG, yang pada dasarnya adalah AGG LOAD FOR INTERVAL-? . Tentu saja, Anda satu-satunya di sini yang tahu bagaimana atau kapan data dimasukkan ke MAIN, jadi Anda juga yang tahu apa maksud agregasi itu. Dimungkinkan juga untuk tetap menjalankan prosedur agregasi tersimpan jika maksud agregasi tidak selesai (katakanlah untuk satu hari penuh.. jadi ini adalah proses akumulatif hingga ditetapkan)

  • Gunakan STAGING tabel. Bagi saya, mereka yang terbaik .

  • Buat prosedur tersimpan yang memeriksa ulang data, sehingga setiap pembaruan atau penyisipan catatan tambahan dapat tercermin dalam tabel AGG dengan menjalankan prosedur ini. Sertakan parameter untuk rentang yang akan diperbarui. Jika harian, maka Anda memiliki DAILY AGG LOAD dan DAILY AGG RELOAD prosedur. Sertakan AGG CHECK INTERVAL dan AGG CHECK DAILY prosedur yang akan membantu Anda tidur nyenyak di malam hari. Oh dan belum lagi AGG DATA HOLE CHECK atau MISSING AGG DATA CHECK dan menerapkan aturan bisnis yang menerapkan pemeriksaan untuk jumlah data minimum yang diperlukan yang bisa Anda dapatkan dari tabel agregat atau dari tabel utama atau tabel staging (lebih disukai)

  • Tentu saja, jangan pernah mengubah AGG meja. Selalu muat ulang saja.

  • Bagaimana ini membantu? Bukankah Anda hanya perlu membuat laporan Anda menanyakan AGG tabel, mana yang lebih kecil, dan lebih cepat (karena agregasi sudah dilakukan)? Mungkin masalah kinerja muncul dengan pemuatan interval, tetapi jika Anda menyusun tabel dengan benar, indeksnya, dan pemeliharaannya, itu akan sepadan.

  • Di mana partisi masuk? Pengarsipan. Setelah waktu tertentu telah berlalu (diskusikan apa yang dapat diterima dengan tim/bos/pejabat teratas Anda), Anda dapat mengarsipkan data lama dari MAIN . Saya mengalami harus menyimpan data selama 1 tahun di database produksi. Itu agak terasa seperti hambatan, tetapi karena itu adalah permintaan klien, perusahaan tidak punya pilihan selain memberi saya ruang disk yang saya butuhkan (menggosok tangan) dan saya bermain-main dengannya sampai saya mendapatkan sesuatu yang berjalan dengan baik. Saya harus menyebutkan bahwa pengalaman saya adalah dengan Microsoft SQL Server 2005, dan prosedur tersimpan dan SSIS membuatnya menyenangkan.

Ini semua jika Anda belum mengetahuinya, dan untuk orang lain yang mungkin ingin mempertimbangkan opsi. Saya tidak mengatakan Anda belum mengetahui hal-hal di atas; Saya hanya menyatakan apa yang dapat saya lakukan sebelumnya -- mengingat saya tidak memiliki lebih banyak informasi untuk dikerjakan dari pos Anda, kecuali bahwa Anda memiliki proses konsolidasi yang telah Anda coba..




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menghapus duplikat nilai yang dipisahkan koma dalam satu kolom di MySQL

  2. Zend Db / Mysql - Sisipkan dengan Pilih

  3. MySQL:Perbarui/masukkan/hapus kueri yang sangat lambat tergantung pada langkah akhir kueri

  4. fungsi isset() mengembalikan true bahkan ketika item tidak disetel

  5. menyimpan nomor sebagai varchar