MySQL server variables control server behavior, while status variables reflect running status. 1. Server variables (system variables) determine server behavior, such as connection restrictions, cache size, etc., which are divided into global variables and session variables. They can be viewed through SHOW VARIABLES and modified some variables with SET, but some read-only needs to be set in the configuration file; 2. Status variables are read-only variables that display the running status, such as the number of queries, connections, etc., and viewed through SHOW STATUS for performance monitoring; 3. Use suggestions include distinguishing the concepts of the two, adjusting the configuration according to monitoring, avoiding blind replication of the configuration, and regularly collecting indicators for analysis.
MySQL server variables and status variables are key parts of understanding database running status and performance tuning. Many people have used MySQL for a long time, but they are not clear about the differences and uses of these two variables. Simply put, server variables control the behavior of MySQL, while status variables reflect the current running status of MySQL.

1. What is Server Variables?
Server variables are also called system variables, which determine how the MySQL server behaves. For example, the number of connections limits, cache size, log settings, etc. are all controlled through these variables.

- Classification :
- Global variables (global): affect the entire server.
- Session variable (session): only affects the current connection.
For example: The variable max_connections
determines how many concurrent connections MySQL allows at most. If the setting is too small, the connection may be rejected; if it is too large, it may waste resources.
You can view all server variables currently using the following command:

SHOW VARIABLES;
Or find specific variables:
SHOW VARIABLES LIKE 'max_connections';
An example of modifying a global variable:
SET GLOBAL max_connections = 1000;
Note: Some variables are read-only and cannot be modified dynamically. They can only be set in configuration files (such as my.cnf or my.ini) and restart and take effect.
2. What are Status Variables?
Status variables reflect what MySQL is doing and how it runs. For example, how many queries have been processed, how many tables have been opened, what is the hit rate of the buffer pool, etc.
- They are read-only and you cannot modify these values ??directly.
How to view all status variables:
SHOW STATUS;
You can also add LIKE
conditional filtering:
SHOW STATUS LIKE 'Threads_connected';
Several common useful state variables include:
-
Queries
: The total number of queries processed by the server. -
Threads_connected
: How many client connections are currently there. -
Innodb_buffer_pool_reads
: The number of times data is read from disk. The higher this number indicates that the lower the buffer pool hit rate and may require expansion. -
Slow_queries
: The number of slow queries, and analyze problems together with the slow queries log.
3. Common misunderstandings and usage suggestions
Many newbies are prone to confuse server variables and status variables. In fact, just remember one thing:
server variables are "settings" and status variables are "results" .
Recommended usage:
- After adjusting the server variables, observe whether the corresponding status variables have expected changes.
- Do not blindly copy the configuration on the Internet. The load of each environment is different and should be adjusted according to actual monitoring.
- Certain variables can affect performance or stability, such as
innodb_buffer_pool_size
setting improperly may lead to insufficient memory or performance degradation. - If you are a DBA or operation and maintenance staff, it is recommended to regularly collect status variables indicators for trend analysis and capacity planning.
4. How to use it in combination with monitoring tools?
Nowadays, many monitoring tools (such as Prometheus Grafana, Zabbix, and Percona Monitoring Plugins) support automatic acquisition of MySQL status variables and visual display.
For example, you can monitor:
- Queries per second (QPS): The rate of change based on
Queries
. - Slow query growth: Monitor
Slow_queries
. - Buffer pool hit rate: calculated by
Innodb_buffer_pool_read_requests
andInnodb_buffer_pool_reads
.
If you write scripts yourself to monitor, you can also perform SHOW GLOBAL STATUS
regularly and record changes in key metrics.
Basically that's it. Understanding the difference and usage of server variables and status variables is the first step to master MySQL performance tuning. Although not complicated, details are easy to ignore.
The above is the detailed content of Understanding MySQL server variables and status variables. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

