Moved process_list_element into if. Made more code cleanup.

This commit is contained in:
Roman Vasin 2022-05-17 11:10:06 +03:00
parent 7cc63f3eed
commit 4a6f398fed
5 changed files with 20 additions and 18 deletions

View File

@ -314,8 +314,8 @@ protected:
Container processes;
size_t max_size = 0; /// 0 means no limit. Otherwise, when limit exceeded, an exception is thrown.
/// The total maximum number of threads for all requests.
size_t total_max_threads = 0; /// 0 means no limit.
/// The total maximum number of threads for all queries.
size_t total_max_threads = 0; /// 0 means no limit. Otherwise, concurrency of query is determinated based on this parameter.
/// Stores per-user info: queries, statistics and limits
UserToQueries user_to_queries;

View File

@ -16,6 +16,7 @@
#include <Interpreters/Context.h>
#include <Interpreters/ExpressionActions.h>
#include <Interpreters/IJoin.h>
#include <Interpreters/ProcessList.h>
#include <Common/typeid_cast.h>
#include <Common/CurrentThread.h>
#include <Processors/DelayedPortsProcessor.h>
@ -505,13 +506,15 @@ size_t QueryPipelineBuilder::getNumThreads() const
if (max_threads) //-V1051
num_threads = std::min(num_threads, max_threads);
auto total_max_threads = process_list_element->getContext()->getProcessList().getTotalMaxThreads();
if (total_max_threads && process_list_element) {
size_t current_total_num_threads = process_list_element->getContext()->getProcessList().getTotalNumThreads();
size_t total_available_threads = 0;
if (total_max_threads > current_total_num_threads)
total_available_threads = total_max_threads - current_total_num_threads;
num_threads = std::min(num_threads, total_available_threads);
if (process_list_element) {
auto total_max_threads = process_list_element->getContext()->getProcessList().getTotalMaxThreads();
if (total_max_threads) {
size_t current_total_num_threads = process_list_element->getContext()->getProcessList().getTotalNumThreads();
size_t total_available_threads = 0;
if (total_max_threads > current_total_num_threads)
total_available_threads = total_max_threads - current_total_num_threads;
num_threads = std::min(num_threads, total_available_threads);
}
}
num_threads = std::max<size_t>(1, num_threads);

View File

@ -6,7 +6,6 @@
#include <Storages/IStorage_fwd.h>
#include <Storages/TableLockHolder.h>
#include <Interpreters/Context_fwd.h>
#include <Interpreters/ProcessList.h>
namespace DB

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<clickhouse>
<query_log>
<database>system</database>
<table>query_log</table>
</query_log>
<query_log>
<database>system</database>
<table>query_log</table>
</query_log>
</clickhouse>

View File

@ -1,8 +1,8 @@
<?xml version="1.0"?>
<clickhouse>
<total_max_threads>50</total_max_threads>
<query_log>
<database>system</database>
<table>query_log</table>
</query_log>
<query_log>
<database>system</database>
<table>query_log</table>
</query_log>
</clickhouse>