MySQL系列之七 MySQL存储引擎


Posted in MySQL onJuly 02, 2021

一、MyISAM存储引擎

缺点:

  1. 不支持事务
  2. 最小粒度锁:表级
  3. 读写相互阻塞,写入不能读,读时不能写
  4. 不支持MVCC(支持多版本并发控制机制)
  5. 不支持聚簇索引
  6. 不支持数据缓存
  7. 不支持外键
  8. 崩溃恢复性较差

优点:

  1. 最大支持256TB存储空间
  2. 读取数据较快,占用资源较少

MyISAM引擎存储文件:

  • tbl_name.frm: 表格式定义
  • tbl_name.MYD: 数据文件
  • tbl_name.MYI: 索引文件

适用场景:MySQL5.5.5前默认的数据库引擎,在只读(或者写较少)、表较小(可以接受长时间进行修复操作)的场景适用

二:InnoDB存储引擎

特点:

  1. 64TB
  2. 支持事务
  3. 行级锁
  4. 支持多版本并发控制机制(MVCC)
  5. 支持聚簇索引
  6. 支持数据缓存
  7. 支持外键

InnoDB数据库文件:

  • tb_name.frm:表格式定义
  • tb_name.ibd :数据文件

注意:默认所有的innodb表数据文件存储在数据库目录下的ibddata1, ibddata2, ... ,这样极其不方便管理

强烈建议:启用 innodb_file_per_table=ON,每个表单独使用一个表空间存储表的数据和索引

启用:innodb_file_per_table

编辑/etc/my.cnf在[mysqld]下添加 innodb_file_per_table
重启服务器 # service mysqld restart
MariaDB [(none)]> SHOW VARIABLES LIKE 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+

1、管理存储引擎

查看mysql支持的存储引擎: MariaDB [(none)]> SHOW ENGINES\G

查看当前默认的存储引擎:

MariaDB [(none)]> SHOW VARIABLES LIKE 'storage_engine';
+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| storage_engine | InnoDB |
+----------------+--------+

设置默认的存储引擎:

编辑/etc/my.conf在[mysqld]下添加
default_storage_engine = InnoDB

2、InnoDB存储引擎的缓存

InnoDB存储引擎的缓冲池通常缓冲池的命中不应该小于99%

相关状态变量:

MariaDB [(none)]> SHOW GLOBAL STATUS LIKE 'innodb%read%'\G
  • Innodb_buffer_pool_reads: 表示从物理磁盘读取页的次数
  • Innodb_buffer_pool_read_ahead: 预读的次数
  • Innodb_buffer_pool_read_ahead_evicted: 预读页,但是没有读取就从缓冲池中被替换的页数量,一般用来判断预读的效率
  • Innodb_buffer_pool_read_requests: 从缓冲池中读取页次数
  • Innodb_data_read: 总共读入的字节数
  • Innodb_data_reads: 发起读取请求的次数,每次读取可能需要读取多个页

Innodb缓冲池命中率 = Innodb_buffer_pool_read_requests / ( Innodb_buffer_pool_read_requests + Innodb_buffer_pool_read_ahead + Innodb_buffer_pool_reads )

平均每次读取的字节数 = Innodb_data_read / Innodb_data_reads

三、其他存储引擎

  • Performance_Schema:Performance_Schema数据库;
  • Memory :将所有数据存储在RAM中,以便在需要快速查找参考和其他类似数据的环境中进行快速访问。适用存放临时数据。引擎以前被称为HEAP引擎;
  • MRG_MyISAM:使MySQL DBA或开发人员能够对一系列相同的MyISAM表进行逻辑分组,并将它们作为一个对象引用。适用于VLDB(Very Large Data Base)环境,如数据仓库;
  • Archive :为存储和检索大量很少参考的存档或安全审核信息,只支持SELECT和INSERT操作;支持行级锁和专用缓存区;
  • Federated联合:用于访问其它远程MySQL服务器一个代理,它通过创建一个到远程MySQL服务器的客户端连接,并将查询传输到远程服务器执行,而后完成数据存取,提供链接单独MySQL服务器的能力,以便从多个物理服务器创建一个逻辑数据库。非常适合分布式或数据集市环境;
  • BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性;
  • Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性;
  • CSV:CSV存储引擎使用逗号分隔值格式将数据存储在文本文件中。可以使用CSV引擎以CSV格式导入和导出其他软件和应用程序之间的数据交换;
  • BLACKHOLE :黑洞存储引擎接受但不存储数据,检索总是返回一个空集。该功能可用于分布式数据库设计,数据自动复制,但不是本地存储;
  • example:“stub”引擎,它什么都不做。可以使用此引擎创建表,但不能将数据存储在其中或从中检索。目的是作为例子来说明如何开始编写新的存储引擎。

到此这篇关于MySQL系列之七 MySQL存储引擎的文章就介绍到这了,更多相关MySQL存储引擎内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL锁机制
Apr 05 MySQL
MySQL 如何分析查询性能
May 12 MySQL
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
May 29 MySQL
Mysql文件存储图文详解
Jun 01 MySQL
MySQL删除和插入数据很慢的问题解决
Jun 03 MySQL
为什么MySQL选择Repeatable Read作为默认隔离级别
Jul 26 MySQL
MySQL优化常用的19种有效方法(推荐!)
Mar 17 MySQL
Linux系统下MySQL配置主从分离的步骤
Mar 21 MySQL
MySQL Server 层四个日志
Mar 31 MySQL
MySQL sql模式设置引起的问题
May 15 MySQL
MySQL解决Navicat设置默认字符串时的报错问题
Jun 16 MySQL
MySQL存储过程及语法详解
Aug 05 MySQL
MySQL系列之十五 MySQL常用配置和性能压力测试
Jul 02 #MySQL
MySQL系列之三 基础篇
Jul 02 #MySQL
MySQL系列之一 MariaDB-server安装
Jul 02 #MySQL
MySQL系列之二 多实例配置
Jul 02 #MySQL
MySQL系列之十三 MySQL的复制
Jul 02 #MySQL
MySQL系列之六 用户与授权
Jul 02 #MySQL
MySQL系列之开篇 MySQL关系型数据库基础概念
Jul 02 #MySQL
You might like
php抓取网站图片并保存的实现方法
2015/10/29 PHP
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
python基于pygame实现响应游戏中事件的方法(附源码)
2015/11/11 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
Python hashlib模块实例使用详解
2019/12/24 Python
python基于opencv 实现图像时钟
2021/01/04 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
挂牌仪式策划方案
2014/05/18 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
五一劳动节慰问信
2015/02/14 职场文书
自考生自我评价
2019/06/21 职场文书
MySQL注入基础练习
2021/05/30 MySQL
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技