-
Notifications
You must be signed in to change notification settings - Fork 207
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
SQL parsing for span.name with db spans becomes Slow when calculating large SELECT columns FROM table WHERE column IN ('1', '2', ..., 'N') sql query #1763
Comments
Any updates on this? |
Having the same problem. In our case the performance of the ef core select increases from ~150ms to 2260ms. Also applies to the current 1.16.1 version |
Found the culprit in the Scanner.cs code. Measuring the time of the OP's query with ElementAt, the The duration of my own query measures ~1900ms, with the change its down to 3ms. |
Thanks for the fix @d-ziegler - the PR with your fix is merged. Additionally, I also opened #1782 - that'll add the sample input sql query to our tests and also adds a benchmark to measure this. |
@gregkalapos Thanks for merging this so fast and writing a benchmark test. Do you know when we can expect the next release with the fix? |
APM Agent version
v1.15.0
Environment
Operating system and version:
Windows 10 Professional 21H2 19044.1826
Application Target Framework(s) (e.g. net461, netcoreapp3.1):
netcoreapp3.1
Describe the problem
SQL parsing for span.name with db spans becomes Slow when calculating large
SELECT columns FROM table WHERE column IN ('1', '2', ..., 'N')
sql querySteps to reproduce
v1.15.0
test/Elastic.Apm.Tests/DbSpanNameTests.cs
Code/PR where this issue first introduced
https://github.com/elastic/apm-agent-dotnet/pull/1657/files#diff-70b8cfeedf4e7593846932c85a11f77ae8e515c6bf644af3d41b4bd8b46eb4abR100
Possible fix
Because for this case, the result
span.name
would beSELECT FROM Speech
, if that's what we expected, maybe for largeSELECT columns FROM table WHERE column IN ('1', '2', ..., 'N')
sql query, we can truncateIN ('1', '2', ..., 'N')
before we go to parsespan.name
.The text was updated successfully, but these errors were encountered: