使用-Xmx1024m
投放,尝试打开100个CSV文件CREATE TEXT TABLE
,SET TABLE SOURCE
。在某个地方得到OOM。
试图将cache_scale减少到1.效果更好,但在某些时候仍然是OOM。
是什么原因?
我发现内存被积极地用于分配大量org.hsqldb.PointerNode
个实例。有什么理由可以避免吗?
答案 0 :(得分:1)
TEXT表是使用CSV(逗号分隔值)或类似文件作为其数据源的特殊表。这些表可以像任何SQL表一样用于查询和写入数据。
虽然数据存储在CSV文件中,但索引和指向数据行的指针存储在内存中。默认情况下,每个表上都有一个索引,如果有表,则还支持表的PRIMARY KEY。这些表的UNIQUE或FOREIGN KEY约束由内存索引备份。
cache_scale
(使用HSQLDB 1.8.x)用于控制随时在内存中缓存的行数据量。较小的值会减少用于缓存数据的内存,但不会更改索引所需的内存。