Clickhouse-benchmark added query parameter

This commit is contained in:
Maksim Kita 2020-12-06 11:53:02 +03:00
parent 67c82eb61b
commit 97cfaea182
2 changed files with 28 additions and 13 deletions

View File

@ -9,6 +9,12 @@ Connects to a ClickHouse server and repeatedly sends specified queries.
Syntax: Syntax:
``` bash
$ clickhouse-benchmark --query ["single query"] [keys]
```
or
``` bash ``` bash
$ echo "single query" | clickhouse-benchmark [keys] $ echo "single query" | clickhouse-benchmark [keys]
``` ```
@ -34,6 +40,7 @@ clickhouse-benchmark [keys] < queries_file
## Keys {#clickhouse-benchmark-keys} ## Keys {#clickhouse-benchmark-keys}
- `--query=WORD` - Query to execute. If this parameter is not passed clickhouse-benchmark will read queries from standard input.
- `-c N`, `--concurrency=N` — Number of queries that `clickhouse-benchmark` sends simultaneously. Default value: 1. - `-c N`, `--concurrency=N` — Number of queries that `clickhouse-benchmark` sends simultaneously. Default value: 1.
- `-d N`, `--delay=N` — Interval in seconds between intermediate reports (set 0 to disable reports). Default value: 1. - `-d N`, `--delay=N` — Interval in seconds between intermediate reports (set 0 to disable reports). Default value: 1.
- `-h WORD`, `--host=WORD` — Server host. Default value: `localhost`. For the [comparison mode](#clickhouse-benchmark-comparison-mode) you can use multiple `-h` keys. - `-h WORD`, `--host=WORD` — Server host. Default value: `localhost`. For the [comparison mode](#clickhouse-benchmark-comparison-mode) you can use multiple `-h` keys.

View File

@ -60,13 +60,13 @@ public:
const String & user_, const String & password_, const String & stage, const String & user_, const String & password_, const String & stage,
bool randomize_, size_t max_iterations_, double max_time_, bool randomize_, size_t max_iterations_, double max_time_,
const String & json_path_, size_t confidence_, const String & json_path_, size_t confidence_,
const String & query_id_, bool continue_on_errors_, const String & query_id_, const String & query_to_execute_, bool continue_on_errors_,
bool print_stacktrace_, const Settings & settings_) bool print_stacktrace_, const Settings & settings_)
: :
concurrency(concurrency_), delay(delay_), queue(concurrency), randomize(randomize_), concurrency(concurrency_), delay(delay_), queue(concurrency), randomize(randomize_),
cumulative(cumulative_), max_iterations(max_iterations_), max_time(max_time_), cumulative(cumulative_), max_iterations(max_iterations_), max_time(max_time_),
json_path(json_path_), confidence(confidence_), query_id(query_id_), json_path(json_path_), confidence(confidence_), query_id(query_id_),
continue_on_errors(continue_on_errors_), query_to_execute(query_to_execute_), continue_on_errors(continue_on_errors_),
print_stacktrace(print_stacktrace_), settings(settings_), print_stacktrace(print_stacktrace_), settings(settings_),
shared_context(Context::createShared()), global_context(Context::createGlobal(shared_context.get())), shared_context(Context::createShared()), global_context(Context::createGlobal(shared_context.get())),
pool(concurrency) pool(concurrency)
@ -150,7 +150,8 @@ private:
double max_time; double max_time;
String json_path; String json_path;
size_t confidence; size_t confidence;
std::string query_id; String query_id;
String query_to_execute;
bool continue_on_errors; bool continue_on_errors;
bool print_stacktrace; bool print_stacktrace;
const Settings & settings; const Settings & settings;
@ -213,20 +214,25 @@ private:
void readQueries() void readQueries()
{ {
ReadBufferFromFileDescriptor in(STDIN_FILENO); if (query_to_execute.empty()) {
ReadBufferFromFileDescriptor in(STDIN_FILENO);
while (!in.eof()) while (!in.eof())
{ {
std::string query; String query;
readText(query, in); readText(query, in);
assertChar('\n', in); assertChar('\n', in);
if (!query.empty()) if (!query.empty())
queries.emplace_back(query); queries.emplace_back(std::move(query));
}
if (queries.empty())
throw Exception("Empty list of queries.", ErrorCodes::EMPTY_DATA_PASSED);
} else {
queries.emplace_back(query_to_execute);
} }
if (queries.empty())
throw Exception("Empty list of queries.", ErrorCodes::EMPTY_DATA_PASSED);
std::cerr << "Loaded " << queries.size() << " queries.\n"; std::cerr << "Loaded " << queries.size() << " queries.\n";
} }
@ -559,6 +565,7 @@ int mainEntryClickHouseBenchmark(int argc, char ** argv)
boost::program_options::options_description desc = createOptionsDescription("Allowed options", getTerminalWidth()); boost::program_options::options_description desc = createOptionsDescription("Allowed options", getTerminalWidth());
desc.add_options() desc.add_options()
("help", "produce help message") ("help", "produce help message")
("query", value<std::string>()->default_value(""), "query to execute")
("concurrency,c", value<unsigned>()->default_value(1), "number of parallel queries") ("concurrency,c", value<unsigned>()->default_value(1), "number of parallel queries")
("delay,d", value<double>()->default_value(1), "delay between intermediate reports in seconds (set 0 to disable reports)") ("delay,d", value<double>()->default_value(1), "delay between intermediate reports in seconds (set 0 to disable reports)")
("stage", value<std::string>()->default_value("complete"), "request query processing up to specified stage: complete,fetch_columns,with_mergeable_state,with_mergeable_state_after_aggregation") ("stage", value<std::string>()->default_value("complete"), "request query processing up to specified stage: complete,fetch_columns,with_mergeable_state,with_mergeable_state_after_aggregation")
@ -625,6 +632,7 @@ int mainEntryClickHouseBenchmark(int argc, char ** argv)
options["json"].as<std::string>(), options["json"].as<std::string>(),
options["confidence"].as<size_t>(), options["confidence"].as<size_t>(),
options["query_id"].as<std::string>(), options["query_id"].as<std::string>(),
options["query"].as<std::string>(),
options.count("continue_on_errors") > 0, options.count("continue_on_errors") > 0,
print_stacktrace, print_stacktrace,
settings); settings);