First and Second Level Cache


Baik first level maupun second level itu sangat dianjurkan buat dipake diproduction.

First level cache selalu ada, gak bisa dimatiin. Itu gak berhubungan dengan koneksi ke db. First-level cache ini merujuk ke object yg ter-attach ke unit-of-work tertentu (nhibernate-session). Jadi selama lu load sebuah row dari session yang sama, lu bakal dibalikin reference ke object yang sama, karna ini adalah object yang ditrack oleh session tersebut selama unit-of-work, sampe entity tersebut dievict ato session tersebut didispose.
First level cache ini fungsinya bukan buat performance reason (walopun memang tetep improve performance), melainkan ini behavior yang dibutuhkan buat menjaga unit-of-work semantics, yang dah inherent dari cara kerja nhibernate, gak bisa dimatiin.

Second-level cache adalah across sessions. Ini sifatnya optional, tapi sangat penting dipake di production. Gunanya purely buat performance reason, ngurangin hit ke database, dengan memanfaatkan high-performance cache.
Yang gak boleh dipake adalah default providernya, yaitu menggunakan in-memory cache, yang bakal ngaco kalo dipake di production, karna cachenya gak terdistribute dengan benar antar instances di dalem cluster/web-farm.
Mesti diganti dengan production-grade cache provider, typically yg menggunakan DHT. Memcached misalnya.

~ hendryluk

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s