Skip to content

Commit

Permalink
Adding SUM_ROWS_DELETED,SUM_ROWS_INSERTED and SUM_ROWS_UPDATED column…
Browse files Browse the repository at this point in the history
…s to events_statements_summary_by_user_by_event_name table.

Summary:
Extended events_statements_summary_by_user_by_event_name table to track deleted rows under the column of SUMS_ROWS_DELETED.
Also added columns to track inserted and deleted rows.

Reviewed By: lloyd

Differential Revision: D16444830 (facebook@8dc6387)

fbshipit-source-id: 7a5de1c8980
  • Loading branch information
bertanari authored and inikep committed Jul 16, 2021
1 parent 6ce8d58 commit 773e21c
Show file tree
Hide file tree
Showing 48 changed files with 955 additions and 39 deletions.
30 changes: 30 additions & 0 deletions include/mysql/components/services/psi_statement_bits.h
Expand Up @@ -162,6 +162,12 @@ struct PSI_statement_locker_state_v1 {
unsigned long long m_rows_sent;
/** Rows examined. */
unsigned long long m_rows_examined;
/** Rows deleted. */
unsigned long long m_rows_deleted;
/** Rows inserted. */
unsigned long long m_rows_inserted;
/** Rows updated. */
unsigned long long m_rows_updated;
/** Metric, temporary tables created on disk. */
unsigned long m_created_tmp_disk_tables;
/** Metric, temporary tables created. */
Expand Down Expand Up @@ -307,6 +313,30 @@ typedef void (*set_statement_rows_sent_t)(struct PSI_statement_locker *locker,
typedef void (*set_statement_rows_examined_t)(
struct PSI_statement_locker *locker, unsigned long long count);

/**
Inc a statement event rows deleted metric.
@param locker the statement locker
@param count the number of rows deleted
*/
typedef void (*inc_statement_rows_deleted_t)(
struct PSI_statement_locker *locker, unsigned long long count);

/**
Inc a statement event rows inserted metric.
@param locker the statement locker
@param count the number of rows inserted
*/
typedef void (*inc_statement_rows_inserted_t)(
struct PSI_statement_locker *locker, unsigned long long count);

/**
Inc a statement event rows updated metric.
@param locker the statement locker
@param count the number of rows updated
*/
typedef void (*inc_statement_rows_updated_t)(
struct PSI_statement_locker *locker, unsigned long long count);

/**
Increment a statement event "created tmp disk tables" metric.
@param locker the statement locker
Expand Down
12 changes: 12 additions & 0 deletions include/mysql/components/services/psi_statement_service.h
Expand Up @@ -52,6 +52,12 @@ set_statement_lock_time_t set_statement_lock_time;
set_statement_rows_sent_t set_statement_rows_sent;
/** @sa set_statement_rows_examined_t. */
set_statement_rows_examined_t set_statement_rows_examined;
/** @sa inc_statement_rows_deleted_t. */
inc_statement_rows_deleted_t inc_statement_rows_deleted;
/** @sa inc_statement_rows_inserted_t. */
inc_statement_rows_inserted_t inc_statement_rows_inserted;
/** @sa inc_statement_rows_updated_t. */
inc_statement_rows_updated_t inc_statement_rows_updated;
/** @sa inc_statement_created_tmp_disk_tables. */
inc_statement_created_tmp_disk_tables_t inc_statement_created_tmp_disk_tables;
/** @sa inc_statement_created_tmp_tables. */
Expand Down Expand Up @@ -133,6 +139,12 @@ set_statement_lock_time_t set_statement_lock_time;
set_statement_rows_sent_t set_statement_rows_sent;
/** @sa set_statement_rows_examined_t. */
set_statement_rows_examined_t set_statement_rows_examined;
/** @sa inc_statement_rows_deleted_t. */
inc_statement_rows_deleted_t inc_statement_rows_deleted;
/** @sa inc_statement_rows_inserted_t. */
inc_statement_rows_inserted_t inc_statement_rows_inserted;
/** @sa inc_statement_rows_updated_t. */
inc_statement_rows_updated_t inc_statement_rows_updated;
/** @sa inc_statement_created_tmp_disk_tables. */
inc_statement_created_tmp_disk_tables_t inc_statement_created_tmp_disk_tables;
/** @sa inc_statement_created_tmp_tables. */
Expand Down
48 changes: 48 additions & 0 deletions include/mysql/psi/mysql_statement.h
Expand Up @@ -147,6 +147,33 @@ struct CHARSET_INFO;
} while (0)
#endif

#ifdef HAVE_PSI_STATEMENT_INTERFACE
#define MYSQL_INC_STATEMENT_ROWS_DELETED(LOCKER, P1) \
inline_mysql_inc_statement_rows_deleted(LOCKER, P1)
#else
#define MYSQL_INC_STATEMENT_ROWS_DELETED(LOCKER, P1) \
do { \
} while (0)
#endif

#ifdef HAVE_PSI_STATEMENT_INTERFACE
#define MYSQL_INC_STATEMENT_ROWS_INSERTED(LOCKER, P1) \
inline_mysql_inc_statement_rows_inserted(LOCKER, P1)
#else
#define MYSQL_INC_STATEMENT_ROWS_INSERTED(LOCKER, P1) \
do { \
} while (0)
#endif

#ifdef HAVE_PSI_STATEMENT_INTERFACE
#define MYSQL_INC_STATEMENT_ROWS_UPDATED(LOCKER, P1) \
inline_mysql_inc_statement_rows_updated(LOCKER, P1)
#else
#define MYSQL_INC_STATEMENT_ROWS_UPDATED(LOCKER, P1) \
do { \
} while (0)
#endif

#ifdef HAVE_PSI_STATEMENT_INTERFACE
#define MYSQL_END_STATEMENT(LOCKER, DA) inline_mysql_end_statement(LOCKER, DA)
#else
Expand Down Expand Up @@ -247,6 +274,27 @@ static inline void inline_mysql_set_statement_rows_examined(
}
}

