machines. Binary compatibility might not be applicable to embedded systems, which sometimes have peculiar processors. 

There is no significant speed penalty for storing data low byte first; the bytes in a table row normally are unaligned and it takes little more processing to read an unaligned byte in order than in reverse order. Also, the code in the server that fetches column values is not time critical compared to other code. 

•All numeric key values are stored with the high byte first to permit better index compression. 

•Large files (up to 63-bit file length) are supported on file systems and operating systems that support large files. 

•There is a limit of (2$^{32}$)$^{2}$ (1.844E+19) rows in a MyISAM  table. 

•The maximum number of indexes per MyISAM  table is 64. 

The maximum number of columns per index is 16. 

•The maximum key length is 1000 bytes. This can also be changed by changing the source and recompiling. For the case of a key longer than 250 bytes, a larger key block size than the default of 1024 bytes is used. 

•When rows are inserted in sorted order (as when you are using an AUTO_INCREMENT  column), the index tree is split so that the high node only contains one key. This improves space utilization in the index tree. 

•Internal handling of one AUTO_INCREMENT  column per table is supported. MyISAM  automatically updates this column for INSERT  and UPDATE  operations. This makes AUTO_INCREMENT  columns faster (at least 10%). Values at the top of the sequence are not reused after being deleted. (When an AUTO_INCREMENT  column is defined as the last column of a multiple-column index, reuse of values deleted from the top of a sequence does occur.) The AUTO_INCREMENT  value can be reset with ALTER TABLE  or myisamchk . 

•Dynamic-sized rows are much less fragmented when mixing deletes with updates and inserts. This is done by automatically combining adjacent deleted blocks and by extending blocks if the next block is deleted. 

• MyISAM  supports concurrent inserts: If a table has no free blocks in the middle of the data file, you can INSERT  new rows into it at the same time that other threads are reading from the table. A free block can occur as a result of deleting rows or an update of a dynamic length row with more data than its current contents. When all free blocks are used up (filled in), future inserts become concurrent again. See Section 8.11.3, “Concurrent Inserts” . 

•You can put the data file and index file in different directories on different physical devices to get more speed with the DATA DIRECTORY  and INDEX DIRECTORY  table options to CREATE TABLE . See Section 13.1.20, “CREATE TABLE Statement” . 

• BLOB  and TEXT  columns can be indexed. 

• NULL  values are permitted in indexed columns. This takes 0 to 1 bytes per key. 

•Each character column can have a different character set. See Chapter 10, Character Sets, Collations, Unicode . 

•There is a flag in the MyISAM  index file that indicates whether the table was closed correctly. If mysqld is started with the myisam_recover_options  system variable set, MyISAM  tables are automatically checked when opened, and are repaired if the table wasn’t closed properly. 

