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
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
danDAILY AGG RELOAD
prosedur. SertakanAGG CHECK INTERVAL
danAGG CHECK DAILY
prosedur yang akan membantu Anda tidur nyenyak di malam hari. Oh dan belum lagiAGG DATA HOLE CHECK
atauMISSING 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..