|
35 | 35 | #include <Storages/MarkCache.h> |
36 | 36 | #include <Storages/MergeTree/MergeList.h> |
37 | 37 | #include <Storages/MergeTree/MovesList.h> |
| 38 | +#include <Storages/MergeTree/ExportList.h> |
38 | 39 | #include <Storages/MergeTree/ReplicatedFetchList.h> |
39 | 40 | #include <Storages/MergeTree/MergeTreeData.h> |
40 | 41 | #include <Storages/MergeTree/MergeTreeSettings.h> |
@@ -157,6 +158,8 @@ namespace ProfileEvents |
157 | 158 | extern const Event BackupThrottlerSleepMicroseconds; |
158 | 159 | extern const Event MergesThrottlerBytes; |
159 | 160 | extern const Event MergesThrottlerSleepMicroseconds; |
| 161 | + extern const Event ExportsThrottlerBytes; |
| 162 | + extern const Event ExportsThrottlerSleepMicroseconds; |
160 | 163 | extern const Event MutationsThrottlerBytes; |
161 | 164 | extern const Event MutationsThrottlerSleepMicroseconds; |
162 | 165 | extern const Event QueryLocalReadThrottlerBytes; |
@@ -325,6 +328,7 @@ namespace ServerSetting |
325 | 328 | extern const ServerSettingsUInt64 max_local_write_bandwidth_for_server; |
326 | 329 | extern const ServerSettingsUInt64 max_merges_bandwidth_for_server; |
327 | 330 | extern const ServerSettingsUInt64 max_mutations_bandwidth_for_server; |
| 331 | + extern const ServerSettingsUInt64 max_exports_bandwidth_for_server; |
328 | 332 | extern const ServerSettingsUInt64 max_remote_read_network_bandwidth_for_server; |
329 | 333 | extern const ServerSettingsUInt64 max_remote_write_network_bandwidth_for_server; |
330 | 334 | extern const ServerSettingsUInt64 max_replicated_fetches_network_bandwidth_for_server; |
@@ -504,6 +508,7 @@ struct ContextSharedPart : boost::noncopyable |
504 | 508 | GlobalOvercommitTracker global_overcommit_tracker; |
505 | 509 | MergeList merge_list; /// The list of executable merge (for (Replicated)?MergeTree) |
506 | 510 | MovesList moves_list; /// The list of executing moves (for (Replicated)?MergeTree) |
| 511 | + ExportsList exports_list; /// The list of executing exports (for (Replicated)?MergeTree) |
507 | 512 | ReplicatedFetchList replicated_fetch_list; |
508 | 513 | RefreshSet refresh_set; /// The list of active refreshes (for MaterializedView) |
509 | 514 | ConfigurationPtr users_config TSA_GUARDED_BY(mutex); /// Config with the users, profiles and quotas sections. |
@@ -545,6 +550,8 @@ struct ContextSharedPart : boost::noncopyable |
545 | 550 | mutable ThrottlerPtr mutations_throttler; /// A server-wide throttler for mutations |
546 | 551 | mutable ThrottlerPtr merges_throttler; /// A server-wide throttler for merges |
547 | 552 |
|
| 553 | + mutable ThrottlerPtr exports_throttler; /// A server-wide throttler for exports |
| 554 | + |
548 | 555 | MultiVersion<Macros> macros; /// Substitutions extracted from config. |
549 | 556 | std::unique_ptr<DDLWorker> ddl_worker TSA_GUARDED_BY(mutex); /// Process ddl commands from zk. |
550 | 557 | LoadTaskPtr ddl_worker_startup_task; /// To postpone `ddl_worker->startup()` after all tables startup |
@@ -1055,6 +1062,9 @@ struct ContextSharedPart : boost::noncopyable |
1055 | 1062 |
|
1056 | 1063 | if (auto bandwidth = server_settings[ServerSetting::max_merges_bandwidth_for_server]) |
1057 | 1064 | merges_throttler = std::make_shared<Throttler>(bandwidth, ProfileEvents::MergesThrottlerBytes, ProfileEvents::MergesThrottlerSleepMicroseconds); |
| 1065 | + |
| 1066 | + if (auto bandwidth = server_settings[ServerSetting::max_exports_bandwidth_for_server]) |
| 1067 | + exports_throttler = std::make_shared<Throttler>(bandwidth, ProfileEvents::ExportsThrottlerBytes, ProfileEvents::ExportsThrottlerSleepMicroseconds); |
1058 | 1068 | } |
1059 | 1069 | }; |
1060 | 1070 |
|
@@ -1212,6 +1222,8 @@ MergeList & Context::getMergeList() { return shared->merge_list; } |
1212 | 1222 | const MergeList & Context::getMergeList() const { return shared->merge_list; } |
1213 | 1223 | MovesList & Context::getMovesList() { return shared->moves_list; } |
1214 | 1224 | const MovesList & Context::getMovesList() const { return shared->moves_list; } |
| 1225 | +ExportsList & Context::getExportsList() { return shared->exports_list; } |
| 1226 | +const ExportsList & Context::getExportsList() const { return shared->exports_list; } |
1215 | 1227 | ReplicatedFetchList & Context::getReplicatedFetchList() { return shared->replicated_fetch_list; } |
1216 | 1228 | const ReplicatedFetchList & Context::getReplicatedFetchList() const { return shared->replicated_fetch_list; } |
1217 | 1229 | RefreshSet & Context::getRefreshSet() { return shared->refresh_set; } |
@@ -4155,6 +4167,11 @@ ThrottlerPtr Context::getMergesThrottler() const |
4155 | 4167 | return shared->merges_throttler; |
4156 | 4168 | } |
4157 | 4169 |
|
| 4170 | +ThrottlerPtr Context::getExportsThrottler() const |
| 4171 | +{ |
| 4172 | + return shared->exports_throttler; |
| 4173 | +} |
| 4174 | + |
4158 | 4175 | void Context::reloadRemoteThrottlerConfig(size_t read_bandwidth, size_t write_bandwidth) const |
4159 | 4176 | { |
4160 | 4177 | if (read_bandwidth) |
|
0 commit comments