GTID (Global Transaction Identifier) ??solves the complexity of replication and failover in MySQL databases by assigning a unique identity to each transaction. 1. It simplifies replication management, automatically handles log files and locations, allowing slave servers to request transactions based on the last executed GTID. 2. Ensure consistency across servers, ensure that each transaction is applied only once on each server, and avoid data inconsistency. 3. Improve troubleshooting efficiency. GTID includes server UUID and serial number, which is convenient for tracking transaction flow and accurately locate problems. These three core advantages make MySQL replication more robust and easy to manage, significantly improving system reliability and data integrity.

MySQL main library failover mainly includes four steps. 1. Fault detection: Regularly check the main library process, connection status and simple query to determine whether it is downtime, set up a retry mechanism to avoid misjudgment, and can use tools such as MHA, Orchestrator or Keepalived to assist in detection; 2. Select the new main library: select the most suitable slave library to replace it according to the data synchronization progress (Seconds_Behind_Master), binlog data integrity, network delay and load conditions, and perform data compensation or manual intervention if necessary; 3. Switch topology: Point other slave libraries to the new master library, execute RESETMASTER or enable GTID, update the VIP, DNS or proxy configuration to

The steps to connect to the MySQL database are as follows: 1. Use the basic command format mysql-u username-p-h host address to connect, enter the username and password to log in; 2. If you need to directly enter the specified database, you can add the database name after the command, such as mysql-uroot-pmyproject; 3. If the port is not the default 3306, you need to add the -P parameter to specify the port number, such as mysql-uroot-p-h192.168.1.100-P3307; In addition, if you encounter a password error, you can re-enter it. If the connection fails, check the network, firewall or permission settings. If the client is missing, you can install mysql-client on Linux through the package manager. Master these commands

InnoDB is MySQL's default storage engine because it outperforms other engines such as MyISAM in terms of reliability, concurrency performance and crash recovery. 1. It supports transaction processing, follows ACID principles, ensures data integrity, and is suitable for key data scenarios such as financial records or user accounts; 2. It adopts row-level locks instead of table-level locks to improve performance and throughput in high concurrent write environments; 3. It has a crash recovery mechanism and automatic repair function, and supports foreign key constraints to ensure data consistency and reference integrity, and prevent isolated records and data inconsistencies.

IndexesinMySQLimprovequeryspeedbyenablingfasterdataretrieval.1.Theyreducedatascanned,allowingMySQLtoquicklylocaterelevantrowsinWHEREorORDERBYclauses,especiallyimportantforlargeorfrequentlyqueriedtables.2.Theyspeedupjoinsandsorting,makingJOINoperation

MySQL's default transaction isolation level is RepeatableRead, which prevents dirty reads and non-repeatable reads through MVCC and gap locks, and avoids phantom reading in most cases; other major levels include read uncommitted (ReadUncommitted), allowing dirty reads but the fastest performance, 1. Read Committed (ReadCommitted) ensures that the submitted data is read but may encounter non-repeatable reads and phantom readings, 2. RepeatableRead default level ensures that multiple reads within the transaction are consistent, 3. Serialization (Serializable) the highest level, prevents other transactions from modifying data through locks, ensuring data integrity but sacrificing performance;

MySQL transactions follow ACID characteristics to ensure the reliability and consistency of database transactions. First, atomicity ensures that transactions are executed as an indivisible whole, either all succeed or all fail to roll back. For example, withdrawals and deposits must be completed or not occur at the same time in the transfer operation; second, consistency ensures that transactions transition the database from one valid state to another, and maintains the correct data logic through mechanisms such as constraints and triggers; third, isolation controls the visibility of multiple transactions when concurrent execution, prevents dirty reading, non-repeatable reading and fantasy reading. MySQL supports ReadUncommitted and ReadCommi.

To add MySQL's bin directory to the system PATH, it needs to be configured according to the different operating systems. 1. Windows system: Find the bin folder in the MySQL installation directory (the default path is usually C:\ProgramFiles\MySQL\MySQLServerX.X\bin), right-click "This Computer" → "Properties" → "Advanced System Settings" → "Environment Variables", select Path in "System Variables" and edit it, add the MySQLbin path, save it and restart the command prompt and enter mysql--version verification; 2.macOS and Linux systems: Bash users edit ~/.bashrc or ~/.bash_