static inline void inline_mysql_inc_statement_rows_deleted(
PSI_statement_locker *locker, ulonglong count) {
if (likely(locker != NULL)) {
PSI_STATEMENT_CALL(inc_statement_rows_deleted)(locker, count);
}
}

static inline void inline_mysql_inc_statement_rows_inserted(
PSI_statement_locker *locker, ulonglong count) {
if (likely(locker != NULL)) {
PSI_STATEMENT_CALL(inc_statement_rows_inserted)(locker, count);
}
}

static inline void inline_mysql_inc_statement_rows_updated(
PSI_statement_locker *locker, ulonglong count) {
if (likely(locker != NULL)) {
PSI_STATEMENT_CALL(inc_statement_rows_updated)(locker, count);
}
}

static inline void inline_mysql_end_statement(
struct PSI_statement_locker *locker, Diagnostics_area *stmt_da) {
#ifdef HAVE_PSI_STAGE_INTERFACE
Expand Down
12 changes: 12 additions & 0 deletions include/mysql/psi/psi_abi_statement_v1.h.pp
Expand Up @@ -60,6 +60,9 @@
unsigned long long m_lock_time;
unsigned long long m_rows_sent;
unsigned long long m_rows_examined;
unsigned long long m_rows_deleted;
unsigned long long m_rows_inserted;
unsigned long long m_rows_updated;
unsigned long m_created_tmp_disk_tables;
unsigned long m_created_tmp_tables;
unsigned long m_select_full_join;
Expand Down Expand Up @@ -113,6 +116,12 @@
unsigned long long count);
typedef void (*set_statement_rows_examined_t)(
struct PSI_statement_locker *locker, unsigned long long count);
typedef void (*inc_statement_rows_deleted_t)(
struct PSI_statement_locker *locker, unsigned long long count);
typedef void (*inc_statement_rows_inserted_t)(
struct PSI_statement_locker *locker, unsigned long long count);
typedef void (*inc_statement_rows_updated_t)(
struct PSI_statement_locker *locker, unsigned long long count);
typedef void (*inc_statement_created_tmp_disk_tables_t)(
struct PSI_statement_locker *locker, unsigned long count);
typedef void (*inc_statement_created_tmp_tables_t)(
Expand Down Expand Up @@ -188,6 +197,9 @@
set_statement_lock_time_t set_statement_lock_time;
set_statement_rows_sent_t set_statement_rows_sent;
set_statement_rows_examined_t set_statement_rows_examined;
inc_statement_rows_deleted_t inc_statement_rows_deleted;
inc_statement_rows_inserted_t inc_statement_rows_inserted;
inc_statement_rows_updated_t inc_statement_rows_updated;
inc_statement_created_tmp_disk_tables_t inc_statement_created_tmp_disk_tables;
inc_statement_created_tmp_tables_t inc_statement_created_tmp_tables;
inc_statement_select_full_join_t inc_statement_select_full_join;
Expand Down
6 changes: 6 additions & 0 deletions include/mysql/psi/psi_statement.h
Expand Up @@ -89,6 +89,12 @@ struct PSI_statement_service_v2 {
set_statement_rows_sent_t set_statement_rows_sent;
/** @sa set_statement_rows_examined_t. */
set_statement_rows_examined_t set_statement_rows_examined;
/** @sa set_statement_rows_deleted_t. */
inc_statement_rows_deleted_t inc_statement_rows_deleted;
/** @sa set_statement_rows_inserted_t. */
inc_statement_rows_inserted_t inc_statement_rows_inserted;
/** @sa set_statement_rows_updated_t. */
inc_statement_rows_updated_t inc_statement_rows_updated;
/** @sa inc_statement_created_tmp_disk_tables. */
inc_statement_created_tmp_disk_tables_t inc_statement_created_tmp_disk_tables;
/** @sa inc_statement_created_tmp_tables. */
Expand Down
9 changes: 9 additions & 0 deletions include/pfs_statement_provider.h
Expand Up @@ -78,6 +78,15 @@ void pfs_set_statement_rows_sent_v2(PSI_statement_locker *locker,
void pfs_set_statement_rows_examined_v2(PSI_statement_locker *locker,
ulonglong count);

void pfs_inc_statement_rows_deleted_v2(PSI_statement_locker *locker,
ulonglong count);

void pfs_inc_statement_rows_inserted_v2(PSI_statement_locker *locker,
ulonglong count);

void pfs_inc_statement_rows_updated_v2(PSI_statement_locker *locker,
ulonglong count);

void pfs_inc_statement_created_tmp_disk_tables_v2(PSI_statement_locker *locker,
ulong count);

Expand Down
3 changes: 3 additions & 0 deletions mysql-test/include/counter_rows.inc
@@ -1,6 +1,9 @@
# Executes sql command and validates the values of Rows_examined and Rows_sent
# values from status table.
# The following variables should be set before invoking this inc file
# $sql
# $expected_rows_examined
# $expected_rows_sent

# Start counters
--let $start_rows_examined = query_get_value(show status like "Rows_examined", Value, 1)
Expand Down
44 changes: 44 additions & 0 deletions mysql-test/include/statements_row_deleted.inc
@@ -0,0 +1,44 @@
# Executes sql command and validates the values of SUMS_ROWS_DELETED from various
# statements table.
# The following variables should be set before invoking this inc file
# $sql
# $expected_sum_rows_deleted

#--let $rpl_debug = 1

# Start counters
--let $start_sum_rows_deleted_user = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_user_by_event_name, Value, 1)
--let $start_sum_rows_deleted_host = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_host_by_event_name, Value, 1)
--let $start_sum_rows_deleted_program = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_program, Value, 1)
--let $start_sum_rows_deleted_event = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_thread_by_event_name, Value, 1)
--let $start_sum_rows_deleted_global = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_global_by_event_name, Value, 1)

