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

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

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: The Ease of Data Management for Beginners MySQL: The Ease of Data Management for Beginners Apr 09, 2025 am 12:07 AM

MySQL is suitable for beginners because it is simple to install, powerful and easy to manage data. 1. Simple installation and configuration, suitable for a variety of operating systems. 2. Support basic operations such as creating databases and tables, inserting, querying, updating and deleting data. 3. Provide advanced functions such as JOIN operations and subqueries. 4. Performance can be improved through indexing, query optimization and table partitioning. 5. Support backup, recovery and security measures to ensure data security and consistency.

MySQL: Simple Concepts for Easy Learning MySQL: Simple Concepts for Easy Learning Apr 10, 2025 am 09:29 AM

MySQL is an open source relational database management system. 1) Create database and tables: Use the CREATEDATABASE and CREATETABLE commands. 2) Basic operations: INSERT, UPDATE, DELETE and SELECT. 3) Advanced operations: JOIN, subquery and transaction processing. 4) Debugging skills: Check syntax, data type and permissions. 5) Optimization suggestions: Use indexes, avoid SELECT* and use transactions.

How to open phpmyadmin How to open phpmyadmin Apr 10, 2025 pm 10:51 PM

You can open phpMyAdmin through the following steps: 1. Log in to the website control panel; 2. Find and click the phpMyAdmin icon; 3. Enter MySQL credentials; 4. Click "Login".

How to create navicat premium How to create navicat premium Apr 09, 2025 am 07:09 AM

Create a database using Navicat Premium: Connect to the database server and enter the connection parameters. Right-click on the server and select Create Database. Enter the name of the new database and the specified character set and collation. Connect to the new database and create the table in the Object Browser. Right-click on the table and select Insert Data to insert the data.

MySQL and SQL: Essential Skills for Developers MySQL and SQL: Essential Skills for Developers Apr 10, 2025 am 09:30 AM

MySQL and SQL are essential skills for developers. 1.MySQL is an open source relational database management system, and SQL is the standard language used to manage and operate databases. 2.MySQL supports multiple storage engines through efficient data storage and retrieval functions, and SQL completes complex data operations through simple statements. 3. Examples of usage include basic queries and advanced queries, such as filtering and sorting by condition. 4. Common errors include syntax errors and performance issues, which can be optimized by checking SQL statements and using EXPLAIN commands. 5. Performance optimization techniques include using indexes, avoiding full table scanning, optimizing JOIN operations and improving code readability.

How to create a new connection to mysql in navicat How to create a new connection to mysql in navicat Apr 09, 2025 am 07:21 AM

You can create a new MySQL connection in Navicat by following the steps: Open the application and select New Connection (Ctrl N). Select "MySQL" as the connection type. Enter the hostname/IP address, port, username, and password. (Optional) Configure advanced options. Save the connection and enter the connection name.

How to recover data after SQL deletes rows How to recover data after SQL deletes rows Apr 09, 2025 pm 12:21 PM

Recovering deleted rows directly from the database is usually impossible unless there is a backup or transaction rollback mechanism. Key point: Transaction rollback: Execute ROLLBACK before the transaction is committed to recover data. Backup: Regular backup of the database can be used to quickly restore data. Database snapshot: You can create a read-only copy of the database and restore the data after the data is deleted accidentally. Use DELETE statement with caution: Check the conditions carefully to avoid accidentally deleting data. Use the WHERE clause: explicitly specify the data to be deleted. Use the test environment: Test before performing a DELETE operation.

How to execute sql in navicat How to execute sql in navicat Apr 08, 2025 pm 11:42 PM

Steps to perform SQL in Navicat: Connect to the database. Create a SQL Editor window. Write SQL queries or scripts. Click the Run button to execute a query or script. View the results (if the query is executed).

See all articles