Table of Contents
Performance Optimization
Index
Query cache
Query Analysis
Optimizing multi-table queries
Using temporary tables
Optimizing table design
Adjust server settings
Home Database Mysql Tutorial In-depth understanding of MySQL advanced drifting (6)

In-depth understanding of MySQL advanced drifting (6)

Mar 08, 2017 pm 01:57 PM

Performance Optimization

Index

The index points to a location in the database where the specific data is located. Colleagues create an index on the column to arrange information on this column. When the server needs to access this information for a query, it will know where to look because the index points to the relevant location.

If a column involves query, grouping, and sorting, the index will be able to achieve the effect of improving performance.
Indices with many duplicate values ​​will not produce good results.
You can use tables to join multiple non-unique indexes to improve performance.
The more indexes, the better the performance is not necessarily. Adding an index does not necessarily improve performance.

Query cache

When running a select query, MySQL4.x will record the query and return results. This is achieved by saving the result set in a special cache each time a select query is made. Then, when the server is asked to do the same query again, MySQL will retrieve the results from the cache rather than running the query again. This feature is enabled by default.

Note that once the table changes, cached queries using this table become invalid and will be deleted from the cache. This prevents queries from returning inaccurate data from the old table. Tables that change frequently will not benefit from caching. In this case, you can consider not using the cache, and you can add an option sql_no_cache to achieve this.

Query Analysis

Adding an explain keyword at the beginning of the select query will tell MySQL to return a chart indicating that if this query is processed, this chart involves which query will access Information about the table and the number of rows the query expects to return. This information can be used to see which tables can be indexed to speed up execution and analyze where bottlenecks are.

Through the displayed results of the query, you can know where to add indexes and make quick corrections.

Optimizing multi-table queries

A subquery is a select statement nested in another select statement. Subqueries are often used to break a complex query into a series of logical steps, or to use the results of other queries to answer a query. The result is that instead of executing two or more separate queries, a simple query containing one or more subqueries can be executed.

MySQL can optimize joins better than subqueries, so if you find that load averages on your MySQL server have reached unacceptably high levels, you should examine your application code and try to rewrite it as Subqueries for joins and join sequences.

You can transform inefficient subqueries into more efficient joins by effectively using MySQL's collection capabilities and modifying procedures.
If you want to avoid using nested queries in the middle, you can also use session-based server variables.

Using temporary tables

MySQL also allows the creation of temporary tables using the create temporary table command. This kind of table is so called because it only exists for a single MySQL session. When the client using these tables closes the connection to the MySQL server, it will be automatically deleted.

Because temporary tables are stored in memory, they are significantly faster than disk-based tables. Results can be effectively used as an intermediate storage area to increase the speed of query execution, help split complex ones into simpler components, or as a substitute for subquery and join support.

Optimizing table design

In order to make the query more refined, some factors in table design need to be considered. First of all, if the table that is frequently queried will undergo many changes, the way to improve performance is to use fixed-length fields instead of variable-length fields. Although using fixed-length fields will waste more disk space, from a query perspective, MySQL processes fixed-length fields faster than variable-length fields.

Another technique to improve performance is to use the optimize table command to handle tables that frequently need to be modified. Frequently modifying the table can cause disk fragmentation, causing extra time to be read from unused blocks of space in order to obtain the desired data.

When considering improving performance, also check whether you need to target all tables that have been created. Extra tables mean reduced performance. For tables that do not need to be merged, an attempt should be made to match the joined columns.

Adjust server settings

If you want the server to run more efficiently, the best solution is to increase the memory space and use a larger and faster disk. But more often than not, conditions don’t allow it. At this point, we need some general techniques for improving the server.

Adjust server variables. The key_buffer_size variable controls the amount of memory that can be used by the MySQL index buffer. The higher the value, the more memory the index can use and the better the performance. Generally, this value is kept at 25% to 30% of the total available memory. The table_cache variable controls the amount of memory that the table cache can use, and the total number of table opens that MySQL can handle at one time. For very busy servers with many databases and tables, this value should be increased and modified using set.

Once a global server variable is modified, these variables will exist until the server is shut down, but after the server is restarted, the variables will return to their default state. So it's better to make permanent changes.


The above is the detailed content of In-depth understanding of MySQL advanced drifting (6). 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)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks 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)

PHP's big data structure processing skills PHP's big data structure processing skills May 08, 2024 am 10:24 AM

Big data structure processing skills: Chunking: Break down the data set and process it in chunks to reduce memory consumption. Generator: Generate data items one by one without loading the entire data set, suitable for unlimited data sets. Streaming: Read files or query results line by line, suitable for large files or remote data. External storage: For very large data sets, store the data in a database or NoSQL.

How to use MySQL backup and restore in PHP? How to use MySQL backup and restore in PHP? Jun 03, 2024 pm 12:19 PM

Backing up and restoring a MySQL database in PHP can be achieved by following these steps: Back up the database: Use the mysqldump command to dump the database into a SQL file. Restore database: Use the mysql command to restore the database from SQL files.

How to optimize MySQL query performance in PHP? How to optimize MySQL query performance in PHP? Jun 03, 2024 pm 08:11 PM

MySQL query performance can be optimized by building indexes that reduce lookup time from linear complexity to logarithmic complexity. Use PreparedStatements to prevent SQL injection and improve query performance. Limit query results and reduce the amount of data processed by the server. Optimize join queries, including using appropriate join types, creating indexes, and considering using subqueries. Analyze queries to identify bottlenecks; use caching to reduce database load; optimize PHP code to minimize overhead.

How to insert data into a MySQL table using PHP? How to insert data into a MySQL table using PHP? Jun 02, 2024 pm 02:26 PM

How to insert data into MySQL table? Connect to the database: Use mysqli to establish a connection to the database. Prepare the SQL query: Write an INSERT statement to specify the columns and values ​​to be inserted. Execute query: Use the query() method to execute the insertion query. If successful, a confirmation message will be output.

How to use MySQL stored procedures in PHP? How to use MySQL stored procedures in PHP? Jun 02, 2024 pm 02:13 PM

To use MySQL stored procedures in PHP: Use PDO or the MySQLi extension to connect to a MySQL database. Prepare the statement to call the stored procedure. Execute the stored procedure. Process the result set (if the stored procedure returns results). Close the database connection.

How to create a MySQL table using PHP? How to create a MySQL table using PHP? Jun 04, 2024 pm 01:57 PM

Creating a MySQL table using PHP requires the following steps: Connect to the database. Create the database if it does not exist. Select a database. Create table. Execute the query. Close the connection.

How to fix mysql_native_password not loaded errors on MySQL 8.4 How to fix mysql_native_password not loaded errors on MySQL 8.4 Dec 09, 2024 am 11:42 AM

One of the major changes introduced in MySQL 8.4 (the latest LTS release as of 2024) is that the "MySQL Native Password" plugin is no longer enabled by default. Further, MySQL 9.0 removes this plugin completely. This change affects PHP and other app

The difference between oracle database and mysql The difference between oracle database and mysql May 10, 2024 am 01:54 AM

Oracle database and MySQL are both databases based on the relational model, but Oracle is superior in terms of compatibility, scalability, data types and security; while MySQL focuses on speed and flexibility and is more suitable for small to medium-sized data sets. . ① Oracle provides a wide range of data types, ② provides advanced security features, ③ is suitable for enterprise-level applications; ① MySQL supports NoSQL data types, ② has fewer security measures, and ③ is suitable for small to medium-sized applications.

See all articles