--eval $sql

# Get counters
--let $end_sum_rows_deleted_user = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_user_by_event_name, Value, 1)
--let $end_sum_rows_deleted_host = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_host_by_event_name, Value, 1)
--let $end_sum_rows_deleted_program = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_program, Value, 1)
--let $end_sum_rows_deleted_event = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_thread_by_event_name, Value, 1)
--let $end_sum_rows_deleted_global = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_global_by_event_name, Value, 1)

# Check sanity
--let $assert_text= SUM_ROWS_DELETED on events_statements_summary_by_user_by_event_name should be increased by $expected_sum_rows_deleted.
--let $assert_cond= $end_sum_rows_deleted_user - $start_sum_rows_deleted_user = $expected_sum_rows_deleted
--source include/assert.inc

--let $assert_text= SUM_ROWS_DELETED on events_statements_summary_by_host_by_event_name should be increased by $expected_sum_rows_deleted.
--let $assert_cond= $end_sum_rows_deleted_host - $start_sum_rows_deleted_host = $expected_sum_rows_deleted
--source include/assert.inc

--let $assert_text= SUM_ROWS_DELETED on events_statements_summary_by_program should be increased by 0.
--let $assert_cond= $end_sum_rows_deleted_program - $start_sum_rows_deleted_program = 0
--source include/assert.inc

