Kami memiliki tabel mysql yang pada waktu tertentu memiliki sekitar 12 juta baris. Kami perlu menghapus data lama untuk menjaga ukuran tabel agar dapat dikelola.
Saat ini kami menjalankan kueri ini setiap hari, tengah malam, menggunakan pekerjaan cron:
DELETE FROM table WHERE endTime < '1393632001'
Terakhir kali kueri menjalankannya memeriksa 4.602.400, membutuhkan waktu lebih dari 3 menit dan CPU melewati atap.
Apa yang bisa kita lakukan untuk menjaga agar CPU, koneksi db sinkron, kedalaman cue disk, dll agar tidak melonjak tidak masuk akal sembari masih membersihkan data lama?
PS: Anda akan melihat bahwa permintaan sebenarnya terjadi pada waktu yang tidak tepat dalam siklus penggunaan kami. Asumsikan bahwa kami telah menggeser waktu kueri untuk terjadi pada titik penggunaan terendah setiap hari. Juga, tidak ada indeks pada "endTime" dan saya lebih suka untuk tetap seperti itu jika mungkin karena ada satu ton data yang dimasukkan secara teratur, dan tidak banyak pencarian.