Home  >  Article  >  Database  >  How to choose the appropriate engine for MySQL and perform engine conversion

How to choose the appropriate engine for MySQL and perform engine conversion

一个新手
一个新手Original
2017-09-30 10:25:46991browse

How do we choose the right engine? Here is a simple summary: "Unless you need to use some features that InnoDB does not have, and there is no other way to replace it, you should give priority to the InnoDB engine."

Unless it is absolutely necessary, Otherwise, it is not recommended to mix multiple storage engines, otherwise it may cause a series of complex problems and some potential bugs.

Several major factors to consider when using different engines:

1. Transaction

If necessary Transaction support, then InnoDB or XtraDB are currently the most stable. If transactions are not required and the main operations are SELECT and INSERT, MyISAM is a good choice.

2. Backup

If you need online hot backup, InnoDB is the basic choice.

3. Crash recovery

When the amount of data is relatively large, how to quickly recover after a system crash is an issue that needs to be considered, and this is also The reason many people choose InnoDB even if they don't need transaction support.

Conversion table engine:

1.ALTER TABLE

The simplest The method is the ALTER TABLE statement:

 mysql> ALTER TABLE mytable ENGINE = InnoDB;

This syntax is suitable for any storage engine, but it takes a long time to execute.

The storage engine of the conversion table will lose all features related to the original engine.

2. Export and Import

You can use the mysqldump tool to export the data to a file, and then modify the CREATE TABLE statement in the file Storage engine, please pay attention to modify the table name.

At the same time, please note that the mysqldump tool will automatically add the DROP TABLE statement before the CREATE TABLE statement by default to be careful of data loss.

3. Creation and query

To combine the first and second methods, first create a new storage engine table, and then use INSTER ...SELECT syntax to import data

         mysql> CREATE TABLE innodb_table LIKE myisam_table;
       mysql>ALTER TABLE innodb_table ENGINE=InnoDB;
       mysql>INSTER INTO innodb_table SELECT * FROM myisam_table;

If the amount of data is large, it can be processed in batches, and transaction submission operations are performed for each piece of data to avoid undo caused by large transactions. Percona Toolkit provides a pt-online-schema-change tool, which can be executed simply and conveniently to avoid errors caused by manual operations.

The above is the detailed content of How to choose the appropriate engine for MySQL and perform engine conversion. For more information, please follow other related articles on the PHP Chinese website!

Statement:
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