存储引擎
* 本博客涉及到的数据为bjpowernode.sql,SQL文见MySQL入门(9)文末。
* 该数据有三张表,分别是部门表dept(deptno部门编号、dname部门名称、loc位置)、
员工表emp(empno工号、ename员工姓名、job职位、mgr直属领导工号、
hiredate入职日期、sal月薪、comm补贴、deptno部门编号)、
薪水等级表salgrade(grade等级、losal区间下限、hisal区间上限)
存储引擎
DBA 需要熟练掌握
MYSQL数据管理系统特有的,不同的存储引擎存储数据的方式不一样,存储引擎给表设置存储引擎,即也是设置存储方式
1、 MyISAM存储引擎【不支持事务,效率高】
MyISAM存储引擎是MYSQL最常用的引擎,它管理的表具有以下特征:
- 使用三个文件表示每个表:
* 格式文件 – 存储表结构的定义(mytable.frm)
* 数据文件– 存储表行的内容(mytable.MYD)
* 索引文件 – 存储表上的索引(mytable.MYI)
-灵活的AUTO_INCREMENT的字段处理
-可被转换为压缩来节省空间,只读表提高检索效率,只读表防止修改只能访问
- 在MySQL服务器崩溃后不能自动恢复
2、 InnoDB存储引擎【支持事务】
InnoDB存储引擎是MySQL的缺省引擎(默认)
他管理的表具有下列主要特征:
- 每个InooDB表在数据库目录中以.frm格式文件表示
- InnoDB表空间tablespace被用于储存表的内容
- 提供一组用来记录事务性活动的日志文件
- 用COMMIT(提交),SAVEPOINT以及ROLLBACK(回滚)支持事务处理
- 提供全ACID兼容
- 在MYSQL服务器彭奎后提供自动恢复
- 多版本(MVCC)和行级锁定
- 支持外键及引用的完整性、包括级联删除和更新
3、 MEMORY存储引擎【速度最快】
使用MEMORY存储引擎的表,其数据存储在内存中,且行的长度固定,这两个特点使得MEMORY存储引擎非常快。
MEMORY存储引擎管理的表具有以下特征:
- 在数据库目录内,每个表均以.frm格式的文件表示
- 表数据及索引存储在内存中
- 表级锁机制
- 不能包含TEXT或BLOB字段
MEMORY存储引擎之前被称为HEAP引擎
4、选择合适的存储引擎
- 当创建表时,应根据表的应用场景选择合适的存储引擎
- MyISAM表最适合于大量的数据读取而少量数据更新的混合操作,且适用于使用压缩的只读表
- 如果查询中包含较多的数据更新操作,应使用InnoDB。其行级锁机制和多版本的支持为数据读取和更新的混合操作提供了良好的并有机制
- 可使用MEMORY存储引擎来存储非永久需要的数据,或者能够从基于磁盘的表中重新生成数据。
mysql> show engines\G;
*************************** 1. row***************************
Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
*************************** 2. row***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 3. row***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 4. row***************************
Engine: BLACKHOLE
Support: YES
Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
XA: NO
Savepoints: NO
*************************** 5. row***************************
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 6. row***************************
Engine: CSV
Support: YES
Comment: CSV storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 7. row***************************
Engine: ARCHIVE
Support: YES
Comment: Archive storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 8. row***************************
Engine: PERFORMANCE_SCHEMA
Support: YES
Comment: Performance Schema
Transactions: NO
XA: NO
Savepoints: NO
*************************** 9. row***************************
Engine: FEDERATED
Support: NO
Comment: Federated MySQL storage engine
Transactions: NULL
XA: NULL
Savepoints: NULL