{% extends "base.html" %} {# Info tooltip macro - hover to show definition #} {% macro info_tooltip(text, position='right') %}
{% endmacro %} {% block content %}

{{ host_label }} {% if replica_status and replica_status.is_replica %} Replica {% if replica_status.seconds_behind_master is none %} (NULL lag) {% elif replica_status.seconds_behind_master == 0 %} (0s lag) {% else %} ({{ replica_status.seconds_behind_master }}s lag) {% endif %} {% endif %}

Host ID: {{ host_id }}

{% if job_host.mysql_version %}

MySQL Version

{{ job_host.mysql_version }}

{% endif %} {% if global_status and global_status.Uptime %}

Server Uptime

{{ global_status.Uptime | format_uptime }}

{% endif %} {% if job_host.completed_at %}

Collected

{{ job_host.completed_at.strftime('%Y-%m-%d %H:%M:%S') }}

{% if timing_data and timing_data.total_duration %}

โšก {{ timing_data.total_duration }}s (parallel)

{% elif job_host.started_at %}

Duration: {{ ((job_host.completed_at - job_host.started_at).total_seconds())|round(1) }}s

{% endif %}
{% endif %}
{% if timing_data and timing_data.commands %}
{% for cmd, info in timing_data.commands.items() %}
{% if info.success %} โœ“ {% else %} โœ— {% endif %} {%- if 'INNODB' in cmd -%}InnoDB Status {%- elif 'PROCESSLIST' in cmd -%}Processlist {%- elif 'VARIABLES' in cmd -%}Variables {%- elif 'SLAVE STATUS' in cmd or 'REPLICA STATUS' in cmd -%}Replica Status {%- elif 'MASTER STATUS' in cmd -%}Master Status {%- elif 'STATUS' in cmd -%}Global Status {%- else -%}{{ cmd }} {%- endif -%} {{ info.duration }}s
{% endfor %}
{% endif %}
{% if replica_status and replica_status.is_replica %}

Replication Status

Replicating from {{ replica_status.master_host }}{% if replica_status.master_port %}:{{ replica_status.master_port }}{% endif %}

{% if replica_status.seconds_behind_master is none %} NULL {% else %} {{ replica_status.seconds_behind_master }}s {% endif %}

Lag

{{ replica_status.slave_io_running or 'N/A' }}

IO Thread

{{ replica_status.slave_sql_running or 'N/A' }}

SQL Thread

{% if replica_status.last_error %}

Error {{ replica_status.last_errno }}: {{ replica_status.last_error }}

{% endif %}
{% endif %} {% if buffer_pool and buffer_pool.pool_size_gb %}

InnoDB Buffer Pool

Memory allocation and efficiency

{{ info_tooltip("The buffer pool is InnoDB's main memory cache for data and indexes. Proper sizing (typically 70-80% of available RAM) is critical for performance. This summary shows key health indicators.", 'bottom') }}
{% if buffer_pool.health == 'healthy' %}๐ŸŸข Healthy {% elif buffer_pool.health == 'mild' %}๐ŸŸก Mild Pressure {% else %}๐Ÿ”ด Memory Pressure {% endif %}

Pool Size

{{ buffer_pool.pool_size_gb }}GB

Used

{{ buffer_pool.used_gb }}GB

{% if buffer_pool.used_percent is not none %}

({{ buffer_pool.used_percent }}%)

{% endif %}

Free

{{ buffer_pool.free_gb }}GB

{% if buffer_pool.free_percent is not none %}

({{ buffer_pool.free_percent }}%)

{% endif %}

Dirty Pages

{{ buffer_pool.dirty_percent if buffer_pool.dirty_percent is not none else '-' }}%

Hit Ratio

{{ buffer_pool.hit_ratio if buffer_pool.hit_ratio is not none else '-' }}%

Wait Free

{{ buffer_pool.wait_free if buffer_pool.wait_free is not none else '0' }}

{% if buffer_pool.health_reason %}

{{ buffer_pool.health_reason }}

{% endif %}
{% endif %} {# Macro for formatting large numbers with K/M/B suffixes #} {% macro format_ops(num) %} {%- if num >= 1000000000 -%} {{ "%.1f"|format(num / 1000000000) }}B {%- elif num >= 1000000 -%} {{ "%.1f"|format(num / 1000000) }}M {%- elif num >= 1000 -%} {{ "%.1f"|format(num / 1000) }}K {%- else -%} {{ num }} {%- endif -%} {% endmacro %} {% if hot_tables and hot_tables.tables %}

Hot Tables

Most active tables by I/O operations (top 10)

{{ info_tooltip("Data from performance_schema.table_io_waits_summary_by_index_usage. Shows tables with highest I/O activity since server start. 'Ops/sec' is calculated from total operations divided by server uptime. Enable 'Collect Hot Tables' option during collection.", 'bottom') }}
{{ hot_tables.tables|length }} tables
Schema Table Reads Writes Total Ops Ops/sec

Hot tables indicate access frequency, not buffer pool size. Data from performance_schema. Click column headers to sort.

โ„น๏ธ Ops/sec = total_ops รท server_uptime (average since server start, not real-time)

{% elif hot_tables and hot_tables.error %}
Hot Tables: {{ hot_tables.error }}
{% endif %}
{% if replica_status and replica_status.is_replica %}
Replication Lag{{ info_tooltip("Seconds_Behind_Master: Estimated time the replica is behind the master. 0 = caught up, NULL = thread not running or undetermined. High lag indicates slow queries, network issues, or replica overload.") }} {% if replica_status.seconds_behind_master == 0 %} Caught Up {% elif replica_status.seconds_behind_master is none %} Unknown {% elif replica_status.seconds_behind_master < 10 %} Lagging {% else %} Critical {% endif %}

{% if replica_status.seconds_behind_master is none %}NULL{% else %}{{ replica_status.seconds_behind_master }}s{% endif %}

Seconds Behind Master

IO Thread{{ info_tooltip("Slave_IO_Running: Fetches binary log events from master and writes to relay log. Must be 'Yes' for replication. 'Connecting' may indicate network issues or master unavailability.") }}

{{ replica_status.slave_io_running or 'N/A' }}

{{ replica_status.slave_io_state or 'No state info' }}

SQL Thread{{ info_tooltip("Slave_SQL_Running: Reads relay log and executes SQL on replica. Must be 'Yes'. 'No' often means replication error (check Last_SQL_Error). Can be stopped deliberately for maintenance.") }}

{{ replica_status.slave_sql_running or 'N/A' }}

{{ replica_status.slave_sql_state or 'No state info' }}

{% if master_info %}

Master Comparison โ€” Comparing with {{ master_info.label }}

MASTER {{ master_info.label }}
Binlog File: {{ master_info.binlog_file or 'N/A' }}
Position: {{ '{:,}'.format(master_info.binlog_position) if master_info.binlog_position else 'N/A' }}
REPLICA {{ host_label }}
Reading File: {{ replica_status.master_log_file or 'N/A' }}
Read Position: {{ '{:,}'.format(replica_status.read_master_log_pos) if replica_status.read_master_log_pos else 'N/A' }}
Executing File: {{ replica_status.relay_master_log_file or 'N/A' }}
Exec Position: {{ '{:,}'.format(replica_status.exec_master_log_pos) if replica_status.exec_master_log_pos else 'N/A' }}
{% if master_info.binlog_position and replica_status.exec_master_log_pos %} {% set pos_diff = master_info.binlog_position - replica_status.exec_master_log_pos %}
Position Difference: {% if pos_diff == 0 %} โœ“ Caught up {% elif master_info.binlog_file != replica_status.relay_master_log_file %} โš  Different binlog file {% else %} {{ '{:,}'.format(pos_diff) }} bytes behind {% endif %}
{% endif %}
{% endif %}

Binlog Position Details

IO Thread (Reading from Master)

Master Log File: {{ replica_status.master_log_file or 'N/A' }}
Read Position: {{ '{:,}'.format(replica_status.read_master_log_pos) if replica_status.read_master_log_pos else 'N/A' }}

SQL Thread (Executing)

Relay Master File: {{ replica_status.relay_master_log_file or 'N/A' }}
Exec Position: {{ '{:,}'.format(replica_status.exec_master_log_pos) if replica_status.exec_master_log_pos else 'N/A' }}

Relay Log

Relay Log File: {{ replica_status.relay_log_file or 'N/A' }}
Relay Log Pos: {{ '{:,}'.format(replica_status.relay_log_pos) if replica_status.relay_log_pos else 'N/A' }}
Relay Log Space: {{ '{:,.0f}'.format(replica_status.relay_log_space / 1024 / 1024) if replica_status.relay_log_space else 'N/A' }} MB
{% if replica_status.auto_position or replica_status.retrieved_gtid_set or replica_status.executed_gtid_set %}

GTID Replication {% if replica_status.auto_position %} Auto Position {% endif %}

{% if replica_status.retrieved_gtid_set %}
Retrieved GTID Set
{{ replica_status.retrieved_gtid_set }}
{% endif %} {% if replica_status.executed_gtid_set %}
Executed GTID Set
{{ replica_status.executed_gtid_set }}
{% endif %}
{% endif %}

Source Connection

Master Host: {{ replica_status.master_host or 'N/A' }}
Master Port: {{ replica_status.master_port or 'N/A' }}
Master User: {{ replica_status.master_user or 'N/A' }}
Connect Retry: {{ replica_status.connect_retry or 'N/A' }}s
{% if replica_status.master_server_id %}
Master Server ID: {{ replica_status.master_server_id }}
{% endif %} {% if replica_status.master_uuid %}
Master UUID: {{ replica_status.master_uuid }}
{% endif %} {% if replica_status.channel_name %}
Channel: {{ replica_status.channel_name }}
{% endif %}
{% if replica_status.last_io_error or replica_status.last_sql_error %}

Replication Errors

{% if replica_status.last_io_error %}
IO Error ({{ replica_status.last_io_errno or '?' }}):

{{ replica_status.last_io_error }}

{% endif %} {% if replica_status.last_sql_error %}
SQL Error ({{ replica_status.last_sql_errno or '?' }}):

{{ replica_status.last_sql_error }}

{% endif %}
{% endif %} {% elif master_status and master_status.is_master %}

Primary Server (Master)

This server is configured as a master with binary logging enabled.

Master Status

Binlog File: {{ master_status.file }}
Position: {{ '{:,}'.format(master_status.position) if master_status.position else 'N/A' }}
{% if master_status.executed_gtid_set %}
Executed GTID Set: {{ master_status.executed_gtid_set }}
{% endif %}
{% else %}

No Replication Configured

This server is not configured as a replica and does not have binary logging enabled.

{% endif %}
{% if innodb_health %}
Overall Status {% if innodb_health.summary.has_issues %} {% if innodb_health.summary.issues|selectattr('severity', 'equalto', 'critical')|list %} ๐Ÿ”ด {% else %} ๐ŸŸก {% endif %} {% else %} ๐ŸŸข {% endif %}

{% if innodb_health.summary.has_issues %} {{ innodb_health.summary.issues|length }} Issue(s) {% else %} Healthy {% endif %}

Deadlocks{{ info_tooltip("A deadlock occurs when two or more transactions hold locks that the other needs. MySQL automatically detects and rolls back one transaction (the 'victim'). Frequent deadlocks indicate contention issues requiring query or schema optimization.") }} {{ '๐Ÿ”ด' if innodb_health.deadlock.has_deadlock else '๐ŸŸข' }}

{% if innodb_health.deadlock.has_deadlock %} Detected {% else %} None {% endif %}

{% if innodb_health.deadlock.timestamp %}

Last: {{ innodb_health.deadlock.timestamp }}

{% endif %}
Lock Contention{{ info_tooltip("Number of transactions waiting to acquire locks. High values indicate concurrent access to same rows. Consider optimizing transaction scope, adding indexes, or changing isolation level.") }} {{ '๐Ÿ”ด' if innodb_health.lock_contention.lock_waiting_transactions > 5 else '๐ŸŸก' if innodb_health.lock_contention.has_contention else '๐ŸŸข' }}

{{ innodb_health.lock_contention.lock_waiting_transactions }} waiting

{% if innodb_health.lock_contention.history_list_length %}

History: {{ innodb_health.lock_contention.history_list_length }}

{% endif %}
Redo Log{{ info_tooltip("Checkpoint age shows unflushed redo log data. Warning at 80%+ of log capacity, critical at 90%+. High values cause aggressive flushing and performance degradation. Consider increasing innodb_log_file_size.") }} {{ '๐Ÿ”ด' if innodb_health.redo_log.health == 'critical' else '๐ŸŸก' if innodb_health.redo_log.health == 'warning' else '๐ŸŸข' }}

{{ innodb_health.redo_log.checkpoint_age_mb | round(1) }} MB

Checkpoint age

{% if innodb_health.summary.has_issues %}

Active Issues

{% for issue in innodb_health.summary.issues|sort(attribute='severity', reverse=true) %}
{{ '๐Ÿ”ด' if issue.severity == 'critical' else '๐ŸŸก' }}

{{ issue.message }}

Category: {{ issue.category }}

{% endfor %}
{% endif %}
{% if innodb_health.deadlock.has_deadlock %}

Deadlock Details {{ info_tooltip("Shows the last detected deadlock from SHOW ENGINE INNODB STATUS. The 'victim' transaction was automatically rolled back by MySQL. Analyze the queries involved to prevent future deadlocks.") }}

{% if innodb_health.deadlock.timestamp %}
Last detected: {{ innodb_health.deadlock.timestamp }}
{% endif %} {% for trx in innodb_health.deadlock.transactions %}
Transaction {{ loop.index }}
{% if trx.active_time %} {{ trx.active_time }}s active {% endif %} {% if trx.was_rolled_back %} Victim (Rolled Back) {% endif %}
{% if trx.user or trx.thread_id %}
{% if trx.user %}
User: {{ trx.user }}@{{ trx.host or '?' }}
{% endif %} {% if trx.thread_id %}
Thread: {{ trx.thread_id }}
{% endif %}
{% endif %} {% if trx.row_locks or trx.lock_structs %}
{% if trx.row_locks %}
Row Locks: {{ trx.row_locks }}
{% endif %} {% if trx.lock_structs %}
Lock Structs: {{ trx.lock_structs }}
{% endif %} {% if trx.undo_log_entries %}
Undo Entries: {{ trx.undo_log_entries }}
{% endif %}
{% endif %} {% if trx.table or trx.index %}
{% if trx.table %}
Table: {{ trx.table }}
{% endif %} {% if trx.index %}
Index: {{ trx.index }}
{% endif %}
{% endif %} {% if trx.operation or trx.state %}
Operation: {{ trx.operation or trx.state or 'Unknown' }}
{% endif %} {% if trx.query %}

Query:

{% if trx.query|length > 150 %} {% endif %}
{{ trx.query }}
{% if trx.query|length > 150 %}
{{ trx.query|length }} chars โ€ข click Expand to see full query
{% endif %}
{% endif %}
{% endfor %}
{% endif %} {% if innodb_health.lock_contention.has_contention and innodb_health.lock_contention.lock_wait_details %}

Waiting Transactions {{ info_tooltip("Transactions blocked waiting for locks held by other transactions. Long wait times may indicate hot-spot contention. Consider splitting large transactions or adding appropriate indexes.") }}

{% for detail in innodb_health.lock_contention.lock_wait_details %}
Trx {{ detail.trx_id }} {{ detail.wait_seconds }}s waiting
{% if detail.table %}
Table: {{ detail.table }}
{% endif %}
{% endfor %}
{% endif %} {% if innodb_health.hot_indexes.hot_indexes %}

Hot Indexes (Contention) {{ info_tooltip("Indexes experiencing lock waits from SHOW ENGINE INNODB STATUS. These are bottlenecks where multiple transactions compete for locks. Consider query optimization or schema changes.") }}

{% for idx in innodb_health.hot_indexes.hot_indexes %}
{{ idx.index }} {{ idx.contention_count }} hit(s)
Table: {{ idx.table }}
{% if idx.lock_types %}
{% for lock_type in idx.lock_types %} {{ lock_type }} {% endfor %}
{% endif %}
{% endfor %}
{% endif %}

Semaphore / Mutex {{ info_tooltip("Internal InnoDB locking metrics. RW-Shared: read locks (multiple readers). RW-Excl: exclusive write locks. RW-SX: shared-exclusive locks (read that may upgrade). High spin waits or OS waits may indicate internal contention.") }}

{{ innodb_health.semaphore.rw_shared_os_waits | default(0) }}

RW-Shared

{{ innodb_health.semaphore.rw_excl_os_waits | default(0) }}

RW-Excl

{{ innodb_health.semaphore.rw_sx_os_waits | default(0) }}

RW-SX

{{ 'Mutex contention detected' if innodb_health.semaphore.has_mutex_contention else 'No mutex contention' }}

Redo Log Details {{ info_tooltip("LSN is a byte counter that increases with each write. Checkpoint Age = LSN - Last Checkpoint represents unflushed data. If age approaches total redo log size, MySQL forces synchronous flushing.") }}

Log Sequence Number: {{ "{:,}".format(innodb_health.redo_log.log_sequence_number | default(0)) }}
Last Checkpoint: {{ "{:,}".format(innodb_health.redo_log.last_checkpoint | default(0)) }}
Checkpoint Age: {{ innodb_health.redo_log.checkpoint_age_bytes | format_bytes }}
Log I/Os Done: {{ innodb_health.redo_log.log_ios_done | format_number }}
Log I/Os/sec: {{ innodb_health.redo_log.log_ios_per_sec | format_number }}
{% if innodb_health.redo_log.trend %}
Trend: {{ innodb_health.redo_log.trend | capitalize }}
{% endif %}
{% else %}

No Health Data Available

InnoDB health analysis is not available for this snapshot.
Re-run collection to generate health data.

{% endif %}
{{ raw_output }}
{% if innodb_structured %}
{% if innodb_structured.header.timestamp %} Captured: {{ innodb_structured.header.timestamp }} {% endif %} {% if innodb_structured.header.avg_interval %} Avg interval: {{ innodb_structured.header.avg_interval }}s {% endif %}
{{ innodb_output }}
{% if innodb_structured.buffer_pool %}
Buffer Pool Hit Rate {{ info_tooltip("Ratio of page reads satisfied from buffer pool vs disk. Higher is better. Values above 99% indicate excellent caching. Low hit rates suggest buffer pool may be too small for workload.") }}
{{ innodb_structured.buffer_pool.hit_rate_num }}/{{ innodb_structured.buffer_pool.hit_rate_denom }}
{{ "%.1f"|format(innodb_structured.buffer_pool.hit_rate_num / innodb_structured.buffer_pool.hit_rate_denom * 100) }}%
Pool Utilization {{ info_tooltip("Percentage of buffer pool containing actual data pages. High utilization (90%+) is normal for busy databases. Very low values may indicate over-provisioned memory.") }}
{{ innodb_structured.buffer_pool.utilization_pct|default(0) }}%
{{ "{:,}".format(innodb_structured.buffer_pool.database_pages) }} pages
Dirty Pages {{ info_tooltip("Pages modified in memory but not yet written to disk. Some dirty pages are normal. Very high counts may indicate I/O bottleneck or aggressive checkpointing needed.") }}
{{ "{:,}".format(innodb_structured.buffer_pool.modified_pages) }}
{{ innodb_structured.buffer_pool.dirty_pct|default(0) }}% of pool
{% endif %} {% if innodb_structured.transactions %}
History List {{ info_tooltip("Number of undo log pages waiting to be purged. High values (100K+) indicate long-running transactions blocking purge, leading to increased disk usage and slower queries.") }}
{{ "{:,}".format(innodb_structured.transactions.history_list_length) }}
purge lag
Active Transactions {{ info_tooltip("Currently open transactions that haven't committed or rolled back. High counts may indicate connection leaks, stuck queries, or application issues with transaction management.") }}
{{ innodb_structured.transactions.active }}
of {{ innodb_structured.transactions.total_transactions }} total
{% endif %} {% if innodb_structured.row_operations %}
Queries in InnoDB {{ info_tooltip("Queries currently executing inside InnoDB kernel. 'In queue' shows waiting queries. High queue values indicate contention or slow operations blocking other queries.", 'bottom') }}
{{ innodb_structured.row_operations.queries_inside }}
{{ innodb_structured.row_operations.queries_in_queue }} in queue
{% endif %}
{% if innodb_structured.row_operations %}

Row Operations {{ info_tooltip("Real-time throughput of InnoDB row operations. High reads/s with low writes may indicate read-heavy workload. Useful for capacity planning and detecting workload changes.") }}

{{ "%.1f"|format(innodb_structured.row_operations.inserts_per_sec) }}
Inserts/sec
{{ "{:,}".format(innodb_structured.row_operations.rows_inserted) }} total
{{ "%.1f"|format(innodb_structured.row_operations.updates_per_sec) }}
Updates/sec
{{ "{:,}".format(innodb_structured.row_operations.rows_updated) }} total
{{ "%.1f"|format(innodb_structured.row_operations.deletes_per_sec) }}
Deletes/sec
{{ "{:,}".format(innodb_structured.row_operations.rows_deleted) }} total
{{ "%.1f"|format(innodb_structured.row_operations.reads_per_sec) }}
Reads/sec
{{ "{:,}".format(innodb_structured.row_operations.rows_read) }} total
{% endif %} {% if innodb_structured.buffer_pool %}

Buffer Pool & Memory {{ info_tooltip("InnoDB's main memory cache for data and indexes. Typically set to 70-80% of available RAM. 'Made Young' tracks pages promoted to hot end of LRU list; 'Not Made Young' shows pages accessed but not promoted (configured by innodb_old_blocks_time).") }}

Pool Size
{{ "{:,}".format(innodb_structured.buffer_pool.pool_size) }}
Free Buffers
{{ "{:,}".format(innodb_structured.buffer_pool.free_buffers) }}
Database Pages
{{ "{:,}".format(innodb_structured.buffer_pool.database_pages) }}
Modified Pages
{{ "{:,}".format(innodb_structured.buffer_pool.modified_pages) }}
Pending Reads
{{ "{:,}".format(innodb_structured.buffer_pool.pending_reads) }}
Pages Read
{{ "{:,}".format(innodb_structured.buffer_pool.pages_read) }}
Pages Created
{{ "{:,}".format(innodb_structured.buffer_pool.pages_created) }}
Pages Written
{{ "{:,}".format(innodb_structured.buffer_pool.pages_written) }}
Made Young
{{ "{:,}".format(innodb_structured.buffer_pool.pages_made_young) }}
Not Made Young
{{ "{:,}".format(innodb_structured.buffer_pool.pages_not_made_young) }}
Buffer Pool Utilization {{ innodb_structured.buffer_pool.utilization_pct|default(0) }}%
{% endif %} {% if innodb_structured.log %}

Redo Log {{ info_tooltip("Write-ahead log for crash recovery. LSN (Log Sequence Number) is a byte offset that grows with each write. Checkpoint Age = LSN - Last Checkpoint; if it approaches redo log size, performance may degrade as checkpoint flushing is forced.") }}

Log Sequence Number
{{ "{:,}".format(innodb_structured.log.log_sequence_number) }}
Log Flushed To
{{ "{:,}".format(innodb_structured.log.log_flushed_up_to) }}
Last Checkpoint
{{ "{:,}".format(innodb_structured.log.last_checkpoint) }}
Checkpoint Age
{{ "{:,}".format(innodb_structured.log.checkpoint_age|default(0)) }} bytes
Log I/Os Done: {{ "{:,}".format(innodb_structured.log.log_ios_done) }}
{% endif %} {% if innodb_structured.file_io %}

File I/O {{ info_tooltip("Disk operations performed by InnoDB. fsyncs are the most expensive (forces write to physical disk). High fsync rates may indicate write-heavy workload. Read/Write thread counts are configured via innodb_read_io_threads and innodb_write_io_threads.") }}

OS File Reads
{{ "{:,}".format(innodb_structured.file_io.os_file_reads) }}
{{ innodb_structured.file_io.reads_per_sec }}/s
OS File Writes
{{ "{:,}".format(innodb_structured.file_io.os_file_writes) }}
{{ innodb_structured.file_io.writes_per_sec }}/s
OS fsyncs
{{ "{:,}".format(innodb_structured.file_io.os_fsyncs) }}
{{ innodb_structured.file_io.fsyncs_per_sec }}/s
I/O Threads: {{ innodb_structured.file_io.io_threads_count }}
Read Threads: {{ innodb_structured.file_io.read_threads }}
Write Threads: {{ innodb_structured.file_io.write_threads }}
{% endif %} {% if innodb_structured.insert_buffer %}

Insert Buffer & Adaptive Hash Index {{ info_tooltip("Change Buffer (formerly Insert Buffer) defers secondary index updates to reduce random I/O. Adaptive Hash Index builds in-memory hash indexes for frequently accessed data. High hash searches/s vs non-hash indicates AHI is effective. Can be disabled if causing contention.") }}

Ibuf Size
{{ "{:,}".format(innodb_structured.insert_buffer.ibuf_size) }}
Ibuf Free List
{{ "{:,}".format(innodb_structured.insert_buffer.ibuf_free_list) }}
Ibuf Merges
{{ "{:,}".format(innodb_structured.insert_buffer.ibuf_merges) }}
Hash Table Buffers
{{ "{:,}".format(innodb_structured.insert_buffer.hash_table_buffers) }}
Hash Searches/s: {{ innodb_structured.insert_buffer.hash_searches_per_sec }}
Non-Hash Searches/s: {{ innodb_structured.insert_buffer.non_hash_searches_per_sec }}
{% endif %} {% if innodb_structured.transactions %}

Transactions {{ info_tooltip("Transaction ID counter increases with each new transaction. Purge Trx ID shows oldest transaction that purge can clean up. Large gap between these indicates old transactions blocking purge. History List Length grows when purge can't keep up.") }}

Transaction ID Counter
{{ "{:,}".format(innodb_structured.transactions.trx_id_counter) }}
Purge Trx ID
{{ "{:,}".format(innodb_structured.transactions.purge_trx_id) }}
History List Length
{{ "{:,}".format(innodb_structured.transactions.history_list_length) }}
Active / Total
{{ innodb_structured.transactions.active }} / {{ innodb_structured.transactions.total_transactions }}
{% endif %} {% if innodb_structured.background_thread %}

Background Thread {{ info_tooltip("InnoDB master thread loop counters. Active loops handle pending operations (flushing, purging). Idle loops run when server is quiet. Shutdown loops occur during server shutdown. High active:idle ratio indicates sustained load.") }}

srv_active loops: {{ "{:,}".format(innodb_structured.background_thread.srv_active) }}
srv_shutdown loops: {{ "{:,}".format(innodb_structured.background_thread.srv_shutdown) }}
srv_idle loops: {{ "{:,}".format(innodb_structured.background_thread.srv_idle) }}
{% endif %}
{% else %}
{{ innodb_output }}
{% endif %}

Thread Connections {{ info_tooltip("Threads_connected: Active client connections. Threads_running: Actively executing queries (not sleeping). Max_used_connections: High watermark since startup. High running threads may indicate slow queries or insufficient resources.") }}

Query Types {{ info_tooltip("Cumulative count of each query type since server start. Com_select: SELECT queries. Com_insert/update/delete: Write operations. High update:select ratio indicates write-heavy workload.") }}

InnoDB Row Operations {{ info_tooltip("Innodb_rows_read/inserted/updated/deleted: Cumulative row-level operations. High reads typically indicate SELECT-heavy workload. Compare with Com_* counters to understand query efficiency.") }}

Network Bytes {{ info_tooltip("Bytes_sent: Data sent to clients (result sets). Bytes_received: Data from clients (queries). Large sent:received ratio is normal for read-heavy workloads. Sudden spikes may indicate large result sets or full table scans.") }}

All Status Variables {{ info_tooltip("Output from SHOW GLOBAL STATUS. These are runtime counters and metrics that reset on server restart. Use the search box to find specific variables like 'Innodb_', 'Threads_', 'Connections', etc.") }}

Variable Value
Active connections from SHOW FULL PROCESSLIST {{ info_tooltip("Shows all active MySQL connections. ID: Connection thread ID. User: MySQL user. Host: Client IP:port. DB: Current database. Command: Query/Sleep/Connect. Time: Seconds in current state. State: What thread is doing. Info: Current SQL (click to view full query).") }}

Connection Summary

{{ info_tooltip("Summary of connections grouped by User, IP, or both. Active: Currently executing queries (Command='Query'). Sleeping: Idle connections (Command='Sleep'). Other: Connect, Binlog Dump, etc.") }}
Active Sleeping Other Total
Total
ID User Host DB Command Time State Info
Showing - of processes โ€ข Click headers to sort
Per page:
Page of

{{ info_tooltip("Server configuration from SHOW GLOBAL VARIABLES. 'Important' view shows ~30 key variables with health indicators (๐ŸŸข๐ŸŸก๐Ÿ”ด) based on best practices. Health checks consider: buffer pool sizing, connection limits, I/O threads, durability settings, and cache efficiency.") }}

Source: SHOW GLOBAL VARIABLES
{% endblock %}