浅谈——MySQL存储引擎
发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,博文大纲:一、MyISAM存储引擎;二、InnoDB存储引擎;三、Memory存储引擎特点;四、如何选择合适的存储引擎?五、查看及修改表的默认引擎前言数据库存储引擎是数据库底层软件组件,数据库管理系统
千家信息网最后更新 2024年11月22日浅谈——MySQL存储引擎
博文大纲:
- 一、MyISAM存储引擎;
- 二、InnoDB存储引擎;
- 三、Memory存储引擎特点;
- 四、如何选择合适的存储引擎?
- 五、查看及修改表的默认引擎
前言
数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎。
MySQL提供了多个不同的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在MySQL中,不需要在整个服务器中使用一种引擎,针对具体要求可以对每一个表使用不同的存储引擎。
- 存储引擎说白了就是数据存储的格式,不同的存储引擎功能不同,占用的空间大小不同,读取性能也不同;
- 数据库存储引擎是数据库底层软件组件,不同的存储引擎提供不同的存储机制;
- 在 MySQL 中,不需要在整个服务器中使用同一种存储引擎,可以对每一个表使用不同的存储引擎;
- MySQL 支持多种存储引擎,如 InnoDB 、MyISAM 、Memory 、Merge 、Archive 、CSV 、Federated 等等。
一、MyISAM存储引擎
1、MyISAM存储引擎的特点
- MySQL 5.5 之前默认使用 MyISAM 引擎,MySQL 5.5 之后默认使用 InnoDB 引擎;
- MyISAM 引擎读取速度较快,占用资源相对较少,不支持事务,不支持外键约束,但支持全文索引;
- 读写互相阻塞,也就是说读数据的时候你就不能写数据,写数据的时候你就不能读数据;
- MyISAM 引擎只能缓存索引,而不能缓存数据。
2、MyISAM适用场景
- 不需要事务支持的业务,例如转账就不行;
- 适用于读数据比较多的业务,不适用于读写频繁的业务;
- 并发相对较低、数据修改相对较少的业务;
- 硬件资源比较差的机器可以考虑使用 MyISAM 引擎。
二、InnoDB存储引擎
1、InnoDB存储引擎的特点
- 事务型数据库的首选引擎,支持事务安全表,支持行锁定和外键,MySQL 5.5.5 版本之后,InnoDB 作为默认存储引擎;
- 具有提交、回滚和崩溃恢复能力的事务安全存储引擎,能处理巨大数据量,性能及效率高,完全支持外键完整性约束;
- 具有非常高效的缓存特性,能缓存索引也能缓存数据,对硬件要求比较高;
- 使用 InnoDB 时,将在 MySQL 数据目录下创建一个名为 ibdata1 的 10MB 大小的自动扩展数据文件,以及两个名为 ib_logfile0 和 ib_logfile1 的 5MB 大小的日志文件。
2、InnoDB 适用场景
- 需要事务支持的业务、高并发的业务
- 数据更新较为频繁的场景,比如 BBS、SNS、微博等
- 数据一致性要求较高的业务,比如充值转账、银行卡转账
三、Memory存储引擎特点
- Memory 存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问;
- Memory 存储引擎执行 HASH 和 BTREE 索引,不支持 BLOB 和 TEXT 列,支持 AUTO_INCREMENT 列和对可包含 NULL 值得列的索引;
- 当不再需要 Memory 表的内容时,要释放被 Memory 表使用的内存,应该执行 DELETE FROM 或 TRUNCATE TABLE ,或者删除整个表。
四、如何选择合适的存储引擎?
不同的业务需求需要选择不同的存储引擎,具体可以参照以下几点来进行选择:
- 如果要提供提交、回滚和崩溃恢复能力的事务安全能力,并要求实现并发控制,InnoDB 是个很好的选择;
- 如果数据表主要用来插入和查询记录,则 MyISAM 引擎能提供较高的处理效率;
- 如果只是临时存放数据,数据量不大,并且不需要较高的安全性,可以选择将数据保存在内存中的 Memory 引擎,MySQL 使用该引擎作为临时表,存放查询的中间结果;
- 如果只有 INSERT 和 SELECT 操作,可以选择 Archive 引擎,支持高并发的插入操作,如记录日志信息可以使用 Archive 引擎。
主要的三个数据引擎所支持的功能如下表所示:
五、查看及修改表的默认引擎
mysql> show engines\G; mysql> show variables like 'default_storage_engine'; mysql> show variables like '%engine%'; mysql> show create table t01\G; mysql> alter table t01 engine=myisam;
-------- 本文至此结束,感谢阅读 --------
引擎
存储
数据
不同
支持
事务
业务
数据库
选择
安全
索引
缓存
功能
特点
处理
查询
内存
场景
大小
能力
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
学术数据库名词解释
软件开发的快速因素模型
首都图书馆苏联档案数据库
汉风为什么登陆服务器无反应
银行软件开发薪资排行
青岛免费项目管控软件开发平台
科技部 互联网 政务服务
沈阳网络安全资讯培训机构
艾尔登法环登录不了服务器贴吧
2020国家网络安全周启动
猫控网络技术
信息新技术报告网络安全图片
pc端开发软件开发
威纶触摸屏做tcp服务器
网络安全问题怎么举报
福建公安厅网络安全专家林增辉
福建医院数显钟服务器
网络安全信息中心技术员
我的世界豪华服务器手机版
数据库报表怎样分栏
服务器无法上传图片文件
wps服务器连接断开
网络安全动态防御技术的应用
蚂蚁微贷杭州网络技术
护苗网络安全盗版书
桂北汇显示服务器错误
空岛服务器刷怪断断续续
福彩软件开发中心
ns香港服务器
软件开发 外包项目管理