ob 2.4.12 驱动中的JDBC4DatabaseMetaData.getColumns 性能比较差

在程序中并发调用 getColumns 函数,发现系统被这个函数阻塞(当然应用层可以做缓存),后续比较MySQL的驱动,发现实现的方式不一样。

OB驱动是从 INFORMATION_SCHEMA.COLUMNS 查询,单个查询性能可以接受,多个就不行了。
MySQL 驱动 是使用 SHOW FULL COLUMNS FROM 方式实现,性能非常高。

OB 驱动能否优化一下 getColumns 的性能。

1 个赞

mysql的SHOW FULL COLUMNS FROM实际上应该也是从 INFORMATION_SCHEMA.COLUMNS 查询。性能差异能展示出来么

慢的原因是这样的,传入的表名带有下划线,例如: xxx_t1 ,调用getColumns函数时,查询元数据生成的的过滤条件是 where table_schema=‘xxxx’ and table_name like ‘xxx_t1’ , table_name 的条件是like,没有等值条件查询性能高。 下面ob驱动代码,目前表明含有下划线很常见。