MySQL_09存储引擎
2021/7/24 2:18:07
本文主要是介绍MySQL_09存储引擎,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MySQL_09存储引擎
1.什么是存储引擎,有什么用?
存储引擎是MySQL中特有的一个术语,其它数据库里没有。(oracle里有,不叫此名)
实际上存储是一个表存储/组织数据的方式。
不同的存储引擎,表存储数据的方式不同。
2.怎么给表添加/指定存储引擎?
查看一张表的组成结构:
show create table 表名;
比如查看t_student这张表:
| t_student | CREATE TABLE `t_student` ( `no` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `cno` int(11) DEFAULT NULL, PRIMARY KEY (`no`), KEY `cno` (`cno`), CONSTRAINT `t_student_ibfk_1` FOREIGN KEY (`cno`) REFERENCES `t_class` (`classno`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 |
在建表时,可以在最后小括号的后面使用:
- ENGINE来指定存储引擎。
- CHARSET来指定这张表的字符编码格式。
结论:
- mysql默认的存储引擎是:InnoDB
- mysql默认的字符编码格式是:utf8
现在我们来建一个表,在建表时指定存储引擎及字符编码格式:
create table t_test( id int primary key, name varchar(255) ) engine = InnoDB default charset = gbk;
查看表:
| t_test | CREATE TABLE `t_test` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk |
3.MySQL支持的存储引擎
我的mysql版本是:
mysql> select version(); +-----------+ | version() | +-----------+ | 5.5.62 | +-----------+
查看mysql支持的存储引擎:show engines \G;
mysql> show engines \G; *************************** 1. row *************************** Engine: FEDERATED Support: NO Comment: Federated MySQL storage engine Transactions: NULL XA: NULL Savepoints: NULL *************************** 2. row *************************** Engine: MRG_MYISAM Support: YES Comment: Collection of identical MyISAM tables Transactions: NO XA: NO Savepoints: NO *************************** 3. row *************************** Engine: MyISAM Support: YES Comment: MyISAM storage engine 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: CSV Support: YES Comment: CSV storage engine Transactions: NO XA: NO Savepoints: NO *************************** 6. row *************************** Engine: MEMORY Support: YES Comment: Hash based, stored in memory, useful for temporary tables 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: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keys Transactions: YES XA: YES Savepoints: YES *************************** 9. row *************************** Engine: PERFORMANCE_SCHEMA Support: YES Comment: Performance Schema Transactions: NO XA: NO Savepoints: NO
mysql支持九大存储引擎,我的版本5.5.62支持8个,版本不同支持情况也不同。
4.MySQL常用的存储引擎
MySQL常用的存储引擎有:
- myISAM
- InnoDB
- MEMORY
5.MyISAM存储引擎
- MyISAM引擎是mySQL最常用的引擎
- 它管理的表有以下特征:
- 使用三个文件表示每个表
- 格式文件:存储表结构的定义(mytable.frm)
- 数据文件:存储表行的内容(mytable.MYD)
- 索引文件:存储表上的索引(mytable.MYI),索引相当于是一本书的目录,缩小扫描范围,提高检索效率的一种机制。
- 灵活的AUTO_INCREMENT字段处理
- 可被转换为压缩、只读表来节省空间
- 使用三个文件表示每个表
- MyISAM不支持事务机制,安全性低。
提示:对于一张表来说,只要是主键,或者加有unique约束的字段上会自动创建索引。
6.InnoDB存储引擎
- 这是mysql默认的存储引擎,同时也会死一个重量级的存储引擎。
- InnoDB支持事务,支持数据库崩溃后的自动恢复机制。
- InnoDB存储引擎最主要的特点是:非常安全。
- 它管理的表具有以下主要特征:
- 每个InnoDB表在数据库目录中以.frm格式文件表示
- InnoDB表空间tablespace被用于存储表的内容(表空间是一个逻辑名称,表空间存储数据+索引)
- 提供一组用来记录事务性活动的日志文件
- 用COMMIT(提交)、SAVEPOINT以及ROWBACK(回滚)支持事务处理
- 提供ACID兼容
- 在MySQL服务器崩溃后提供自动恢复
- 多版本(MVCC)和行级锁定
- 支持外键及引用的完整性,包括级联删除和更新
- InnoDB最大的特点就是支持事务:
- 保证数据安全
- 效率不是很高
- 不能压缩,不能转换为只读,不能很好的节省存储空间
7.MEMORY存储引擎
- 使用MEMORY存储引擎的表,其数据存储在内存中,行的长度固定,这两点使得MEMORY存储引擎非常快。
- MEMORY存储引擎管理的表具有以下特征:
- 在数据库目录内,每个表均以.frm格式的文件表示。
- 表数据及索引被存储在内存中。(目的就是快,查询速度快)
- 表级锁机制
- 不能包含TEXT或BLOB字段
- MEMORY存储引擎以前被称为HEAP引擎
- MEMORY存储引擎优点:查询效率是最高的,不需要和硬盘交互。
- MEMORY存储引擎缺点:不安全,关机后数据消失。因为数据和索引都是在内存中。
这篇关于MySQL_09存储引擎的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南
- 2024-10-22MySQL数据库入门教程:从安装到基本操作
- 2024-10-22MySQL读写分离入门教程:轻松实现数据库性能提升
- 2024-10-22MySQL分库分表入门教程
- 2024-10-22MySQL慢查询的诊断与优化指南
- 2024-10-22MySQL索引入门教程:快速理解与应用指南
- 2024-10-22MySQL基础入门教程:从安装到基本操作
- 2024-10-22MySQL数据库中的Binlog详解与操作教程
- 2024-10-12部署MySQL集群项目实战:新手入门教程