So,many of us who use MySQL are familiar with these terms.Only familiar!!!!!!…right??
Have you ever wondered about what these terms actually mean and difference b/w them?No issues..”Genesis” is all about unlocking such issues….So letz start…
These 2 are types of storage engines.So 1st question
What is a Storage Engine?
- The storage-engine is what will store, handle, and retrieve information for a particular table.
- MySQL can use several different formats for storing data on disk, these are called storage engines or table types. phpMyAdmin allows a user to change their storage engine for a particular table through the operations tab.These formats means sometimes you want temporary data(hash based),sometimes you want row level locking,page-level locking,or u want your data should be stored remotely etc
- You can select the storage engine to use on a server, database and even table basis, providing you with the maximum amount of flexibility when it comes to choosing how your information is stored, how it is indexed and what combination of performance and functionality you want to use with your data.
The figure below is self explanatory and simply explains position of storage engine in mysql architecture!!!!
4.The interface between the second and third layers is a single API not specific to any given storage engine. This API is made up of roughly 20 low-level functions that perform operations such as “begin a transaction” or “fetch the row that has this primary key” and so on. The storage engines don’t deal with SQL or communicate with each other; they simply respond to requests from the higher levels within MySQL.
Now letz start with MyISAM(salient features)
- ISAM(Indexed Sequential Access Method) .It was the only storage engine available until MySQL 3.23, when the improved
MyISAMengine was introduced as the default.
- Data in MyISAM tables is split between three different files on the disk. One for the table format, another for the data, and lastly a third for the indexes.
- Text/Blob fields are able to be fully-indexed which is of great importance to search functions
- it lacks transaction capabilities.
- uses table-level locking.
- With table-level locking, a database with a high number of row inserts or updates becomes a performance bottleneck as the table is locked while data is added. Luckily this limitation also works well within the restrictions of a non-transaction database.
- Relatively new,so ppl are still unsure about itz performance and reliability.
- transaction-safe meaning data-integrity is maintained throughout the entire query process.
- InnoDB provides row-locking, meaning while one query is busy updating or inserting a row, another query can update a different row at the same time. These features increase multi-user concurrency and performance.
- Because of its row-locking feature InnoDB is said to thrive in high load environments. Its CPU efficiency is probably not matched by any other disk-based relational database engine.
InnoDB vs MyISAM
1) InnoDB maintains excellent data integrity at the cost of storage engine housekeeping, If you value your data, you can easily live with that.
MyISAM, being free of such overhead, can be used in a concentrated way to perform lightning-fast SELECTs at the cost of data loss in the event of a crash, especially if tables are set with ROW_FORMAT=DYNAMIC (default).
You should store all static data to MyISAM that is 98% SELECT and 1% UD (Update,Delete) and 1% INSERTs to rows that need not be updated.
You should store all transactional data, whose data integrity matter from an application standpoint, to InnoDB. You can harness both storage engines well in any application when using them together for the right reasons.
2)Innodb supports transactions, MyISAM does not
3)Row-level locking and MVCC in inno db while table level locking in MyISAM
There are many more differences which even I could not understand…If any one finds some more difference plz do leave a comment.But the differences should be in layman terms.
you can refer the following sources: