-
Notifications
You must be signed in to change notification settings - Fork 3.2k
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
[Performance](Variant) Improve load performance for variant type #33890
Conversation
1. remove phmap for padding rows 2. add `SimpleFieldVisitorToScarlarType` for short circuit type deducint 3. correct type coercion for conflict types bettween integers In clickbench data, load performance: 12m36.799s -> 8m30.870s about 32.5% In variant_p2/performance.groovy: 3min44s20 -> 2min21s07 about 36.7%
Thank you for your contribution to Apache Doris. Since 2024-03-18, the Document has been moved to doris-website. |
run buildall |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
clang-tidy made some suggestions
TeamCity be ut coverage result: |
TPC-H: Total hot run time: 38846 ms
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
PR approved by anyone and no changes requested. |
run buildall |
TPC-H: Total hot run time: 38587 ms
|
TeamCity be ut coverage result: |
TPC-DS: Total hot run time: 185295 ms
|
ClickBench: Total hot run time: 30.4 s
|
run buildall |
TeamCity be ut coverage result: |
TPC-H: Total hot run time: 38735 ms
|
TPC-DS: Total hot run time: 185387 ms
|
ClickBench: Total hot run time: 30.78 s
|
run buildall |
TPC-H: Total hot run time: 38584 ms
|
TeamCity be ut coverage result: |
TPC-DS: Total hot run time: 185062 ms
|
ClickBench: Total hot run time: 30.09 s
|
run p0 |
run buildall |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
clang-tidy made some suggestions
@@ -207,8 +266,10 @@ class FieldVisitorToScalarType : public StaticVisitor<size_t> { | |||
type_indexes.insert(TypeId<NearestFieldType<T>>::value); | |||
return 0; | |||
} | |||
void get_scalar_type(DataTypePtr* type) const { | |||
get_least_supertype<LeastSupertypeOnError::Jsonb>(type_indexes, type); | |||
void get_scalar_type(TypeIndex* type) const { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
warning: method 'get_scalar_type' can be made static [readability-convert-member-functions-to-static]
void get_scalar_type(TypeIndex* type) const { | |
static void get_scalar_type(TypeIndex* type) { |
TeamCity be ut coverage result: |
TPC-DS: Total hot run time: 186136 ms
|
…he same) and a quick check to match the next expected field, instead of searching the hash table.
run buildall |
TeamCity be ut coverage result: |
TPC-DS: Total hot run time: 186465 ms
|
run buildall |
clang-tidy review says "All clean, LGTM! 👍" |
TeamCity be ut coverage result: |
PR approved by at least one committer and no changes requested. |
…che#33890) 1. remove phmap for padding rows 2. add SimpleFieldVisitorToScarlarType for short circuit type deducing 3. correct type coercion for conflict types bettween integers 4. improve nullable column performance 5. remove shared_ptr dependancy for DataType use TypeIndex instead 6. Optimization by caching the order of fields (which is almost always the same) and a quick check to match the next expected field, instead of searching the hash table. benchmark: In clickbench data, load performance: 12m36.799s ->7m10.934s about 43% latency reduce In variant_p2/performance.groovy: 3min44s20 -> 1min15s80 about 66% latency reducy
) 1. remove phmap for padding rows 2. add SimpleFieldVisitorToScarlarType for short circuit type deducing 3. correct type coercion for conflict types bettween integers 4. improve nullable column performance 5. remove shared_ptr dependancy for DataType use TypeIndex instead 6. Optimization by caching the order of fields (which is almost always the same) and a quick check to match the next expected field, instead of searching the hash table. benchmark: In clickbench data, load performance: 12m36.799s ->7m10.934s about 43% latency reduce In variant_p2/performance.groovy: 3min44s20 -> 1min15s80 about 66% latency reducy
SimpleFieldVisitorToScarlarType
for short circuit type deducingand a quick check to match the next expected field, instead of searching the hash table.
In clickbench data, load performance:
12m36.799s ->7m10.934s about 43% latency reduce
In variant_p2/performance.groovy:
3min44s20 -> 1min15s80 about 66% latency reducy
Proposed changes
Issue Number: close #xxx
Further comments
If this is a relatively large or complex change, kick off the discussion at [email protected] by explaining why you chose the solution you did and what alternatives you considered, etc...