in storage/perfschema/pfs_engine_table.cc [719:1496]
bool pfs_show_status(handlerton *hton, THD *thd,
stat_print_fn *print, enum ha_stat_type stat)
{
char buf[1024];
uint buflen;
const char *name;
int i;
size_t size;
DBUG_ENTER("pfs_show_status");
/*
Note about naming conventions:
- Internal buffers exposed as a table in the performance schema are named
after the table, as in 'events_waits_current'
- Internal buffers not exposed by a table are named with parenthesis,
as in '(pfs_mutex_class)'.
*/
if (stat != HA_ENGINE_STATUS)
DBUG_RETURN(false);
size_t total_memory= 0;
for (i=0; /* empty */; i++)
{
switch (i){
case 0:
name= "events_waits_current.row_size";
size= sizeof(PFS_events_waits);
break;
case 1:
name= "events_waits_current.row_count";
size= WAIT_STACK_SIZE * thread_max;
break;
case 2:
name= "events_waits_history.row_size";
size= sizeof(PFS_events_waits);
break;
case 3:
name= "events_waits_history.row_count";
size= events_waits_history_per_thread * thread_max;
break;
case 4:
name= "events_waits_history.memory";
size= events_waits_history_per_thread * thread_max
* sizeof(PFS_events_waits);
total_memory+= size;
break;
case 5:
name= "events_waits_history_long.row_size";
size= sizeof(PFS_events_waits);
break;
case 6:
name= "events_waits_history_long.row_count";
size= events_waits_history_long_size;
break;
case 7:
name= "events_waits_history_long.memory";
size= events_waits_history_long_size * sizeof(PFS_events_waits);
total_memory+= size;
break;
case 8:
name= "(pfs_mutex_class).row_size";
size= sizeof(PFS_mutex_class);
break;
case 9:
name= "(pfs_mutex_class).row_count";
size= mutex_class_max;
break;
case 10:
name= "(pfs_mutex_class).memory";
size= mutex_class_max * sizeof(PFS_mutex_class);
total_memory+= size;
break;
case 11:
name= "(pfs_rwlock_class).row_size";
size= sizeof(PFS_rwlock_class);
break;
case 12:
name= "(pfs_rwlock_class).row_count";
size= rwlock_class_max;
break;
case 13:
name= "(pfs_rwlock_class).memory";
size= rwlock_class_max * sizeof(PFS_rwlock_class);
total_memory+= size;
break;
case 14:
name= "(pfs_cond_class).row_size";
size= sizeof(PFS_cond_class);
break;
case 15:
name= "(pfs_cond_class).row_count";
size= cond_class_max;
break;
case 16:
name= "(pfs_cond_class).memory";
size= cond_class_max * sizeof(PFS_cond_class);
total_memory+= size;
break;
case 17:
name= "(pfs_thread_class).row_size";
size= sizeof(PFS_thread_class);
break;
case 18:
name= "(pfs_thread_class).row_count";
size= thread_class_max;
break;
case 19:
name= "(pfs_thread_class).memory";
size= thread_class_max * sizeof(PFS_thread_class);
total_memory+= size;
break;
case 20:
name= "(pfs_file_class).row_size";
size= sizeof(PFS_file_class);
break;
case 21:
name= "(pfs_file_class).row_count";
size= file_class_max;
break;
case 22:
name= "(pfs_file_class).memory";
size= file_class_max * sizeof(PFS_file_class);
total_memory+= size;
break;
case 23:
name= "mutex_instances.row_size";
size= sizeof(PFS_mutex);
break;
case 24:
name= "mutex_instances.row_count";
size= mutex_max;
break;
case 25:
name= "mutex_instances.memory";
size= mutex_max * sizeof(PFS_mutex);
total_memory+= size;
break;
case 26:
name= "rwlock_instances.row_size";
size= sizeof(PFS_rwlock);
break;
case 27:
name= "rwlock_instances.row_count";
size= rwlock_max;
break;
case 28:
name= "rwlock_instances.memory";
size= rwlock_max * sizeof(PFS_rwlock);
total_memory+= size;
break;
case 29:
name= "cond_instances.row_size";
size= sizeof(PFS_cond);
break;
case 30:
name= "cond_instances.row_count";
size= cond_max;
break;
case 31:
name= "cond_instances.memory";
size= cond_max * sizeof(PFS_cond);
total_memory+= size;
break;
case 32:
name= "threads.row_size";
size= sizeof(PFS_thread);
break;
case 33:
name= "threads.row_count";
size= thread_max;
break;
case 34:
name= "threads.memory";
size= thread_max * sizeof(PFS_thread);
total_memory+= size;
break;
case 35:
name= "file_instances.row_size";
size= sizeof(PFS_file);
break;
case 36:
name= "file_instances.row_count";
size= file_max;
break;
case 37:
name= "file_instances.memory";
size= file_max * sizeof(PFS_file);
total_memory+= size;
break;
case 38:
name= "(pfs_file_handle).row_size";
size= sizeof(PFS_file*);
break;
case 39:
name= "(pfs_file_handle).row_count";
size= file_handle_max;
break;
case 40:
name= "(pfs_file_handle).memory";
size= file_handle_max * sizeof(PFS_file*);
total_memory+= size;
break;
case 41:
name= "events_waits_summary_by_thread_by_event_name.row_size";
size= sizeof(PFS_single_stat);
break;
case 42:
name= "events_waits_summary_by_thread_by_event_name.row_count";
size= thread_max * wait_class_max;
break;
case 43:
name= "events_waits_summary_by_thread_by_event_name.memory";
size= thread_max * wait_class_max * sizeof(PFS_single_stat);
total_memory+= size;
break;
case 44:
name= "(pfs_table_share).row_size";
size= sizeof(PFS_table_share);
break;
case 45:
name= "(pfs_table_share).row_count";
size= table_share_max;
break;
case 46:
name= "(pfs_table_share).memory";
size= table_share_max * sizeof(PFS_table_share);
total_memory+= size;
break;
case 47:
name= "(pfs_table).row_size";
size= sizeof(PFS_table);
break;
case 48:
name= "(pfs_table).row_count";
size= table_max;
break;
case 49:
name= "(pfs_table).memory";
size= table_max * sizeof(PFS_table);
total_memory+= size;
break;
case 50:
name= "setup_actors.row_size";
size= sizeof(PFS_setup_actor);
break;
case 51:
name= "setup_actors.row_count";
size= setup_actor_max;
break;
case 52:
name= "setup_actors.memory";
size= setup_actor_max * sizeof(PFS_setup_actor);
total_memory+= size;
break;
case 53:
name= "setup_objects.row_size";
size= sizeof(PFS_setup_object);
break;
case 54:
name= "setup_objects.row_count";
size= setup_object_max;
break;
case 55:
name= "setup_objects.memory";
size= setup_object_max * sizeof(PFS_setup_object);
total_memory+= size;
break;
case 56:
name= "(pfs_account).row_size";
size= sizeof(PFS_account);
break;
case 57:
name= "(pfs_account).row_count";
size= account_max;
break;
case 58:
name= "(pfs_account).memory";
size= account_max * sizeof(PFS_account);
total_memory+= size;
break;
case 59:
name= "events_waits_summary_by_account_by_event_name.row_size";
size= sizeof(PFS_single_stat);
break;
case 60:
name= "events_waits_summary_by_account_by_event_name.row_count";
size= account_max * wait_class_max;
break;
case 61:
name= "events_waits_summary_by_account_by_event_name.memory";
size= account_max * wait_class_max * sizeof(PFS_single_stat);
total_memory+= size;
break;
case 62:
name= "events_waits_summary_by_user_by_event_name.row_size";
size= sizeof(PFS_single_stat);
break;
case 63:
name= "events_waits_summary_by_user_by_event_name.row_count";
size= user_max * wait_class_max;
break;
case 64:
name= "events_waits_summary_by_user_by_event_name.memory";
size= user_max * wait_class_max * sizeof(PFS_single_stat);
total_memory+= size;
break;
case 65:
name= "events_waits_summary_by_host_by_event_name.row_size";
size= sizeof(PFS_single_stat);
break;
case 66:
name= "events_waits_summary_by_host_by_event_name.row_count";
size= host_max * wait_class_max;
break;
case 67:
name= "events_waits_summary_by_host_by_event_name.memory";
size= host_max * wait_class_max * sizeof(PFS_single_stat);
total_memory+= size;
break;
case 68:
name= "(pfs_user).row_size";
size= sizeof(PFS_user);
break;
case 69:
name= "(pfs_user).row_count";
size= user_max;
break;
case 70:
name= "(pfs_user).memory";
size= user_max * sizeof(PFS_user);
total_memory+= size;
break;
case 71:
name= "(pfs_host).row_size";
size= sizeof(PFS_host);
break;
case 72:
name= "(pfs_host).row_count";
size= host_max;
break;
case 73:
name= "(pfs_host).memory";
size= host_max * sizeof(PFS_host);
total_memory+= size;
break;
case 74:
name= "(pfs_stage_class).row_size";
size= sizeof(PFS_stage_class);
break;
case 75:
name= "(pfs_stage_class).row_count";
size= stage_class_max;
break;
case 76:
name= "(pfs_stage_class).memory";
size= stage_class_max * sizeof(PFS_stage_class);
total_memory+= size;
break;
case 77:
name= "events_stages_history.row_size";
size= sizeof(PFS_events_stages);
break;
case 78:
name= "events_stages_history.row_count";
size= events_stages_history_per_thread * thread_max;
break;
case 79:
name= "events_stages_history.memory";
size= events_stages_history_per_thread * thread_max
* sizeof(PFS_events_stages);
total_memory+= size;
break;
case 80:
name= "events_stages_history_long.row_size";
size= sizeof(PFS_events_stages);
break;
case 81:
name= "events_stages_history_long.row_count";
size= events_stages_history_long_size;
break;
case 82:
name= "events_stages_history_long.memory";
size= events_stages_history_long_size * sizeof(PFS_events_stages);
total_memory+= size;
break;
case 83:
name= "events_stages_summary_by_thread_by_event_name.row_size";
size= sizeof(PFS_stage_stat);
break;
case 84:
name= "events_stages_summary_by_thread_by_event_name.row_count";
size= thread_max * stage_class_max;
break;
case 85:
name= "events_stages_summary_by_thread_by_event_name.memory";
size= thread_max * stage_class_max * sizeof(PFS_stage_stat);
total_memory+= size;
break;
case 86:
name= "events_stages_summary_global_by_event_name.row_size";
size= sizeof(PFS_stage_stat);
break;
case 87:
name= "events_stages_summary_global_by_event_name.row_count";
size= stage_class_max;
break;
case 88:
name= "events_stages_summary_global_by_event_name.memory";
size= stage_class_max * sizeof(PFS_stage_stat);
total_memory+= size;
break;
case 89:
name= "events_stages_summary_by_account_by_event_name.row_size";
size= sizeof(PFS_stage_stat);
break;
case 90:
name= "events_stages_summary_by_account_by_event_name.row_count";
size= account_max * stage_class_max;
break;
case 91:
name= "events_stages_summary_by_account_by_event_name.memory";
size= account_max * stage_class_max * sizeof(PFS_stage_stat);
total_memory+= size;
break;
case 92:
name= "events_stages_summary_by_user_by_event_name.row_size";
size= sizeof(PFS_stage_stat);
break;
case 93:
name= "events_stages_summary_by_user_by_event_name.row_count";
size= user_max * stage_class_max;
break;
case 94:
name= "events_stages_summary_by_user_by_event_name.memory";
size= user_max * stage_class_max * sizeof(PFS_stage_stat);
total_memory+= size;
break;
case 95:
name= "events_stages_summary_by_host_by_event_name.row_size";
size= sizeof(PFS_stage_stat);
break;
case 96:
name= "events_stages_summary_by_host_by_event_name.row_count";
size= host_max * stage_class_max;
break;
case 97:
name= "events_stages_summary_by_host_by_event_name.memory";
size= host_max * stage_class_max * sizeof(PFS_stage_stat);
total_memory+= size;
break;
case 98:
name= "(pfs_statement_class).row_size";
size= sizeof(PFS_statement_class);
break;
case 99:
name= "(pfs_statement_class).row_count";
size= statement_class_max;
break;
case 100:
name= "(pfs_statement_class).memory";
size= statement_class_max * sizeof(PFS_statement_class);
total_memory+= size;
break;
case 101:
name= "events_statements_history.row_size";
size= sizeof(PFS_events_statements);
break;
case 102:
name= "events_statements_history.row_count";
size= events_statements_history_per_thread * thread_max;
break;
case 103:
name= "events_statements_history.memory";
size= events_statements_history_per_thread * thread_max
* sizeof(PFS_events_statements);
total_memory+= size;
break;
case 104:
name= "events_statements_history_long.row_size";
size= sizeof(PFS_events_statements);
break;
case 105:
name= "events_statements_history_long.row_count";
size= events_statements_history_long_size;
break;
case 106:
name= "events_statements_history_long.memory";
size= events_statements_history_long_size * sizeof(PFS_events_statements);
total_memory+= size;
break;
case 107:
name= "events_statements_summary_by_thread_by_event_name.row_size";
size= sizeof(PFS_statement_stat);
break;
case 108:
name= "events_statements_summary_by_thread_by_event_name.row_count";
size= thread_max * statement_class_max;
break;
case 109:
name= "events_statements_summary_by_thread_by_event_name.memory";
size= thread_max * statement_class_max * sizeof(PFS_statement_stat);
total_memory+= size;
break;
case 110:
name= "events_statements_summary_global_by_event_name.row_size";
size= sizeof(PFS_statement_stat);
break;
case 111:
name= "events_statements_summary_global_by_event_name.row_count";
size= statement_class_max;
break;
case 112:
name= "events_statements_summary_global_by_event_name.memory";
size= statement_class_max * sizeof(PFS_statement_stat);
total_memory+= size;
break;
case 113:
name= "events_statements_summary_by_account_by_event_name.row_size";
size= sizeof(PFS_statement_stat);
break;
case 114:
name= "events_statements_summary_by_account_by_event_name.row_count";
size= account_max * statement_class_max;
break;
case 115:
name= "events_statements_summary_by_account_by_event_name.memory";
size= account_max * statement_class_max * sizeof(PFS_statement_stat);
total_memory+= size;
break;
case 116:
name= "events_statements_summary_by_user_by_event_name.row_size";
size= sizeof(PFS_statement_stat);
break;
case 117:
name= "events_statements_summary_by_user_by_event_name.row_count";
size= user_max * statement_class_max;
break;
case 118:
name= "events_statements_summary_by_user_by_event_name.memory";
size= user_max * statement_class_max * sizeof(PFS_statement_stat);
total_memory+= size;
break;
case 119:
name= "events_statements_summary_by_host_by_event_name.row_size";
size= sizeof(PFS_statement_stat);
break;
case 120:
name= "events_statements_summary_by_host_by_event_name.row_count";
size= host_max * statement_class_max;
break;
case 121:
name= "events_statements_summary_by_host_by_event_name.memory";
size= host_max * statement_class_max * sizeof(PFS_statement_stat);
total_memory+= size;
break;
case 122:
name= "events_statements_current.row_size";
size= sizeof(PFS_events_statements);
break;
case 123:
name= "events_statements_current.row_count";
size= thread_max * statement_stack_max;
break;
case 124:
name= "events_statements_current.memory";
size= thread_max * statement_stack_max * sizeof(PFS_events_statements);
total_memory+= size;
break;
case 125:
name= "(pfs_socket_class).row_size";
size= sizeof(PFS_socket_class);
break;
case 126:
name= "(pfs_socket_class).row_count";
size= socket_class_max;
break;
case 127:
name= "(pfs_socket_class).memory";
size= socket_class_max * sizeof(PFS_socket_class);
total_memory+= size;
break;
case 128:
name= "socket_instances.row_size";
size= sizeof(PFS_socket);
break;
case 129:
name= "socket_instances.row_count";
size= socket_max;
break;
case 130:
name= "socket_instances.memory";
size= socket_max * sizeof(PFS_socket);
total_memory+= size;
break;
case 131:
name= "events_statements_summary_by_digest.row_size";
size= sizeof(PFS_statements_digest_stat);
break;
case 132:
name= "events_statements_summary_by_digest.row_count";
size= digest_max;
break;
case 133:
name= "events_statements_summary_by_digest.memory";
size= digest_max * sizeof(PFS_statements_digest_stat);
total_memory+= size;
break;
case 134:
name= "session_connect_attrs.row_size";
size= thread_max;
break;
case 135:
name= "session_connect_attrs.row_count";
size= session_connect_attrs_size_per_thread;
break;
case 136:
name= "session_connect_attrs.memory";
size= thread_max * session_connect_attrs_size_per_thread;
total_memory+= size;
break;
case 137:
name= "(account_hash).count";
size= account_hash.count;
break;
case 138:
name= "(account_hash).size";
size= account_hash.size;
break;
case 139:
name= "(digest_hash).count";
size= digest_hash.count;
break;
case 140:
name= "(digest_hash).size";
size= digest_hash.size;
break;
case 141:
name= "(filename_hash).count";
size= filename_hash.count;
break;
case 142:
name= "(filename_hash).size";
size= filename_hash.size;
break;
case 143:
name= "(host_hash).count";
size= host_hash.count;
break;
case 144:
name= "(host_hash).size";
size= host_hash.size;
break;
case 145:
name= "(setup_actor_hash).count";
size= setup_actor_hash.count;
break;
case 146:
name= "(setup_actor_hash).size";
size= setup_actor_hash.size;
break;
case 147:
name= "(setup_object_hash).count";
size= setup_object_hash.count;
break;
case 148:
name= "(setup_object_hash).size";
size= setup_object_hash.size;
break;
case 149:
name= "(table_share_hash).count";
size= table_share_hash.count;
break;
case 150:
name= "(table_share_hash).size";
size= table_share_hash.size;
break;
case 151:
name= "(user_hash).count";
size= user_hash.count;
break;
case 152:
name= "(user_hash).size";
size= user_hash.size;
break;
case 153:
/*
This is not a performance_schema buffer,
the data is maintained in the server,
in hostname_cache.
Print the size only, there are:
- no host_cache.count
- no host_cache.memory
*/
name= "host_cache.size";
size= sizeof(Host_entry);
break;
case 154:
name= "(history_long_statements_digest_token_array).row_count";
size= events_statements_history_long_size;
break;
case 155:
name= "(history_long_statements_digest_token_array).row_size";
size= pfs_max_digest_length;
break;
case 156:
name= "(history_long_statements_digest_token_array).memory";
size= events_statements_history_long_size * pfs_max_digest_length;
total_memory+= size;
break;
case 157:
name= "(history_statements_digest_token_array).row_count";
size= thread_max * events_statements_history_per_thread;
break;
case 158:
name= "(history_statements_digest_token_array).row_size";
size= pfs_max_digest_length;
break;
case 159:
name= "(history_statements_digest_token_array).memory";
size= thread_max * events_statements_history_per_thread * pfs_max_digest_length;
total_memory+= size;
break;
case 160:
name= "(current_statements_digest_token_array).row_count";
size= thread_max * statement_stack_max;
break;
case 161:
name= "(current_statements_digest_token_array).row_size";
size= pfs_max_digest_length;
break;
case 162:
name= "(current_statements_digest_token_array).memory";
size= thread_max * statement_stack_max * pfs_max_digest_length;
total_memory+= size;
break;
case 163:
name= "(statements_digest_token_array).row_count";
size= digest_max;
break;
case 164:
name= "(statements_digest_token_array).row_size";
size= pfs_max_digest_length;
break;
case 165:
name= "(statements_digest_token_array).memory";
size= digest_max * pfs_max_digest_length;
total_memory+= size;
break;
/*
This case must be last,
for aggregation in total_memory.
*/
case 166:
name= "performance_schema.memory";
size= total_memory;
/* This will fail if something is not advertised here */
DBUG_ASSERT(size == pfs_allocated_memory);
break;
default:
goto end;
break;
}
buflen= longlong10_to_str(size, buf, 10) - buf;
if (print(thd,
PERFORMANCE_SCHEMA_str.str, PERFORMANCE_SCHEMA_str.length,
name, strlen(name),
buf, buflen))
DBUG_RETURN(true);
}
end:
DBUG_RETURN(false);
}