Home Database Mysql Tutorial MySQL optimization connection optimization sample code

MySQL optimization connection optimization sample code

Mar 16, 2017 pm 02:24 PM

MySQLConnection optimization mainly refers to the parameters involved in the process of the clientconnecting to the database and the database opening the data table and index in response to the client's request Adjustment. Let's discuss it in detail

MySQL optimization aboveCacheOptimization This article mentioned a very important concept, that is, show variables are used to indicate that the system is compiled or configured. Variablevalue in my.cnf. Show status is called the status value. It displays the status information of the current service instance running and is a dynamically changing value. Therefore, it is often used to observe whether the current MySQL is running normally. If it is not normal, then rely on adjusting the static parameters to improve the performance of MySQL. Therefore, understanding the difference between these two concepts is the basis for subsequent tuning.

MySQL connection optimization

I remember once when I connected to MySQL within the company, I could not always connect. After finding the DBA, we investigated the cause and found that the current number of MySQL connections was full. After adjustments, the problem was solved. There are generally two reasons for errors that cause too many connections. The first is that there are indeed many people connecting to MySQL, causing the number of connections to run out. The second is that the max_connections value is too small.

1. Connection parameters (show variables)


mysql> show variables like '%connect%';
+-----------------------------------------------+-----------------+
| Variable_name                 | Value      |
+-----------------------------------------------+-----------------+
| character_set_connection           | utf8      |
| collation_connection             | utf8_general_ci |
| connect_timeout                | 10       |
| disconnect_on_expired_password        | ON       |
| init_connect                 |         |
| max_connect_errors              | 100       |
| max_connections                | 151       |
| max_user_connections             | 0        |
| performance_schema_session_connect_attrs_size | 512       |
+-----------------------------------------------+-----------------+
Copy after login

max_connections means that the MySQL service instance can simultaneously The maximum number of concurrent connections accepted. MySQL actually supports the algorithm of adding one to the maximum number of connections, ensuring that when the number of connections is used up, the super administrator can still establish a connection with the server for management.

max_user_connectionsSet the maximum number of concurrent connections for the specified account.

max_connect_errors When an illegal host maliciously connects to the MySQL server and the errors it encounters reach the set value, MySQL will resolve all connections from the host. But it will be cleared after executing flush hosts.

2. Connection status (show status)

One thing to note is that the variable value (show variables) starts with a lowercase letter, and the status value (show status) begins with a capital letter. This distinction is helpful for memory and classification


mysql> show status like '%connections%';
+-----------------------------------+-------+
| Variable_name           | Value |
+-----------------------------------+-------+
| Connection_errors_max_connections | 0   |
| Connections            | 197  |
| Max_used_connections       | 2   |
+-----------------------------------+-------+
Copy after login

Connection_errors_max_connections When the maximum number of concurrency of MySQL is greater than system variables (show variables) The maximum number of concurrency in max_connections, and therefore the number of rejections, will be recorded in this variable. If the value of Connection_error_max_connections is relatively large, it means that the current system concurrency is relatively high, and you should consider increasing the value of max_connections.

Connections represents the number of connections successfully established since MySQL was started. This value is continuously accumulated.

Max_used_connections represents the maximum number of concurrent connections at the same time since MySQL was started. If this value is greater than max_connections, it indicates that the system is often in a high-concurrency state, and you should consider increasing the maximum number of concurrent connections.

3. Connection thread parameters (thread variabls and status)


##

mysql> show variables like 'thread%';
+--------------------+---------------------------+
| Variable_name   | Value           |
+--------------------+---------------------------+
| thread_cache_size | 9             |
| thread_concurrency | 10            |
| thread_handling  | one-thread-per-connection |
| thread_stack    | 262144          |
+--------------------+---------------------------+
Copy after login

thread_cache_size Set the connection thread cache Number of. This cache is equivalent to the MySQL thread cache pool (thread cache pool), which puts idle connection threads into the connection pool and caches them instead of destroying them immediately. When there is a new connection request, if there is an idle connection in the connection pool, it is used directly. Otherwise, the thread must be re-created. Creating threads is a considerable system overhead. This part of MySQL's thread processing is similar to Nginx's thread processing. When I introduce Nginx's thread processing in the future, I will compare them.

thread_handling The default value is: one-thread-per-connection means providing or creating a thread for each connection to process the request until the request is completed, the connection is destroyed or stored in the cache pool. When the value is no-threads, it means that only one thread is always provided to handle the connection, which is generally used for testing on a single machine.

thread_stack stack means heap. This blog explains the PHP process in detail. You know that processes and threads have unique IDs. The ID system of the process will maintain it, and the ID of the second thread. , is maintained by a specific thread library area. When a process or thread sleeps, the context information of the process must open up an area in the memory to save the context information of the process in order to quickly wake up the program. The default stack size set for each thread of MySQL is: 262144/1024=256k

View thread status information

##

mysql> show status like 'Thread%';
+-------------------+-------+
| Variable_name   | Value |
+-------------------+-------+
| Threads_cached  | 1   |
| Threads_connected | 1   |
| Threads_created  | 2   |
| Threads_running  | 1   |
+-------------------+-------+
Copy after login

Thread_cached

The current number of threads in the thread pool

