1. MYISAM和INNODB的不一样?
答:主要有如下几点区别:
a)构造上的区别
MyISAM在磁盘上存储成三个文件,其中.frm文件存储表定义;.MYD (MYData)为数据文件;.MYI (MYIndex)为索引文件。
而innodb是由.frm文件、表空间(分为独立表空间或者共享表空间)和日志文件(redo log)组成。
b)事务上的区别
myisam不支持事务;而innodb支持事务。
c)锁上的区别
myisam使用的是表锁;而innodb使用的行锁(固然innodb也支持表锁)。
表级锁:直接锁定整张表,在锁按期间,其余进程没法对该表进行写操做,若是设置的是写锁,那么其余进程读也不容许,所以myisam支持的并发量低,但myisam不会出现死锁;
行级锁:只对指定的行进行锁定,其余进程仍是能够对表中的其余行进行操做的。所以行锁能大大的减小数据库操做的冲突,但有时会致使死锁。
d)是否支持外键的区别
myisam不支持外键,innodb支持外键
e) select count(*)的区别
对于没有where的count(*)使用MyISAM要比InnoDB快得多。由于MyISAM内置了一个计数器,count(*)时它直接从计数器中读,而InnoDB必须扫描全表。
f)myisam只把索引都load到内存中,而innodb存储引擎是把数据和索引都load到内存中 ,innob不支持全文索引
当须要使用数据库事务时,该引擎固然是首选。因为锁的粒度更小,写操做不会锁定全表,因此在并发较高时,使用Innodb引擎会提高效率。
yIASM是MySQL默认的引擎,可是它没有提供对数据库事务的支持,也不支持行级锁和外键,所以当INSERT(插入)或UPDATE(更新)数据时即写操做须要锁定整个表,效率便会低一些。
MyIASM引擎是为了查和增长,效率高。全部功能都围绕这这个
Innodb引擎功能更强(事务等)效率低一些。