Help Center/ TaurusDB/ API Reference/ APIs (Recommended)/ Log Management/ Querying Slow Query Log Statistics
Updated on 2024-12-30 GMT+08:00

Querying Slow Query Log Statistics

Function

This API is used to query slow query log statistics. Before calling this API:

URI

POST /v3/{project_id}/instances/{instance_id}/slow-logs/statistics

Table 1 URI parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID of a tenant in a region.

To obtain this value, see Obtaining a Project ID.

instance_id

Yes

String

Instance ID, which is compliant with the UUID format.

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

User token.

It can be obtained by calling the IAM API used to obtain a user token.

The value of X-Subject-Token in the response header is the token value.

X-Language

No

String

Request language type. The default value is en-us.

Values:

  • en-us
  • zh-cn
Table 3 Request body parameters

Parameter

Mandatory

Type

Description

limit

No

Integer

Number of records (query results) displayed on each page. The number ranges from 1 to 100. The default value is 10.

offset

No

Integer

Index offset. The default value is 0, indicating that the query starts from the first piece of data.

node_id

Yes

String

Node ID.

type

No

String

Statement type. If this parameter is left empty, all statement types are queried.

Enumerated values:

  • INSERT
  • UPDATE
  • SELECT
  • DELETE
  • CREATE
  • ALL

database

No

String

Database name. It cannot contain special characters such as < > &.

start_time

Yes

String

Start time in the yyyy-mm-ddThh:mm:ssZ format.

T is the separator between the calendar and the hourly notation of time. Z indicates the time zone offset. For example, in the Beijing time zone, the offset is +0800.

end_time

Yes

String

End time in the "yyyy-mm-ddThh:mm:ssZ" format.

T is the separator between the calendar and the hourly notation of time. Z indicates the time zone offset. For example, in the Beijing time zone, the offset is +0800. Only slow query logs generated within the past month can be queried.

sort

No

String

Sorting field.

  • executeTime: indicates sorting slow query logs by average execution time in descending order.
  • If this parameter is left empty or set to other values, the slow query logs are sorted by executions in descending order.

order

No

String

Sorting sequence. The default value is desc.

Enumerated values:

  • desc
  • asc

Response Parameters

Status code: 200

Table 4 Response body parameters

Parameter

Type

Description

slow_log_list

Array of ShowSlowLogStatisticsItem objects

List of slow query log statistics.

total_count

Integer

Total records.

Table 5 ShowSlowLogStatisticsItem

Parameter

Type

Description

client_ip

String

IP address.

count

String

Number of executions.

database

String

Database that slow query logs belong to.

lock_time

String

Average lock wait time.

node_id

String

Node ID.

query_sample

String

Execution syntax.

rows_examined

Integer

Average number of scanned rows.

rows_sent

Integer

Average number of rows contained in a result.

time

String

Average execution duration.

type

String

Statement type.

users

String

Account.

Status code: 400

Table 6 Response body parameters

Parameter

Type

Description

error_code

String

Error code.

error_msg

String

Error message.

Status code: 500

Table 7 Response body parameters

Parameter

Type

Description

error_code

String

Error code.

error_msg

String

Error message.

Example Request

Querying slow query log statistics

POST https://{endpoint}/v3/054e292c9880d4992f02c0196d3ea468/instances/6754902da1f447269c6979b0590102a5in07/slow-logs/statistics

{
  "limit" : 10,
  "offset" : 0,
  "node_id" : "4006312b96c541749d735c20e86dd169no07",
  "type" : null,
  "database" : null,
  "start_time" : "2024-08-16T14:37:00+0800",
  "end_time" : "2024-08-16T16:51:22+0800",
  "sort" : null,
  "order" : "desc"
}

Example Response

Status code: 200

Success.

{
  "slow_log_list" : [ {
    "node_id" : "4006312b96c541749d735c20e86dd169no07",
    "count" : "1 (100.00%)",
    "time" : "11.00014 s",
    "lock_time" : "0.00000 s",
    "rows_sent" : 1,
    "rows_examined" : 1,
    "database" : "",
    "users" : "root",
    "query_sample" : "select sleep(N);",
    "client_ip" : "localhost",
    "type" : "SELECT"
  } ],
  "total_count" : 1
}

