Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySql Engine differences [duplicate]

Possible Duplicate:
What is InnoDB and MyISAM in MySQL?

in my project database some of table has engine type innoDB and some others Myisam. why it was set like this ?

like image 643
balaphp Avatar asked Dec 12 '22 08:12

balaphp


2 Answers

The 2 major types of table storage engines for MySQL databases are InnoDB and MyISAM. To summarize the differences of features and performance,

  1. InnoDB is newer while MyISAM is older.
  2. InnoDB is more complex while MyISAM is simpler.
  3. InnoDB is more strict in data integrity while MyISAM is loose.
  4. InnoDB implements row-level lock for inserting and updating while MyISAM implements table-level lock.
  5. InnoDB has transactions while MyISAM does not.
  6. InnoDB has foreign keys and relationship contraints while MyISAM does not.
  7. InnoDB has better crash recovery while MyISAM is poor at recovering data integrity at system crashes.
  8. MyISAM has full-text search index while InnoDB has not.

In light of these differences, InnoDB and MyISAM have their unique advantages and disadvantages against each other. They each are more suitable in some scenarios than the other.

Advantages of InnoDB

  1. InnoDB should be used where data integrity comes a priority because it inherently takes care of them by the help of relationship constraints and transactions.
  2. Faster in write-intensive (inserts, updates) tables because it utilizes row-level locking and only hold up changes to the same row that’s being inserted or updated.

Disadvantages of InnoDB

  1. Because InnoDB has to take care of the different relationships between tables, database administrator and scheme creators have to take more time in designing the data models which are more complex than those of MyISAM.
  2. Consumes more system resources such as RAM. As a matter of fact, it is recommended by many that InnoDB engine be turned off if there’s no substantial need for it after installation of MySQL.
  3. No full-text indexing.

Advantages of MyISAM

  1. Simpler to design and create, thus better for beginners. No worries about the foreign relationships between tables.
  2. Faster than InnoDB on the whole as a result of the simpler structure thus much less costs of server resources.
  3. Full-text indexing.
  4. Especially good for read-intensive (select) tables.

Disadvantages of MyISAM

  1. No data integrity (e.g. relationship constraints) check, which then comes a responsibility and overhead of the database administrators and application developers.
  2. Doesn’t support transactions which is essential in critical data applications such as that of banking.
  3. Slower than InnoDB for tables that are frequently being inserted to or updated, because the entire table is locked for any insert or update.

The comparison is pretty straightforward. InnoDB is more suitable for data critical situations that require frequent inserts and updates. MyISAM, on the other hand, performs better with applications that don’t quite depend on the data integrity and mostly just select and display the data.

Reference: Comparison InnoDB and MyISAM

You can also check it out here for further details: MyISAM Or InnoDB MySQL engine?

Hope this helps.

like image 100
AlphaMale Avatar answered Dec 30 '22 18:12

AlphaMale


When you use a MySQL database you can select the storage engine that fits your needs. From what you have said it sounds like you have inherited this project, so the previous developer probably selected different engines when creating tables. They could have also used 3rd party tools and MySQL Workbench with different settings that caused the tables to be created with different storage engines.

Anyway, a quick Google search or a search on this site should give you information as to the differences between the two, as well as their advantages and disadvantages (essentially, table vs. row -level locking, relationship enforcement, transactions and rollback).

Moving forward you can set the default storage engine in your configuration file so that when you create new tables they will be of the same type.

InnoDB is the default engine for MySQL 5.5.

Here is a good conversation to get you started: MyISAM versus InnoDB

like image 41
wellplayed Avatar answered Dec 30 '22 19:12

wellplayed