Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
efa056fc
C
ClickHouse
项目概览
2dot5
/
ClickHouse
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
ClickHouse
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
efa056fc
编写于
11月 05, 2016
作者:
A
Alexey Milovidov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Attempt to improve merge selecting algorithm [#METR-21840].
上级
3d05948c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
18 addition
and
12 deletion
+18
-12
dbms/include/DB/Storages/MergeTree/SimpleMergeSelector.h
dbms/include/DB/Storages/MergeTree/SimpleMergeSelector.h
+6
-3
dbms/src/Storages/MergeTree/SimpleMergeSelector.cpp
dbms/src/Storages/MergeTree/SimpleMergeSelector.cpp
+8
-5
dbms/src/Storages/tests/merge_selector2.cpp
dbms/src/Storages/tests/merge_selector2.cpp
+4
-4
未找到文件。
dbms/include/DB/Storages/MergeTree/SimpleMergeSelector.h
浏览文件 @
efa056fc
...
...
@@ -17,10 +17,13 @@ public:
* This behaviour balances merge-tree workload.
* It called 'base', because merge-tree depth could be estimated as logarithm with that base.
*/
double
base
=
2
;
double
base
=
5
;
time_t
lower_base_after_seconds
=
300
;
size_t
lower_base_after_num_parts
=
20
;
time_t
lower_base_after_seconds_start
=
300
;
time_t
lower_base_after_seconds_end
=
3600
;
size_t
lower_base_after_num_parts_start
=
10
;
size_t
lower_base_after_num_parts_end
=
50
;
/// Zero means unlimited.
size_t
max_parts_to_merge_at_once
=
100
;
...
...
dbms/src/Storages/MergeTree/SimpleMergeSelector.cpp
浏览文件 @
efa056fc
#include <DB/Storages/MergeTree/SimpleMergeSelector.h>
#include <DB/Common/interpolate.h>
#include <cmath>
...
...
@@ -82,11 +83,13 @@ void selectWithinPartition(
if
(
parts_count
<=
1
)
return
;
double
actual_base
=
settings
.
base
;
if
(
parts_count
>
settings
.
lower_base_after_num_parts
||
current_min_part_age
>
settings
.
lower_base_after_seconds
)
actual_base
=
1
;
double
actual_base
=
std
::
max
(
1.0
,
std
::
min
(
settings
.
base
,
std
::
min
(
interpolateLinear
(
settings
.
base
,
1.0
,
(
static_cast
<
double
>
(
parts_count
)
-
settings
.
lower_base_after_num_parts_start
)
/
(
settings
.
lower_base_after_num_parts_end
-
settings
.
lower_base_after_num_parts_start
)),
interpolateLinear
(
settings
.
base
,
1.0
,
(
static_cast
<
double
>
(
current_min_part_age
)
-
settings
.
lower_base_after_seconds_start
)
/
(
settings
.
lower_base_after_seconds_end
-
settings
.
lower_base_after_seconds_start
)))));
for
(
size_t
begin
=
0
;
begin
<
parts_count
;
++
begin
)
{
...
...
dbms/src/Storages/tests/merge_selector2.cpp
浏览文件 @
efa056fc
...
...
@@ -21,13 +21,13 @@ int main(int argc, char ** argv)
IMergeSelector
::
Partitions
partitions
(
1
);
IMergeSelector
::
PartsInPartition
&
parts
=
partitions
.
back
();
/*
SimpleMergeSelector::Settings settings;
SimpleMergeSelector selector(settings);
*/
SimpleMergeSelector
::
Settings
settings
;
SimpleMergeSelector
selector
(
settings
);
LevelMergeSelector
::
Settings
settings
;
/*
LevelMergeSelector::Settings settings;
settings.min_parts_to_merge = 8;
settings.max_parts_to_merge = 16;
LevelMergeSelector
selector
(
settings
);
LevelMergeSelector selector(settings);
*/
ReadBufferFromFileDescriptor
in
(
STDIN_FILENO
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录