存储引擎
存储引擎是mysql中特有的一个术语
是一个表存储/组织数据的方式
不同的存储引擎 表存储数据的方式不同
可以使用show create table 表名查看表创建时的存储方式
show create table table_1;
table_1,"CREATE TABLE `table_1` (
`name` char(10) DEFAULT NULL,
`id` char(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci"
分为三部分 第一部分是我们的创表语句 第二部分ENGINE表示的就是存储引擎
第三部分DEFAULT CHARSET=UTF8 就是存储时使用的字符集
创表时并没有对这些进行设置 也就是说 在mysql中
默认存储引擎为InnoDB
默认字符编码方式是UTF8
那么怎么自己给表添加指定存储引擎?
有样学样 跟它一样在表后面加两句话(DEFAULT可以缺省)
因为不知道有哪些存储引擎 所以只修改了一下字符集
那么怎么知道有哪些存储引擎呢
show engines;
展示出了当前版本mysql支持的存储引擎(版本不同支持情况不同)
也证实了InnoDB是默认的
那么再试验一下
有什么用呢 有什么区别呢 怎么工作呢
MyISAM存储引擎
特征
使用三个文件表示每个表
格式文件——存储表结构的定义(mytable.frm)
数据文件——存储表行的内容(mytable.MYD)
索引文件——存储表上索引(mytable.MYI)
(索引就相当于一本书的目录 缩小扫描范围 提高查询效率
对于一张表来说 只要是主键或者加有unique约束的字段上会自动创建索引)
优点:由于数据和索引都是文件 所以可被转换为压缩、只读表来节省空间
mysql数据库就有使用这种方式存储
InnoDB存储引擎
mysql默认的存储引擎 一个重量级的存储引擎
特点:支持事务 保证安全
每个InnoDB表在数据库目录中以.frm格式文件表示
表空间tablespace被用于存储表的内容
提供一组用来记录事务性活动的日志文件
用COMMIT(提交)、SAVEPOINT及ROLLBACK(回滚)支持事务处理
提供全ACID兼容
在mysql服务器崩溃后提供自动恢复
多版本(MVCC)和行级锁定
支持外键及引用的完整性 包括级联删除和更新
数据和索引都放在表空间(tablespace)中 而不是在文件里
表的格式还是在.frm文件里
效率不是很高 不能压缩 不能转换为只读 不能很好的节省空间
MySQL把它作为默认 可见对安全的重视度高
MEMORY存储引擎
曾称HEAP引擎
使用memory存储引擎的表 其数据和索引都存储在内存中(断电就没) 且行的长度固定
这两个特点就使得它非常快
特点
在数据库目录内 每个表以.frm格式的文件表示
表数据及索引被存储在内存中
表级锁机制
不能包含TEXT或者BLOB字段(图片不能存)
查询效率最高
但也最不安全 断电数据就消失
⬅️ 22-用户管理(DBA命令) 🏠 00-数据库 ➡️ SQLite
💬 评论