1. Innodb support transactions, Myisam does not support transactions
2.MyISAM: If performing a large number of select,myisam is a better choice
InnoDB: If your data performs a large number of inserts or update, for performance reasons, you should use the InnoDB table 3.InnoDB is a row-level lock and MyISAM is a table-level lock. 4.MyISAM saves the number of rows, InnoDB does not save, select COUNT (*) from table performance will be different, but select count (*) from table where performance does not differ by 5. Physical structure is different: each MyISAM in the magnetic Stored as three files on a disk. The first file name begins with the name of the table, and the extension indicates the file type. frm file stores the table definition. The data file has an extension of. The extension of the MYD (MYData) index file is. MYI (Myindex)InnoDB: TheInnoDB tablespace data file and its log files are disk-based resources , and the size of the InnoDB table is limited only by the size of the operating system files, typically 2GB
Other: WhyMyISAM
will be faster than the InnoDB query. 1) data block,
InnoDB to cache,
MyISAM cache only index blocks , This in the middle there is also the reduction of the swap out;  
2) innodb address to map to block, then to line , MYISAM records the file's offset , the location is faster than InnoDB
MVCC (multi-version Concurrency Control)
Multi-version concurrency controls InnoDB: Implement MVCC by adding two additional hidden values for each row of records, one to record when this row of data was created, and another to record when this row of data expires (or is deleted). However, InnoDB does not store the actual time at which these events occur, but instead only stores the system version number when these events occur. This is a growing number of transactions as they are created. Each transaction will record its own system version number at the beginning of the transaction. Each query must check whether the version number of each row of data is the same as the version number of the transaction. Let's take a look at how this policy is applied to specific operations when the isolation level is repeatable READ: SELECT InnoDB must have each row of data to ensure that it complies with two conditions: 1, InnoDB must find a version of the line, at least as old as the version of the transaction ( That is, its version number is not greater than the version number of the transaction. This ensures that the data is present either before the transaction starts, or when the transaction is created, or when the row data is modified. 2. The deleted version of this line of data must be undefined or larger than the transaction version. This ensures that this row of data is not deleted before the transaction begins.
The main difference between InnoDB and MyISAM in the Mysql storage engine