Home Database Mysql Tutorial Summary of Mysql database optimization methods (must read)

Summary of Mysql database optimization methods (must read)

Aug 18, 2018 pm 05:52 PM
mysql optimization

This article brings you a summary of Mysql database optimization methods. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

There is no end to learning, and database optimization is divided into various aspects. Here, I have made a relatively complete summary and shared it with colleagues who are working or studying.

Database optimization is divided into the following seven major aspects:

1 , The design of the table must conform to Three Normal Forms (Appropriate inverse three normal forms can also be);

2. Add appropriate indexes, indexes have a great impact on query speed , indexes must be added (primary key index, unique index, ordinary index, full-text index);

3. Add appropriate stored procedures, triggers, transactions, etc.;

4 , read and write separation (master-slave database);

5. Some optimizations of sql statements (sql statements with relatively slow query execution speed);

6. Table partitioning (Table splitting: Divide a large table into multiple tables. Partition: Allocate the contents of a table to different areas for storage );

7. Upgrade the mysql server hardware.

Next I will explain the optimization method in detail.

First and third normal form

First normal form:

Atomicity: The fields in the table cannot be divided any more. As long as it is a relational database, it will automatically meet the first normal form

Relational database (with the concept of rows and columns): mysql , sql server, oracle, db2, infomix, sybase, postgresql, when designing, first have the library->table->field->specific record (content): when storing data, the fields must be designed.

Non-relational database (generally referred to as nosql database): memcache, redis, momgodb, etc.

Second Normal Form:

There are no identical records in a table, which can be solved by using a primary key

Third Normal Form:

Redundant data cannot be stored in the table

Reverse three paradigm design:

##Album table1Life1002Work Photo100
ID Album name Album views
Photo
Photo List##ID123

If we want to calculate the views of an album, we can add the album views field to the album table, and update the album views at the same time when browsing photos.

2. Turn on slow query

Mysql slow query is turned off by default, and SQL statements that exceed 10 seconds are recorded by default.

1. View the slow query record time:

##

show variables like ‘long_query_time’;
Copy after login

2. Modify the slow query time:

set long_query_time=2;
Copy after login

3. Test through the following function:

benchmark(count,expr)   函数可以测试执行count次expr操作需要的时间
Copy after login

3. Create index

1. Primary key index Features:

(1) There is at most one primary key index in a table

(2) One primary key index can point to multiple columns

( 3) The columns of the primary key index cannot have duplicate values, nor can they have null

(4) The primary key index is highly efficient.

2. Characteristics of unique indexes:

(1) There can be multiple unique indexes in a table

(2) A unique index can point to multiple columns,

(3) If not null is not specified on the unique index, the column can be empty, and there can be multiple nulls at the same time,

(4) The unique index is more efficient.

3. Ordinary index:

Using ordinary index is mainly to improve query efficiency

4 , Full-text index

The full-text index mysql5.5 that comes with mysql does not support Chinese, but supports English. It also requires that the storage engine of the table is myisam. If you want to support Chinese, there are two options,

(1) Use aphinx Chinese version coreseek (to replace the full-text index)

(2) Plug-in mysqlcft.

Main problems with adding indexes:

(1) Indexes should be created for fields that are frequently used as query conditions,

the uniqueness is too high Poor fields are not suitable for creating an index alone, even if they are frequently used as query conditions, Fields that are updated very frequently are not suitable for creating an index

(2) will not appear in the WHERE clause Fields should not be indexed. The index comes at a cost. Although the query speed is improved, it

will affect the efficiency of additions and deletions. And the index file will take up space.

4. Table partitioning and partitioning

##Vertical partitioning Table (content main table additional table):
Content main table: stores some public information of various data, such as the name of the data, addition time, etc.,

You can use multiple additional tables, which store unique information about some data.

The main reason is that the data in the main content table is accessed more frequently.

Features: different table structures


Horizontal table splitting:

The data exists in different tables

.

Features: The same table structure


##Partition:


is to store a table in different areas of the disk, but it is still one table.

Basic concepts:

(1)Range (range) – This mode allows the data to be divided into different scope. For example, a table can be divided into several partitions by year.

(2)List (predefined list) – This mode allows the system to split data by the value of a predefined list.

(3)Hash (Hash) – This mode allows calculation of the Hash Key of one or more columns of the table, and finally the data corresponding to different values ​​​​of this Hash code Areas are divided. For example, you can create a table that partitions the table's primary key.

(4)Key(键值)-上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。

分区表的限制:

(1)只能对数据表的整型列进行分区,或者数据列可以通过分区函数转化成整型列。

(2)最大分区数目不能超过1024。

(3)如果含有唯一索引或者主键,则分区列必须包含在所有的唯一索引或者主键在内。

(4)按日期进行分区很非常适合,因为很多日期函数可以用。但是对于字符串来说合适的分区函数不太多。

五、并发处理的锁机制

锁机制:在执行时,只有一个用户获得锁,其他用户处于阻塞状态,需要等待解锁。

mysql 的锁有以下几种形式:

表级锁:开销小,加锁快,发生锁冲突的概率最高,并发度最低。myisam引擎属于这种类型。

行级锁:开销大,加锁慢,发生锁冲突的概率最低,并发度也最高。innodb属于这种类型。

表锁的演示:

1.对myisam表的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其他进程的操作。

2.表添加读锁后,其他进程对该表只能查询操作,修改时会被阻塞。

3.当前进程,能够执行查询操作,不能执行修改操作。不能对没有锁定的表进行操作。

4.锁表的语法:

lock table 表名 read|write
Copy after login

5.也可以锁定多个表

6.对myisam表的写操作(加写锁),会阻塞其他进程对锁定表的任何操作,不能读写,

7.表加写锁后,则只有当前进程对锁定的表,可以执行任何操作。其他进程的操作会被阻塞。

 行锁的演示:

1.innodb存储引擎是通过给索引上的索引项加锁来实现的,这就意味着:只有通过索引条件检索数据,innodb才会使用行级锁,否则,innodb使用表锁。

2.开启行锁后,当前进程在针对某条记录执行操作时,其他进程不能操作和当前进程相同id的记录。

php里面有文件锁,在实际的项目中多数使用文件锁,因为表锁,会阻塞,当对一些表添加写锁后,其他进程就不能操作了。这样会阻塞整个网站,会拖慢网站的速度。

相关推荐:



Photo Name Album ID Views
My puppy 1 49
My kitten 1 51
My colleagues 2 100

The above is the detailed content of Summary of Mysql database optimization methods (must read). 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: An Introduction to the World's Most Popular Database MySQL: An Introduction to the World's Most Popular Database Apr 12, 2025 am 12:18 AM

MySQL is an open source relational database management system, mainly used to store and retrieve data quickly and reliably. Its working principle includes client requests, query resolution, execution of queries and return results. Examples of usage include creating tables, inserting and querying data, and advanced features such as JOIN operations. Common errors involve SQL syntax, data types, and permissions, and optimization suggestions include the use of indexes, optimized queries, and partitioning of tables.

How to connect to the database of apache How to connect to the database of apache Apr 13, 2025 pm 01:03 PM

Apache connects to a database requires the following steps: Install the database driver. Configure the web.xml file to create a connection pool. Create a JDBC data source and specify the connection settings. Use the JDBC API to access the database from Java code, including getting connections, creating statements, binding parameters, executing queries or updates, and processing results.

MySQL's Place: Databases and Programming MySQL's Place: Databases and Programming Apr 13, 2025 am 12:18 AM

MySQL's position in databases and programming is very important. It is an open source relational database management system that is widely used in various application scenarios. 1) MySQL provides efficient data storage, organization and retrieval functions, supporting Web, mobile and enterprise-level systems. 2) It uses a client-server architecture, supports multiple storage engines and index optimization. 3) Basic usages include creating tables and inserting data, and advanced usages involve multi-table JOINs and complex queries. 4) Frequently asked questions such as SQL syntax errors and performance issues can be debugged through the EXPLAIN command and slow query log. 5) Performance optimization methods include rational use of indexes, optimized query and use of caches. Best practices include using transactions and PreparedStatemen

Why Use MySQL? Benefits and Advantages Why Use MySQL? Benefits and Advantages Apr 12, 2025 am 12:17 AM

MySQL is chosen for its performance, reliability, ease of use, and community support. 1.MySQL provides efficient data storage and retrieval functions, supporting multiple data types and advanced query operations. 2. Adopt client-server architecture and multiple storage engines to support transaction and query optimization. 3. Easy to use, supports a variety of operating systems and programming languages. 4. Have strong community support and provide rich resources and solutions.

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.

See all articles