Thread_connected

The current number of connections<p><code>Thread_cached: 当前连接线程创建数, 如果这个值过高,可以调整threadcachesize 也就是调整线程缓存池的大小。

Thred_runnint: 当前活跃的线程数。

连接请求堆栈

MySQL在很短的时间内,突然收到很多的连接请求时,MySQL会将不能来得及处理的连接请求保存在堆栈中,以便MySQL后续处理。back_log参数设置了堆栈的大小,可以通过如下命令查看:


mysql> show variables like &#39;back_log&#39;;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| back_log   | 80  |
+---------------+-------+
Copy after login

连接异常


mysql> show status like &#39;Aborted%&#39;;
+------------------+-------+
| Variable_name  | Value |
+------------------+-------+
| Aborted_clients | 0   |
| Aborted_connects | 219  |
+------------------+-------+
Copy after login

Aborted_clients MySQL 客户机被异常关闭的次数。

Aborted_connects 试图连接到MySQL服务器而失败的连接次数。

other


mysql> show status like &#39;Slow%&#39;;
+---------------------+-------+
| Variable_name    | Value |
+---------------------+-------+
| Slow_launch_threads | 0   |
| Slow_queries    | 0   |
+---------------------+-------+
Copy after login


mysql> show variables like &#39;slow_launch_time&#39;;
+------------------+-------+
| Variable_name  | Value |
+------------------+-------+
| slow_launch_time | 2   |
+------------------+-------+
Copy after login

Slow_lunch_threads 创建线程的时间过长,超过slow_launch_time的设定值,则会记录。

可以通过使用 Connection_error%来查看连接的错误状态信息:


mysql> show status like &#39;Connection_error%&#39;;
+-----------------------------------+-------+
| Variable_name           | Value |
+-----------------------------------+-------+
| Connection_errors_accept     | 0   |
| Connection_errors_internal    | 0   |
| Connection_errors_max_connections | 0   |
| Connection_errors_peer_address  | 0   |
| Connection_errors_select     | 0   |
| Connection_errors_tcpwrap     | 0   |
+-----------------------------------+-------+
Copy after login

Connection_errors_peer_address 查找MySQL客户机IP地址是发生的错误数。

The above is the detailed content of MySQL optimization connection optimization sample code. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

MySQL's Role: Databases in Web Applications MySQL's Role: Databases in Web Applications Apr 17, 2025 am 12:23 AM

The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

How to start mysql by docker How to start mysql by docker Apr 15, 2025 pm 12:09 PM

The process of starting MySQL in Docker consists of the following steps: Pull the MySQL image to create and start the container, set the root user password, and map the port verification connection Create the database and the user grants all permissions to the database

Laravel Introduction Example Laravel Introduction Example Apr 18, 2025 pm 12:45 PM

Laravel is a PHP framework for easy building of web applications. It provides a range of powerful features including: Installation: Install the Laravel CLI globally with Composer and create applications in the project directory. Routing: Define the relationship between the URL and the handler in routes/web.php. View: Create a view in resources/views to render the application's interface. Database Integration: Provides out-of-the-box integration with databases such as MySQL and uses migration to create and modify tables. Model and Controller: The model represents the database entity and the controller processes HTTP requests.

Solve database connection problem: a practical case of using minii/db library Solve database connection problem: a practical case of using minii/db library Apr 18, 2025 am 07:09 AM

I encountered a tricky problem when developing a small application: the need to quickly integrate a lightweight database operation library. After trying multiple libraries, I found that they either have too much functionality or are not very compatible. Eventually, I found minii/db, a simplified version based on Yii2 that solved my problem perfectly.

How to install mysql in centos7 How to install mysql in centos7 Apr 14, 2025 pm 08:30 PM

The key to installing MySQL elegantly is to add the official MySQL repository. The specific steps are as follows: Download the MySQL official GPG key to prevent phishing attacks. Add MySQL repository file: rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm Update yum repository cache: yum update installation MySQL: yum install mysql-server startup MySQL service: systemctl start mysqld set up booting

Centos install mysql Centos install mysql Apr 14, 2025 pm 08:09 PM

Installing MySQL on CentOS involves the following steps: Adding the appropriate MySQL yum source. Execute the yum install mysql-server command to install the MySQL server. Use the mysql_secure_installation command to make security settings, such as setting the root user password. Customize the MySQL configuration file as needed. Tune MySQL parameters and optimize databases for performance.

Laravel framework installation method Laravel framework installation method Apr 18, 2025 pm 12:54 PM

Article summary: This article provides detailed step-by-step instructions to guide readers on how to easily install the Laravel framework. Laravel is a powerful PHP framework that speeds up the development process of web applications. This tutorial covers the installation process from system requirements to configuring databases and setting up routing. By following these steps, readers can quickly and efficiently lay a solid foundation for their Laravel project.

MySQL and phpMyAdmin: Core Features and Functions MySQL and phpMyAdmin: Core Features and Functions Apr 22, 2025 am 12:12 AM

MySQL and phpMyAdmin are powerful database management tools. 1) MySQL is used to create databases and tables, and to execute DML and SQL queries. 2) phpMyAdmin provides an intuitive interface for database management, table structure management, data operations and user permission management.

See all articles