Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
1f69a7a0
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,发现更多精彩内容 >>
提交
1f69a7a0
编写于
12月 12, 2019
作者:
A
Alexander Burmak
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixed merge issues
上级
c514ec32
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
19 addition
and
20 deletion
+19
-20
dbms/src/Storages/MergeTree/MergeTreeData.cpp
dbms/src/Storages/MergeTree/MergeTreeData.cpp
+11
-11
dbms/src/Storages/MergeTree/MergeTreeData.h
dbms/src/Storages/MergeTree/MergeTreeData.h
+6
-7
dbms/src/Storages/MergeTree/MergeTreeDataWriter.cpp
dbms/src/Storages/MergeTree/MergeTreeDataWriter.cpp
+1
-1
dbms/src/Storages/MergeTree/MergeTreePartsMover.cpp
dbms/src/Storages/MergeTree/MergeTreePartsMover.cpp
+1
-1
未找到文件。
dbms/src/Storages/MergeTree/MergeTreeData.cpp
浏览文件 @
1f69a7a0
...
...
@@ -3124,7 +3124,7 @@ MergeTreeData::MutableDataPartsVector MergeTreeData::tryLoadPartsToAttach(const
namespace
{
inline
DiskSpace
::
ReservationPtr
checkAndReturnReservation
(
UInt64
expected_size
,
ReservationPtr
reservation
)
inline
ReservationPtr
checkAndReturnReservation
(
UInt64
expected_size
,
ReservationPtr
reservation
)
{
if
(
reservation
)
return
reservation
;
...
...
@@ -3135,7 +3135,7 @@ inline DiskSpace::ReservationPtr checkAndReturnReservation(UInt64 expected_size,
}
DiskSpace
::
ReservationPtr
MergeTreeData
::
reserveSpace
(
UInt64
expected_size
)
const
ReservationPtr
MergeTreeData
::
reserveSpace
(
UInt64
expected_size
)
const
{
expected_size
=
std
::
max
(
RESERVATION_MIN_ESTIMATION_SIZE
,
expected_size
);
...
...
@@ -3144,7 +3144,7 @@ DiskSpace::ReservationPtr MergeTreeData::reserveSpace(UInt64 expected_size) cons
return
checkAndReturnReservation
(
expected_size
,
std
::
move
(
reservation
));
}
DiskSpace
::
ReservationPtr
MergeTreeData
::
reserveSpace
(
UInt64
expected_size
,
DiskSpace
::
SpacePtr
space
)
const
ReservationPtr
MergeTreeData
::
reserveSpace
(
UInt64
expected_size
,
SpacePtr
space
)
const
{
expected_size
=
std
::
max
(
RESERVATION_MIN_ESTIMATION_SIZE
,
expected_size
);
...
...
@@ -3153,36 +3153,36 @@ DiskSpace::ReservationPtr MergeTreeData::reserveSpace(UInt64 expected_size, Disk
return
checkAndReturnReservation
(
expected_size
,
std
::
move
(
reservation
));
}
DiskSpace
::
ReservationPtr
MergeTreeData
::
tryReserveSpace
(
UInt64
expected_size
,
DiskSpace
::
SpacePtr
space
)
const
ReservationPtr
MergeTreeData
::
tryReserveSpace
(
UInt64
expected_size
,
SpacePtr
space
)
const
{
expected_size
=
std
::
max
(
RESERVATION_MIN_ESTIMATION_SIZE
,
expected_size
);
return
space
->
reserve
(
expected_size
);
}
DiskSpace
::
ReservationPtr
MergeTreeData
::
reserveSpacePreferringTTLRules
(
UInt64
expected_size
,
ReservationPtr
MergeTreeData
::
reserveSpacePreferringTTLRules
(
UInt64
expected_size
,
const
MergeTreeDataPart
::
TTLInfos
&
ttl_infos
,
time_t
time_of_move
)
const
{
expected_size
=
std
::
max
(
RESERVATION_MIN_ESTIMATION_SIZE
,
expected_size
);
DiskSpace
::
ReservationPtr
reservation
=
tryReserveSpacePreferringTTLRules
(
expected_size
,
ttl_infos
,
time_of_move
);
ReservationPtr
reservation
=
tryReserveSpacePreferringTTLRules
(
expected_size
,
ttl_infos
,
time_of_move
);
return
checkAndReturnReservation
(
expected_size
,
std
::
move
(
reservation
));
}
DiskSpace
::
ReservationPtr
MergeTreeData
::
tryReserveSpacePreferringTTLRules
(
UInt64
expected_size
,
ReservationPtr
MergeTreeData
::
tryReserveSpacePreferringTTLRules
(
UInt64
expected_size
,
const
MergeTreeDataPart
::
TTLInfos
&
ttl_infos
,
time_t
time_of_move
)
const
{
expected_size
=
std
::
max
(
RESERVATION_MIN_ESTIMATION_SIZE
,
expected_size
);
DiskSpace
::
ReservationPtr
reservation
;
ReservationPtr
reservation
;
auto
ttl_entry
=
selectTTLEntryForTTLInfos
(
ttl_infos
,
time_of_move
);
if
(
ttl_entry
!=
nullptr
)
{
DiskSpace
::
SpacePtr
destination_ptr
=
ttl_entry
->
getDestination
(
storage_policy
);
SpacePtr
destination_ptr
=
ttl_entry
->
getDestination
(
storage_policy
);
if
(
!
destination_ptr
)
{
if
(
ttl_entry
->
destination_type
==
PartDestinationType
::
VOLUME
)
...
...
@@ -3207,7 +3207,7 @@ DiskSpace::ReservationPtr MergeTreeData::tryReserveSpacePreferringTTLRules(UInt6
return
reservation
;
}
DiskSpace
::
SpacePtr
MergeTreeData
::
TTLEntry
::
getDestination
(
const
DiskSpace
::
StoragePolicyPtr
&
policy
)
const
SpacePtr
MergeTreeData
::
TTLEntry
::
getDestination
(
const
StoragePolicyPtr
&
policy
)
const
{
if
(
destination_type
==
PartDestinationType
::
VOLUME
)
return
policy
->
getVolumeByName
(
destination_name
);
...
...
@@ -3217,7 +3217,7 @@ DiskSpace::SpacePtr MergeTreeData::TTLEntry::getDestination(const DiskSpace::Sto
return
{};
}
bool
MergeTreeData
::
TTLEntry
::
isPartInDestination
(
const
DiskSpace
::
StoragePolicyPtr
&
policy
,
const
MergeTreeDataPart
&
part
)
const
bool
MergeTreeData
::
TTLEntry
::
isPartInDestination
(
const
StoragePolicyPtr
&
policy
,
const
MergeTreeDataPart
&
part
)
const
{
if
(
destination_type
==
PartDestinationType
::
VOLUME
)
{
...
...
dbms/src/Storages/MergeTree/MergeTreeData.h
浏览文件 @
1f69a7a0
#pragma once
#include <Common/SimpleIncrement.h>
#include <Common/DiskSpaceMonitor.h>
#include <Interpreters/Context.h>
#include <Interpreters/ExpressionActions.h>
#include <Storages/IStorage.h>
...
...
@@ -679,14 +678,14 @@ public:
ReservationPtr
reserveSpace
(
UInt64
expected_size
)
const
;
/// Reserves space at least 1MB on specific disk or volume.
DiskSpace
::
ReservationPtr
reserveSpace
(
UInt64
expected_size
,
DiskSpace
::
SpacePtr
space
)
const
;
DiskSpace
::
ReservationPtr
tryReserveSpace
(
UInt64
expected_size
,
DiskSpace
::
SpacePtr
space
)
const
;
ReservationPtr
reserveSpace
(
UInt64
expected_size
,
SpacePtr
space
)
const
;
ReservationPtr
tryReserveSpace
(
UInt64
expected_size
,
SpacePtr
space
)
const
;
/// Reserves space at least 1MB preferring best destination according to `ttl_infos`.
DiskSpace
::
ReservationPtr
reserveSpacePreferringTTLRules
(
UInt64
expected_size
,
ReservationPtr
reserveSpacePreferringTTLRules
(
UInt64
expected_size
,
const
MergeTreeDataPart
::
TTLInfos
&
ttl_infos
,
time_t
time_of_move
)
const
;
DiskSpace
::
ReservationPtr
tryReserveSpacePreferringTTLRules
(
UInt64
expected_size
,
ReservationPtr
tryReserveSpacePreferringTTLRules
(
UInt64
expected_size
,
const
MergeTreeDataPart
::
TTLInfos
&
ttl_infos
,
time_t
time_of_move
)
const
;
/// Choose disk with max available free space
...
...
@@ -740,10 +739,10 @@ public:
ASTPtr
entry_ast
;
/// Returns destination disk or volume for this rule.
DiskSpace
::
SpacePtr
getDestination
(
const
DiskSpace
::
StoragePolicyPtr
&
policy
)
const
;
SpacePtr
getDestination
(
const
StoragePolicyPtr
&
policy
)
const
;
/// Checks if given part already belongs destination disk or volume for this rule.
bool
isPartInDestination
(
const
DiskSpace
::
StoragePolicyPtr
&
policy
,
const
MergeTreeDataPart
&
part
)
const
;
bool
isPartInDestination
(
const
StoragePolicyPtr
&
policy
,
const
MergeTreeDataPart
&
part
)
const
;
};
const
TTLEntry
*
selectTTLEntryForTTLInfos
(
const
MergeTreeDataPart
::
TTLInfos
&
ttl_infos
,
time_t
time_of_move
)
const
;
...
...
dbms/src/Storages/MergeTree/MergeTreeDataWriter.cpp
浏览文件 @
1f69a7a0
...
...
@@ -228,7 +228,7 @@ MergeTreeData::MutableDataPartPtr MergeTreeDataWriter::writeTempPart(BlockWithPa
for
(
const
auto
&
ttl_entry
:
data
.
move_ttl_entries
)
updateTTL
(
ttl_entry
,
move_ttl_infos
,
move_ttl_infos
.
moves_ttl
[
ttl_entry
.
result_column
],
block
,
false
);
DiskSpace
::
ReservationPtr
reservation
=
data
.
reserveSpacePreferringTTLRules
(
expected_size
,
move_ttl_infos
,
time
(
nullptr
));
ReservationPtr
reservation
=
data
.
reserveSpacePreferringTTLRules
(
expected_size
,
move_ttl_infos
,
time
(
nullptr
));
MergeTreeData
::
MutableDataPartPtr
new_data_part
=
std
::
make_shared
<
MergeTreeData
::
DataPart
>
(
data
,
reservation
->
getDisk
(),
part_name
,
new_part_info
);
...
...
dbms/src/Storages/MergeTree/MergeTreePartsMover.cpp
浏览文件 @
1f69a7a0
...
...
@@ -125,7 +125,7 @@ bool MergeTreePartsMover::selectPartsForMove(
const
MergeTreeData
::
TTLEntry
*
ttl_entry_ptr
=
part
->
storage
.
selectTTLEntryForTTLInfos
(
part
->
ttl_infos
,
time_of_move
);
auto
to_insert
=
need_to_move
.
find
(
part
->
disk
);
DiskSpace
::
ReservationPtr
reservation
;
ReservationPtr
reservation
;
if
(
ttl_entry_ptr
)
{
auto
destination
=
ttl_entry_ptr
->
getDestination
(
policy
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录