Memindahkan beberapa komentar dari diskusi menjadi jawaban, dengan kata-kata ulang dan format ulang ..
Pada dasarnya, apa yang terjadi adalah bahwa kecuali Anda memiliki kasus yang sangat ekstrem, mereka tidak benar-benar perlu "pengumpulan sampah". Jika Anda tidak pernah mengambilnya, maka tidak masalah apakah mereka ada di sana atau tidak.
Lihat, transien disimpan dalam tabel opsi secara default. Dalam instalasi dasar, tabel opsi mungkin memiliki 100 entri di dalamnya. Setiap transien menambahkan dua entri lagi, tetapi bahkan jika Anda memiliki ribuan, mereka tidak mempengaruhi kecepatan situs, karena mereka tidak dimuat secara otomatis.
Saat startup, WordPress memuat opsi ke dalam memori, tetapi hanya memuat opsi yang bendera autoload-nya dihidupkan. Transien tidak mendapatkan ini, jadi jangan dimuat ke dalam memori. Hanya transien yang benar-benar digunakan kemudian akan dikenakan biaya.
Dari perspektif basis data, tabel opsi memiliki indeks pada Id opsi dan nama opsi. Transien selalu dimuat berdasarkan nama (kunci), sehingga pencarian untuk mereka selalu dipilih secara sederhana pada satu nilai kunci unik. Jadi pencariannya adalah O (log (n)) dan sangat cepat. Dengan Big-O log (n), Anda harus masuk ke jutaan dan jutaan baris sebelum menjadi penting. Terus terang, overhead dalam pengaturan dan teardown dari query, bersama dengan transfer data aktual, jauh lebih lama. Permintaan itu sendiri berjalan pada dasarnya nol-waktu dengan perbandingan. Jadi hanya memiliki baris tambahan yang tidak digunakan tidak mempengaruhi apa pun selain menggunakan ruang disk tambahan.
Mengindeks dalam basis data adalah salah satu dari ide-ide yang banyak dibaca yang tidak masuk akal bagi orang-orang yang belum benar-benar memahami apa yang terjadi di balik layar. Database dirancang untuk pengambilan data cepat, dari bawah ke atas, dan dapat menangani hal semacam ini tanpa masalah. Ini adalah bacaan yang sangat bagus: http://en.wikipedia.org/wiki/Index_(database )
Sekarang, pembersihan dengan cara yang paling jelas (memanggil SQL DELETE pada mereka) tidak benar-benar menghapusnya dari database. Itu hanya menghapus mereka dari indeks dan menandai baris sebagai "dihapus". Sekali lagi, ini adalah cara kerja database. Untuk benar-benar membersihkan ruang disk, Anda harus melanjutkan dan melakukan TABEL OPTIMASI setelahnya, dan ini bukan operasi cepat. Ini membutuhkan waktu. Mungkin lebih banyak waktu daripada nilainya. Ini mungkin tidak cukup untuk memberi Anda penghematan waktu CPU, secara total.
Jika Anda memiliki beberapa kasus yang menyebabkan penyisipan transien baru yang terus-menerus tidak digunakan, maka Anda perlu mencari masalah yang mendasarinya. Apa yang memasukkan transien ini? Apakah mereka menggunakan kunci yang berubah atau bermutasi? Jika demikian, maka plugin atau kode yang menyebabkan ini harus diperbaiki, pada dasarnya, jangan lakukan itu. Itu akan lebih membantu, karena kemungkinan kode yang tidak membuatnya dengan benar juga tidak mengambil mereka, dan dengan demikian melakukan lebih banyak pekerjaan daripada yang harus dilakukan.
Di sisi lain, mungkin ada kasus di mana transien sedang dibuat untuk sesuatu seperti setiap pos. Ini mungkin memang bisa diterima. Saya melakukan ini sendiri di SFC, untuk menyimpan komentar yang masuk dari Facebook. Setiap posting memiliki potensi sementara yang terkait dengannya, yang berarti dua baris tambahan per posting. Jika Anda memiliki 10k posting, Anda akan memiliki 20k baris pada tabel opsi (akhirnya). Ini tidak buruk atau lambat, karena sekali lagi, ada sangat sedikit perbedaan antara 100 baris dan 20.000 baris sejauh database sangat peduli. Semuanya diindeks. Ini secepat sih. Sub-sub-milidetik.
Ketika Anda mulai masuk ke jutaan baris, maka saya akan khawatir. Ketika ukuran tabel opsi meningkat di atas ratusan megabyte, maka saya akan cukup peduli untuk melihat lebih dekat. Tetapi secara umum, ini bukan masalah kecuali untuk kasus-kasus ekstrim. Ini tentu bukan masalah untuk hal yang lebih kecil dari sesuatu seperti situs berita besar, dengan ratusan ribu posting. Dan untuk setiap situs yang cukup besar untuk itu menjadi masalah, Anda harus menggunakan objek cache eksternal dari beberapa macam, dan dalam bahwa kasus, transien mendapatkan otomatis disimpan di sana bukan di database.