-
Notifications
You must be signed in to change notification settings - Fork 3.3k
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
[enhancement](nereids) improve lots of values in insert into values
statement
#40202
Conversation
Thank you for your contribution to Apache Doris. Since 2024-03-18, the Document has been moved to doris-website. |
run buildall |
TPC-H: Total hot run time: 38038 ms
|
TPC-DS: Total hot run time: 192483 ms
|
ClickBench: Total hot run time: 31.62 s
|
c221b92
to
1b6854e
Compare
run buildall |
5 similar comments
run buildall |
run buildall |
run buildall |
run buildall |
run buildall |
2a30e59
to
4fe7f08
Compare
run buildall |
3 similar comments
run buildall |
run buildall |
run buildall |
61d85d6
to
5c8f0a7
Compare
run buildall |
7 similar comments
run buildall |
run buildall |
run buildall |
run buildall |
run buildall |
run buildall |
run buildall |
13e1f0f
to
bee14a8
Compare
run buildall |
1 similar comment
run buildall |
0436c7f
to
61d54ab
Compare
run buildall |
TeamCity be ut coverage result: |
TPC-H: Total hot run time: 39636 ms
|
TPC-DS: Total hot run time: 197168 ms
|
ClickBench: Total hot run time: 32.48 s
|
TeamCity be ut coverage result: |
PR approved by at least one committer and no changes requested. |
Proposed changes
improve lots of values in
insert into values
statement by bypass NereidsPlannerthe main logic is
InsertUtils.normalizePlan
useFoldConstantRuleOnFE
to reduce the expression, e.g.values(date(now())
FastInsertIntoValuesPlanner
skip most of rules to analyze and rewriteLogicalInlineTable
toLogicalUnion
orLogicalOneRowRelation
set enable_fast_analyze_into_values=false
can force to execute all optimize rules, when we meet some bugs inFastInsertIntoValuesPlanner
test: insert 1000 rows with 1000 columns, the columns contains int, bigint, decimal(26,7), date, datetime, varchar(10 chinese chars)
If you use FastInsertIntoValuesPlanner with group commit in a transaction, the time can reduce to 12s.
TODO: build a custom lexer. in my hand write lexer test, FastInsertIntoValuesPlanner without group commit can reduce 16s to 12s, but it will take more effort: RegularExpression -> NFA -> DFA -> minimal DFA -> Lexer codegen