10.11.3 Multirow persistent sessions: Database persistence
When a session contains multiple objects accessed by different servlets or JSPs in the same Web application, multi-row session support provides a mechanism for improving performance. Multi-row session support stores session data in the persistent session database by Web application and value. Table 10-6 shows a simplified representation of a multi-row database table.
Table 10-6
Session ID Web application Property Small value Large value DA32242SSGE2 ShoeStore ShoeStore.First.Name Alice DA32242SSGE2 ShoeStore ShoeStore.Last.Name Smith DA32242SSGE2 ShoeStore ShoeStore.Big.String A big string.... Simplified multi-row session representation
In this example, if the user visits the ShoeStore application, and the servlet involved needs the user's first name, the servlet retrieves this information through the session API. The session manager brings into the session cache only the value requested. The ShoeStore.Big.String item remains in the persistent session database until the servlet requests it. This saves time by reducing both the data retrieved and the serialization overhead for data the application does not use.
After the session manager retrieves the items from the persistent session database, these items remain in the in-memory session cache. The cache accumulates the values from the persistent session database over time as the various servlets within the Web application request them. With WebSphere's session affinity routing, the user returns to this same cached session instance repeatedly. This reduces the number of reads against the persistent session database, and gives the Web application better performance.
How session data is written to the persistent session database has been made configurable in WebSphere. For information about session updates using single and multi-row session support, see 10.8.6, Single and multi-row schemas (database persistence). Also see 10.8.7, Contents written to the persistent store using a database.
Even with multi-row session support, Web applications perform best if the overall contents of the session objects remain small. Large values in session objects require more time to retrieve from the persistent session database, generate more network traffic in transit, and occupy more space in the session cache after retrieval.
Multi-row session support provides a good compromise for Web applications requiring larger sessions. However, single-row persistent session management remains the best choice for Web applications with small session objects. Single-row persistent session management requires less storage in the database, and requires fewer database interactions to retrieve a session's contents (all of the values in the session are written or read in one operation). This keeps the session object's memory footprint small, as well as reducing the network traffic between WebSphere and the persistent session database.
Avoid circular references within sessions if using multi-row session support. The multi-row session support does not preserve circular references in retrieved sessions.