From c1792ef245a67bf94534ec72268cebff392fde4a Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Thu, 21 Jul 2022 18:35:34 +0200 Subject: [PATCH] Examples of configurations to make things easier. --- config_examples/mysql_with_tunnel_config.json | 27 +++++++++++++++++++ .../mysql_without_tunnel_config.json | 22 +++++++++++++++ config_examples/trino_config.json | 22 +++++++++++++++ readme.md | 16 +++++------ 4 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 config_examples/mysql_with_tunnel_config.json create mode 100644 config_examples/mysql_without_tunnel_config.json create mode 100644 config_examples/trino_config.json diff --git a/config_examples/mysql_with_tunnel_config.json b/config_examples/mysql_with_tunnel_config.json new file mode 100644 index 0000000..63fd975 --- /dev/null +++ b/config_examples/mysql_with_tunnel_config.json @@ -0,0 +1,27 @@ +{ + "connection_details": { + "engine": "mysql", + "host": "the-actual-host", + "port": 3306, + "user": "your_user", + "password": "your_password", + "schema": "comprea", + "ssh_tunneling": { + "use_tunnel": true, + "ssh_host": "the_ssh_tunnel_host", + "ssh_username": "the_ssh_tunnel_user", + "ssh_port": 22, + "path_to_key": "G:\\path\\to\\ssh\\key.pem" + } + }, + "queries_to_measure": [ + { + "name": "Fast Smoke Test", + "query_string": "SELECT 1" + }, + { + "name": "Delivered carts on a day", + "query_string": "select * from comprea.cart c where c.status = 'delivered' and c.date_delivered >= UNIX_TIMESTAMP(date('2022-05-24'))" + } + ] +} \ No newline at end of file diff --git a/config_examples/mysql_without_tunnel_config.json b/config_examples/mysql_without_tunnel_config.json new file mode 100644 index 0000000..a849e48 --- /dev/null +++ b/config_examples/mysql_without_tunnel_config.json @@ -0,0 +1,22 @@ +{ + "connection_details": { + "engine": "mysql", + "host": "the-sql-host", + "port": 3306, + "user": "your_user", + "password": "your_password", + "schema": "comprea", + "ssh_tunneling": { + "use_tunnel": false + }, + "queries_to_measure": [ + { + "name": "Fast Smoke Test", + "query_string": "SELECT 1" + }, + { + "name": "Delivered carts on a day", + "query_string": "select * from comprea.cart c where c.status = 'delivered' and c.date_delivered >= UNIX_TIMESTAMP(date('2022-05-24'))" + } + ] +} \ No newline at end of file diff --git a/config_examples/trino_config.json b/config_examples/trino_config.json new file mode 100644 index 0000000..8cd8806 --- /dev/null +++ b/config_examples/trino_config.json @@ -0,0 +1,22 @@ +{ + "connection_details": { + "engine": "trino", + "host": "the_trino_host", + "port": "443", + "user": "your_user", + "password": "your_password", + "http_scheme": "https", + "catalog": "app_lm_mysql", + "schema": "comprea" + }, + "queries_to_measure": [ + { + "name": "Fast Smoke Test", + "query_string": "SELECT * FROM system.runtime.nodes" + }, + { + "name": "Delivered carts on a day", + "query_string": "select * from app_lm_mysql.comprea.cart c where c.status = 'delivered' and c.date_delivered >= to_unixtime(date('2022-05-24'))" + } + ] +} \ No newline at end of file diff --git a/readme.md b/readme.md index 6a6fdfe..68253ee 100644 --- a/readme.md +++ b/readme.md @@ -5,8 +5,8 @@ several queries and measure how long it takes for results to come back to your l ## How to use -1. First, you need to install the package in your Python installation or a virtual environment. If you have our Google -Drive Shared Drive replicated locally, you can do it like this: +1. First, you need to install the package in your Python installation or a virtual environment. If you have our Google + Drive Shared Drive replicated locally, you can do it like this: ```commandline pip install "git+file:///g:\shared drives\data drive\90 useful\trino_query_performance_gauge@master"``` @@ -22,23 +22,23 @@ measure_query_performance --config my_config_file.json ## Composing a config file -You can take a look at the `example-config.json` in this repository. +You can take a look at examples for different setups in `config_examples`. If you want to make a new config file, it +will probably be easier for you to start from one of those templates. A few notes: + - The valid engines are `"trino"` and `"mysql"`. - You can place as many queries as you would like in the `queries_to_measure` list. -- I advice you to make the first query a silly, fast query such as `SELECT 1` to validate your connection and +- I advice you to make the first query a silly, fast query such as `SELECT 1` to validate your connection and quickly confirm that everything is set up properly. - - ## A few more details - Queries are run sequentially, as in the second query will only start after the first query is finished. -- For this to work, your local machine must have access and permission to the connection you are targeting, so +- For this to work, your local machine must have access and permission to the connection you are targeting, so remember to set up VPNs and other necessary configs properly. - A peculiarity: when using MySQL through an SSH tunnel, the port number used by the remote MySQL should be free in your local machine. That means that if the MySQL database is listening on port 3306, your local machine should have port 3306 free before running this. -- Queries in JSON must be stored in a single line. A bit of a headache, I know. JSON limitations. You can use [this +- Queries in JSON must be stored in a single line. A bit of a headache, I know. JSON limitations. You can use [this webpage](https://sqlformatter.org/) to easily jump between prettified and one-line formats for any query.