MySQL 中的数据用各种不同的技术存储在文件中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平、并且最终提供广泛的不同的功能和能力。通过选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体功能。这些不同的技术以及配套的相关功能在 MySQL 中被称作存储引擎(也称作表类型)。MySQL 默认配置了许多不同的存储引擎,可以预先设置或者在 MySQL服务器中启用。可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储信息、如何检索信息以及需要数据结合什么性能和功能的时候提供最大的灵活性。数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。
查看支持的引擎
SHOW ENGINES;
查看表引擎
SHOW TABLE STATUS LIKE '表名' 修改引擎
方式 1:将 mysql.ini 中 default-storage-engine=InnoDB,重启服务
方式 2:建表时指定 CREATE TABLE 表名(...)ENGINE=MYISAM;
方式 3:建表后修改 ALTER TABLE 表名 ENGINE = INNODB;
存储引擎主要有:
1. MyIsam
2. InnoDB
3. Memory
4. Blackhole
5. CSV
6. Performance_Schema
7. Archive
8. Federated
9 Mrg_Myisam
主要分析使用 MyIsam 和 InnoDB
InnoDB(默认的存储引擎)
InnoDB 是一个事务型的存储引擎,有行级锁(并发量大)和外键约束,支持全文检索(全文索引),它的设计目标是处理大容量数据库系统,MySQL 运行时 Innodb 会在内存中建立缓冲池,用于缓冲数据和索引;支持主键自增,不存储表的总行数(需要逐行统计)。
MyISAM
MyISAM 也是 MySQL 的引擎,但是它没有提供对数据库事务的支持,也不支持行级锁和外键,因此当 INSERT(插入)或 UPDATE(更新)数据时即写操作需要锁定整个表,也就是只有表锁(并发量小),效率便会低一些;支持全文检索;存储表的总行数(统计速度快)。
在不同的数据操作场景中,选择合适的引擎可以提高效率。