在我们的项目中,我们有300个字段/列,其中包含15个表,其中大约15列以varchar2(4000)
作为数据类型。
据我所知,
在磁盘上,VARCHAR2
仅消耗存储实际数据所需的字节数。 VARCHAR2(4000)
列中的4字节字符串仅占用磁盘上4 bytes
的空间。
对于检索,我们使用数据库中的oracle VIEW。但是我们得到了 堆内存问题经常发生。如果同时有更多请求。 有什么方法可以解决这个问题吗?我们正在使用Web逻辑服务器。
到目前为止我提到的链接:
Impact of defining VARCHAR2 column with greater length https://community.oracle.com/thread/776726?start=0
Heap Dump
The maximum amount of data, in bytes and rounded down to the nearest power of 2, mapped into the JVM's address space per paging store file. Applies only when a native <code>wlfileio</code> library is loaded.</p> <p>A window buffer does not consume Java heap memory, but does consume off-heap (native) memory. If the paging store is unable to allocate the requested buffer size, it allocates smaller and smaller buffers until it reaches <code>PagingMinWindowBufferSize</code>, and then fails if it cannot honor <code>PagingMinWindowBufferSize</code>.</p> <p>Oracle recommends setting the max window buffer size to more than double the size of the largest write (multiple concurrently updated records may be combined into a single write), and greater than or equal to the file size, unless there are other constraints. 32-bit JVMs may impose a total limit of between 2 and 4GB for combined Java heap plus off-heap (native) memory usage.</p> <ul> <li>See the JMS server runtime MBean attribute <code>PagingAllocatedWindowBufferBytes</code> to find out the actual allocated Window Buffer Size.