--let $assert_text= SUM_ROWS_DELETED on events_statements_summary_by_thread_by_event_name should be increased by $expected_sum_rows_deleted.
--let $assert_cond= $end_sum_rows_deleted_event - $start_sum_rows_deleted_event = $expected_sum_rows_deleted
--source include/assert.inc

--let $assert_text= SUM_ROWS_DELETED on events_statements_summary_global_by_event_name should be increased by $expected_sum_rows_deleted.
--let $assert_cond= $end_sum_rows_deleted_global - $start_sum_rows_deleted_global = $expected_sum_rows_deleted
--source include/assert.inc
44 changes: 44 additions & 0 deletions mysql-test/suite/perfschema/include/statements_row_deleted.inc
@@ -0,0 +1,44 @@
# Executes sql command and validates the values of SUMS_ROWS_DELETED from various
# statements table.
# The following variables should be set before invoking this inc file
# $sql
# $expected_sum_rows_deleted

#--let $rpl_debug = 1

# Start counters
--let $start_sum_rows_deleted_user = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_user_by_event_name, Value, 1)
--let $start_sum_rows_deleted_host = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_host_by_event_name, Value, 1)
--let $start_sum_rows_deleted_program = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_program, Value, 1)
--let $start_sum_rows_deleted_event = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_thread_by_event_name, Value, 1)
--let $start_sum_rows_deleted_global = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_global_by_event_name, Value, 1)

--eval $sql

# Get counters
--let $end_sum_rows_deleted_user = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_user_by_event_name, Value, 1)
--let $end_sum_rows_deleted_host = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_host_by_event_name, Value, 1)
--let $end_sum_rows_deleted_program = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_program, Value, 1)
--let $end_sum_rows_deleted_event = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_by_thread_by_event_name, Value, 1)
--let $end_sum_rows_deleted_global = query_get_value(select sum(SUM_ROWS_DELETED) as Value from performance_schema.events_statements_summary_global_by_event_name, Value, 1)

# Check sanity
--let $assert_text= SUM_ROWS_DELETED on events_statements_summary_by_user_by_event_name should be increased by $expected_sum_rows_deleted.
--let $assert_cond= $end_sum_rows_deleted_user - $start_sum_rows_deleted_user = $expected_sum_rows_deleted
--source include/assert.inc

--let $assert_text= SUM_ROWS_DELETED on events_statements_summary_by_host_by_event_name should be increased by $expected_sum_rows_deleted.
--let $assert_cond= $end_sum_rows_deleted_host - $start_sum_rows_deleted_host = $expected_sum_rows_deleted
--source include/assert.inc

--let $assert_text= SUM_ROWS_DELETED on events_statements_summary_by_program should be increased by 0.
--let $assert_cond= $end_sum_rows_deleted_program - $start_sum_rows_deleted_program = 0
--source include/assert.inc

--let $assert_text= SUM_ROWS_DELETED on events_statements_summary_by_thread_by_event_name should be increased by $expected_sum_rows_deleted.
--let $assert_cond= $end_sum_rows_deleted_event - $start_sum_rows_deleted_event = $expected_sum_rows_deleted
--source include/assert.inc

