目录
一、存储引擎
存储引擎是mysql特有的术语
存储引擎是一个表存储/组织数据的方式。
不同的存储引擎,表存储数据的方式不同。
如何给表添加/指定存储引擎呢?
show create table t_student;
在建表时可以在最后小括号的‘)’右边使用;
ENGINE来指定存储引擎。
CHARSET来指定这张表的字符编码方式。(如果采用gbk的编码方式可以识别中文)
结论:
mysql默认的引擎是:InnoDB
mysql默认的字符编码方式是:utf8
create table t_product(
id int primary key,
name varchar(255)
)engine = InnoDB default charset = utf8;
二、查看mysql支持的存储引擎
show engines \G
mysql支持九大存储引擎,InnoDB为默认
三、常用的存储引擎
3.1 MyISAM存储引擎
不支持事务机制,安全性低。
它管理的表有以下特征:
使用三个文件表示每个表:
3.1.1 格式文件
-存储表结构的定义(mytable.frm):每张表都有结构,被存储在了frm这个文件
3.1.2 数据文件
-存储表行的内容(mytable.MYD)
表的数据被存储到MYD这个文件
3.1.3 索引文件
-存储表的索引(mytable.MYI):索引就是一本书的目录,可以缩小扫描的范围,提高检索效率。
可被转换为压缩、只读表来节省空间.对于表来说,只要是主键,或者加有unique约束字段上会自动创建索引。
3.2 InnoDB存储引擎
InnoDB支持事务,支持数据库崩溃后自动恢复机制。
InnoDB存储引擎主要的特点是:非常安全
他管理的表具有以下特征:
–每个 InnoDB 表在数据库目录中以.frm 格式文件表示
– InnoDB 表空间 tablespace 被用于存储表的内容
– 提供一组用来记录事务性活动的日志文件
– 用 COMMIT(提交)、SAVEPOINT 及 ROLLBACK(回滚)支持事务处理
– 提供全 ACID 兼容 – 在 MySQL 服务器崩溃后提供自动恢复 – 多版本(MVCC)和行级锁定
– 支持外键及引用的完整性,包括级联删除和更新
InnoDB 最大的特点就是支持事务,以保证数据的安全性,效率不高,并且也不能压缩,不能转换为只读。不能很好的节省存储空间
3.3 MEMORY存储引擎:
使用 MEMORY 存储引擎的表,其数据存储在内存中,且行的长度固定,这两个特点使得 MEMORY 存储引擎非 常快。
• MEMORY 存储引擎管理的表具有下列特征:
– 在数据库目录内,每个表均以.frm 格式的文件表示。
– 表数据及索引被存储在内存中。(目的就是快,查询快)
– 表级锁机制。
– 不能包含 TEXT 或 BLOB 字段。
• MEMORY 存储引擎以前被称为 HEAP 引擎
优点:MEMORY 存储引擎查询效率是最高的
缺点:安全性低,关机之后数据消失。因为数据和索引都在内存中存放。