一,存储引擎
1,存储引擎是:MySQL特有的,其它数据库没有
2,存储引擎的本质
Ø 通过采用不同的技术将数据存储在文件内存中;
Ø 每一种技术都有不同的存储机制,不同的存储机制提供不同的功能和能力;
Ø 通过选择不同的技术,可以获得额外的速度或功能,改善我们的应用;
2,MySQL支持很多种,查看存储引擎,命令如下
show engines\G
1) 在创建表时,可使用< ENGINES> 选项为CREATE TABLE诧句显示指定存储引擎
a)
例如:
CREATE TABLE table_name(
NO INT
)ENGINE = MyISAM;
2) 如果创建表时没有指定存储引擎,则使用当前默认的存储引擎;
3) 默认的存储引擎可在 my.ini 配置文件中使用 default-storage-engin 选项指定;
4) 修改表的存储引擎使用:ALTER TABLE 表名 ENGINE = 存储引擎名称;
5) 查看表使用的存储引擎,命令如下:
a)
SHOW CREATE TABLE emp\G;
b)
SHOW TABLE STATUS LIKE 'emp'\G;
3,常用的存储引
3.1 MyISAM存储引擎
Ø MyISAM引擎是MySQL数据库最常用的;
Ø 它管理的表具有以下特性:
Ø 使用三个文件表示每个表:
a) 格式文件 — 存储表的结构(mytable.frm)
b) 数据文件 — 存储表的数据(mytable.MYD)
c) 索引文件 — 存储表的索引(mytable.MYI)
Ø 可转换为压缩、叧读表来节省空间
3.2 InnoDB存储引擎
Ø InnoDB存储引擎是MySQL数据库的缺省引擎;
Ø 它管理的表具体有以下特征:
a) 每个InnoDB表在数据库目录中以.frm格式文件表示
b) InnoDB表空间tablespace被用于存储表的内容
c) 提供一组用来记录事务性活劢的日志文件
d) 用COMMIT(提交)、SAVEPOINT及ROLLBACK(回滚)支持事务处理
e) 提供全部ACID兼容
f) 在MySQL服务器崩溃后提供自劢恢复
g) 多版本(MVCC)和行级锁定
h) 支持外键及引用的完整性,包括级联更新和删除
3.3 MEMORY存储引擎
Ø 使用MEMORY存储引擎的表,因为数据存储在内存中,且行的长度固定,所以使得MEMORY存储引擎
非常快;
Ø MEMORY存储引擎管理的表具有下列特征:
a) 在数据库目录内,每个表均以.frm格式文件表示;
b) 表数据及索引被存储在内存中;
c) 表级锁机制;
d) 字段属性丌能包含TEXT戒BLOB字段;
Ø MEMORY存储引擎以前被称为HEAP引擎;
4,选择合适的存储引擎
Ø MyISAM表最适合亍大量的数据读而少量数据更新的混合操作。MyISAM表的另一种适用情形是使用压 缩的只读表。
Ø 如果查询中包含较多的数据更新操作,应使用InnoDB。其行级锁机制和多版本的支持为数据读取和更新的混合提供了良好的并发机制。
Ø 使用MEMORY存储引擎存储非永久需要的数据,或者是能够从基亍磁盘的表中重新生成的数据。