--let $assert_text= SUM_ROWS_DELETED on events_statements_summary_global_by_event_name should be increased by $expected_sum_rows_deleted.
--let $assert_cond= $end_sum_rows_deleted_global - $start_sum_rows_deleted_global = $expected_sum_rows_deleted
--source include/assert.inc
44 changes: 44 additions & 0 deletions mysql-test/suite/perfschema/include/statements_row_inserted.inc
@@ -0,0 +1,44 @@
# Executes sql command and validates the values of SUMS_ROWS_INSERTED from various
# statements table.
# The following variables should be set before invoking this inc file
# $sql
# $expected_sum_rows_inserted

#--let $rpl_debug = 1

# Start counters
--let $start_sum_rows_inserted_user = query_get_value(select sum(SUM_ROWS_INSERTED) as Value from performance_schema.events_statements_summary_by_user_by_event_name, Value, 1)
--let $start_sum_rows_inserted_host = query_get_value(select sum(SUM_ROWS_INSERTED) as Value from performance_schema.events_statements_summary_by_host_by_event_name, Value, 1)
--let $start_sum_rows_inserted_program = query_get_value(select sum(SUM_ROWS_INSERTED) as Value from performance_schema.events_statements_summary_by_program, Value, 1)
--let $start_sum_rows_inserted_event = query_get_value(select sum(SUM_ROWS_INSERTED) as Value from performance_schema.events_statements_summary_by_thread_by_event_name, Value, 1)
--let $start_sum_rows_inserted_global = query_get_value(select sum(SUM_ROWS_INSERTED) as Value from performance_schema.events_statements_summary_global_by_event_name, Value, 1)

--eval $sql

# Get counters
--let $end_sum_rows_inserted_user = query_get_value(select sum(SUM_ROWS_INSERTED) as Value from performance_schema.events_statements_summary_by_user_by_event_name, Value, 1)
--let $end_sum_rows_inserted_host = query_get_value(select sum(SUM_ROWS_INSERTED) as Value from performance_schema.events_statements_summary_by_host_by_event_name, Value, 1)
--let $end_sum_rows_inserted_program = query_get_value(select sum(SUM_ROWS_INSERTED) as Value from performance_schema.events_statements_summary_by_program, Value, 1)
--let $end_sum_rows_inserted_event = query_get_value(select sum(SUM_ROWS_INSERTED) as Value from performance_schema.events_statements_summary_by_thread_by_event_name, Value, 1)
--let $end_sum_rows_inserted_global = query_get_value(select sum(SUM_ROWS_INSERTED) as Value from performance_schema.events_statements_summary_global_by_event_name, Value, 1)

# Check sanity
--let $assert_text= SUM_ROWS_INSERTED on events_statements_summary_by_user_by_event_name should be increased by $expected_sum_rows_inserted.
--let $assert_cond= $end_sum_rows_inserted_user - $start_sum_rows_inserted_user = $expected_sum_rows_inserted
--source include/assert.inc

--let $assert_text= SUM_ROWS_INSERTED on events_statements_summary_by_host_by_event_name should be increased by $expected_sum_rows_inserted.
--let $assert_cond= $end_sum_rows_inserted_host - $start_sum_rows_inserted_host = $expected_sum_rows_inserted
--source include/assert.inc

--let $assert_text= SUM_ROWS_INSERTED on events_statements_summary_by_program should be increased by 0.
--let $assert_cond= $end_sum_rows_inserted_program - $start_sum_rows_inserted_program = 0
--source include/assert.inc

--let $assert_text= SUM_ROWS_INSERTED on events_statements_summary_by_thread_by_event_name should be increased by $expected_sum_rows_inserted.
--let $assert_cond= $end_sum_rows_inserted_event - $start_sum_rows_inserted_event = $expected_sum_rows_inserted
--source include/assert.inc

--let $assert_text= SUM_ROWS_INSERTED on events_statements_summary_global_by_event_name should be increased by $expected_sum_rows_inserted.
--let $assert_cond= $end_sum_rows_inserted_global - $start_sum_rows_inserted_global = $expected_sum_rows_inserted
--source include/assert.inc

0 comments on commit 773e21c

Please sign in to comment.