Pertama, saya pikir akan berguna sebagai latar belakang untuk membaca kontrol konkurensi multi-versi (MVCC) sebagai latar belakang jawaban ini.
InnoDB mengimplementasikan MVCC, yang berarti dapat menggunakan pembacaan non-locking untuk SELECT
biasa . Ini tidak memerlukan pembuatan "snapshot" dan sebenarnya InnoDB tidak memiliki konsep snapshot yang sebenarnya sebagai objek. Sebagai gantinya, setiap record dalam database melacak nomor versinya sendiri dan mempertahankan "roll pointer" ke record "undo log" (yang mungkin masih ada atau tidak) yang mengubah baris ke versi sebelumnya. Jika versi rekaman yang lebih lama diperlukan, versi saat ini dibaca dan penunjuk gulungan tersebut diikuti dan membatalkan rekaman yang diterapkan hingga versi rekaman yang cukup lama diproduksi.
Biasanya sistem secara konstan membersihkan undo log tersebut dan menggunakan kembali ruang yang digunakan.
Kapan saja transaksi yang berjalan lama (perhatikan, tidak harus satu kueri) ada, log undo harus disimpan (tidak dibersihkan) untuk membuat ulang versi yang cukup lama dari semua catatan untuk memenuhi transaksi itu. Dalam sistem yang sangat sibuk, log yang dibatalkan itu dapat terakumulasi dengan sangat cepat untuk menghabiskan ruang gigabyte. Selain itu, jika catatan individu tertentu sangat sering dimodifikasi, mengembalikan catatan tersebut ke versi yang cukup lama untuk memenuhi kueri dapat memerlukan banyak aplikasi undo log (ribuan).
Itulah yang membuat "kueri yang sudah berjalan lama" mahal dan disukai. Mereka akan meningkatkan konsumsi ruang disk untuk menyimpan log undo di tablespace sistem, dan mereka akan berkinerja buruk karena aplikasi undo log record untuk mengembalikan versi baris setelah dibaca.
Beberapa database menerapkan jumlah maksimum ruang log undo yang dapat dikonsumsi, dan begitu mereka mencapai batas itu, mereka mulai membuang catatan log undo yang lebih lama dan membatalkan transaksi yang sedang berjalan. Ini menghasilkan pesan kesalahan "snapshot terlalu lama" kepada pengguna. InnoDB tidak memiliki batasan seperti itu, dan memungkinkan akumulasi tanpa batas.