I think this definitely will help. The code is already complicated, we can add more comments and doc to make it clear. Nothing is more attractive than saving 90% memory.
- Haisheng ------------------------------------------------------------------ 发件人:Feng Zhu<[email protected]> 日 期:2019年10月29日 10:28:57 收件人:<[email protected]> 主 题:[DISCUSSION] Cache Optimization in JdbcSchema Hi all, We made some optimizations in practice. But I'm not sure whether this kind of change is necessary to the community, because it will make the code complex. Current now, JdbcSchema caches all JdbcTables in tableMap (i.e.,* ImmutableMap<String, JdbcTable> tableMap*) In our production environment, there are about 3000+ datasources and correspondingly creating 3000+ JdbcSchemas, while each JdbcSchema may contain up to 10000+ tables.Consequently, the table map occupies nearly 10GB memory, bringing great pressure on the server. We encode <*catalogName, schemaName, tableTypeName*> tuple as unique Integer, and simplify the table map as <*String, Integer*>. According to the Integer, we can find tuple and construct JdbcTable dynamically. Benefit from this, the cached table map costs only about 800MB memory. Best, DonnyZone
