到p40
概念:
-
和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎。
-
存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式 。存储引擎是基于表的,而不是基于库的,即相同的数据库不同的表可以选择不同的存储引擎。所以存储引擎也可被称为表类型。在建表时可以定义存储引擎。
-
Oracle,SqlServer等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应引擎,或者编写存储引擎。
-
MySQL5.0支持的存储引擎包含 : InnoDB 、MyISAM 、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎是非事务安全表。
-
可以通过指定
show engines;
, 来查询当前数据库支持的存储引擎 :
-
创建新表时如果不指定存储引擎,那么系统就会使用默认的存储引擎,MySQL5.1之前的默认存储引擎是MyISAM,5.1之后就改为了InnoDB。
各存储引擎特点:
MyISAM与InnoDB
区别:
- InnoDB支持外键,MyISAM不支持。
- InnoDB支持事务,MyISAM不支持。
- InnoDB为行锁,写操作时只是锁住操作的那一行,其他事务不能对当前行进行写操作,其他适合高并发,但存在死锁可能。MyISAM为表锁,即使操作一条记录也会锁住整张表,不适合高并发,不存在死锁可能。
- InnoDB不仅仅缓存索引,还会缓存真实数据。MyISAM只缓存索引,不会缓存真实数据。