Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change introduced by #1016 create a big performance regression for databases with lots of metadata #1435

Closed
pdeliot opened this issue Sep 22, 2020 · 3 comments

Comments

@pdeliot
Copy link

pdeliot commented Sep 22, 2020

The change introduced by #1016 in the sp_columns_100 call in public java.sql.ResultSet getColumns in

src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDatabaseMetaData.java

is causing global dramatical performance to drop dramatically with databases with much metadata (nearly 500000 columns).

For example, in one database, with JDBC 7 the call during 6658 ms (with 6204 ms CPU load) and 14584 ms (with 13234 ms cpu load) using JDBC 8.

This may be caused by inaccurate use of table variable.
Table variable is supposed to be limited for 100 rows and here handling nearly 500000 rows.

It may also be evaluated to use the @fUsePattern=0 parameters like done for SQLServerParameterMetaData in this change:

Performance | Disabled pattern matching when using CallableStatements and SQLServerParameterMetaData
#1149

@ulvii
Copy link
Contributor

ulvii commented Sep 22, 2020

Hi @pdeliot ,
Please provide a JAVA code that reproduces the performance degradation, we will investigate and get back to you.

@peterbae
Copy link
Contributor

Hi @pdeliot, were you able to look into producing a repro case for this?

@ulvii
Copy link
Contributor

ulvii commented Dec 17, 2020

Closing due to inactivity.

@ulvii ulvii closed this as completed Dec 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants