切换到多行模式
多行模式配置支持存储的数据量仅受应用程序中数据库容量的限制。应用程序可以读取单个字段而不是整条记录,从而通过避免不必要的 Java™ 对象序列化来帮助提高性能。配置会话管理工具以通过使用多行模式配置将会话对象中的每个属性分别存储在数据库中的单独行内。
关于此任务
保留的实际限制仅仅是会话属性对象的大小。多行模式潜在地具有某些使用方案中的性能利益,如当大量数据存储到会话中 ,但是在给定 servlet 的 HTTP 请求处理期间指定访问的仅仅是少数数据。在这样的方案中,避免不需要的 Java 对象序列化有利于提高性能。
除了允许较大的会话记录外,使用多行模式还可以带来性能效益。但是,从单行切换到多行模式需要做一点工作,如下表所示。
缺省情况下,一个会话映射至数据库表(用于保存会话)中的一行。在该设置中,对 WebSphere® Application Server 可访问的用户定义、应用程序特定数据的数量做了硬性限制。
在验证选项是否适合应用程序的需求时,考虑将单行用法指向一个数据库,而将多行用法指向另一个数据库的配置。在代码中通过切换使用的数据源完成这一操作,然后监视性能。
编程问题 | 应用程序方案 |
---|---|
使用单行的原因 |
|
不使用单行的原因 | 每个会话中 2 兆的存储数据限制。 |
使用多行的原因 |
|
不使用多行的原因 | 如果数据很小,那么当所有的东西可以存储到一行中时,您可能就不想有多行读的额外开销。 |
在使用多行模式时,要将您的应用程序数据对象设计成不必引用其他的数据对象,并防止产生循环引用。例如,假设您正使用 HttpSession.put(..) 将两个对象(A 和 B)存储到会话中,而且 A 包含对 B 的引用。在多行情况下,因为对象是存储在数据库中不同的行中,当以后检索对象 A 和 B 时,A 和 B 之间的对象图与存储的是不同的。A 和 B 是相互独立的对象。