Example SDK Code

The example SDK code is as follows.

Java

Querying slow query log statistics

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.gaussdb.v3.region.GaussDBRegion;
import com.huaweicloud.sdk.gaussdb.v3.*;
import com.huaweicloud.sdk.gaussdb.v3.model.*;


public class ShowSlowLogStatisticsSolution {

    public static void main(String[] args) {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        String ak = System.getenv("CLOUD_SDK_AK");
        String sk = System.getenv("CLOUD_SDK_SK");
        String projectId = "{project_id}";

        ICredential auth = new BasicCredentials()
                .withProjectId(projectId)
                .withAk(ak)
                .withSk(sk);

        GaussDBClient client = GaussDBClient.newBuilder()
                .withCredential(auth)
                .withRegion(GaussDBRegion.valueOf("<YOUR REGION>"))
                .build();
        ShowSlowLogStatisticsRequest request = new ShowSlowLogStatisticsRequest();
        request.withInstanceId("{instance_id}");
        ShowSlowLogStatisticsRequestBody body = new ShowSlowLogStatisticsRequestBody();
        body.withOrder("desc");
        body.withEndTime("2024-08-16T16:51:22+0800");
        body.withStartTime("2024-08-16T14:37:00+0800");
        body.withNodeId("4006312b96c541749d735c20e86dd169no07");
        body.withOffset(0);
        body.withLimit(10);
        request.withBody(body);
        try {
            ShowSlowLogStatisticsResponse response = client.showSlowLogStatistics(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}

Python

Querying slow query log statistics

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkgaussdb.v3.region.gaussdb_region import GaussDBRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkgaussdb.v3 import *

if __name__ == "__main__":
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = os.environ["CLOUD_SDK_AK"]
    sk = os.environ["CLOUD_SDK_SK"]
    projectId = "{project_id}"

    credentials = BasicCredentials(ak, sk, projectId)

    client = GaussDBClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(GaussDBRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = ShowSlowLogStatisticsRequest()
        request.instance_id = "{instance_id}"
        request.body = ShowSlowLogStatisticsRequestBody(
            order="desc",
            end_time="2024-08-16T16:51:22+0800",
            start_time="2024-08-16T14:37:00+0800",
            node_id="4006312b96c541749d735c20e86dd169no07",
            offset=0,
            limit=10
        )
        response = client.show_slow_log_statistics(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

Go

Querying slow query log statistics

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    gaussdb "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/gaussdb/v3"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/gaussdb/v3/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/gaussdb/v3/region"
)

func main() {
    // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak := os.Getenv("CLOUD_SDK_AK")
    sk := os.Getenv("CLOUD_SDK_SK")
    projectId := "{project_id}"

    auth := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        WithProjectId(projectId).
        Build()

    client := gaussdb.NewGaussDBClient(
        gaussdb.GaussDBClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.ShowSlowLogStatisticsRequest{}
	request.InstanceId = "{instance_id}"
	orderShowSlowLogStatisticsRequestBody:= "desc"
	offsetShowSlowLogStatisticsRequestBody:= int32(0)
	limitShowSlowLogStatisticsRequestBody:= int32(10)
	request.Body = &model.ShowSlowLogStatisticsRequestBody{
		Order: &orderShowSlowLogStatisticsRequestBody,
		EndTime: "2024-08-16T16:51:22+0800",
		StartTime: "2024-08-16T14:37:00+0800",
		NodeId: "4006312b96c541749d735c20e86dd169no07",
		Offset: &offsetShowSlowLogStatisticsRequestBody,
		Limit: &limitShowSlowLogStatisticsRequestBody,
	}
	response, err := client.ShowSlowLogStatistics(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

More Programming Languages

For SDK code examples in more programming languages, visit API Explorer and click the Sample Code tab. Code examples can be automatically generated.

Status Code

For details, see Status Codes.

Error Code

For details, see Error Codes.