博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 存储引擎
阅读量:6143 次
发布时间:2019-06-21

本文共 2816 字,大约阅读时间需要 9 分钟。

hot3.png

不同存储引擎底层数据的存储方式不一样

使用如下命令:

mysql> show global variables like "%datadir%";

09ba343741f83b2237a82760851c1e4e35d.jpg

存储引擎的使用

数据库中的各表均被(在创建表时)指定的存储引擎来处理。

服务器可用的引擎依赖以下的因素:

- MySQL的版本

- 服务器在开发时如何被配置

- 启动选项

为了解当前服务器中有哪些存储引擎可用,可使用SHOW ENGINES语句:

mysql> show engines;+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         || MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         || MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         || BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         || MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         || InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        || ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         || PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         || FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+9 rows in set

常用的存储引擎

1、MyISAM存储引擎

   MyISAM 存储引擎是MyISAM 最常用的引擎。

它管理的表具有以下特征:

- 使用三个文件表示每个表

* 格式文件 - 存储表结构的定义(mytable.frm)

* 数据文件 - 存储表行的内容(mytable.MYD)

* 索引文件 - 存储表上索引(mytable.MYI)

- 灵活的AUTO_INCREMENT 字段处理

- 可被转换为压缩、只读来节省空间

105543_xJu0_3069003.png

2、InnoDB存储引擎

 InnoDB存储引擎是MySQL的缺省引擎。

 它管理的表具有下列主要特征:

- 每个InnoDB表在数据库目录中以.frm格式文件表示

- InnoDB表空间tablespace被用于存储表的内容

- 提供一组用来记录事务性活动的日志文件

- 用 COMMIT、SAVEPOINT及ROLLBACK支持事务处理

- 提供全ACID兼容

- 在MySQL服务器奔溃后提供自动恢复

- 多版本(MVCC)和行级锁定

- 支持外键及引用的完整性,包括级联删除和更新

 

3、MEMORY存储引擎

使用MEMORY存储引擎的表,其数据存储在内存中,且行的长度固定,这两个特点使得MEMORY存储引擎非常快。

MEMORY存储引擎管理的表具有以下特征:

- 在数据库目录中,每个表均以.frm格式的文件表示

- 表数据及索引被存储在内存中

- 表级锁机制

- 不能包含TEXT或BLOB字段

MEMORY存储引擎以前被称为HEAP引擎。

选择合适的存储引擎

*  MyISAM表最适合于大量的数据读而少量数据更新的混合操作。MyISAM表的另一种使用情形是使用压缩只读表

* 如果查询中包含较多的数据更新操作,应该使用InnoDB。其行级锁机制和多版本的支持为数据读取和更新的混合操作提供了良好的并发机制。

* 可使用MEMORY存储引擎来存储非永久需要的数据或者是能够从基于磁盘的表中重新生成的数据。

转载于:https://my.oschina.net/wuweixiang/blog/1544014

你可能感兴趣的文章
Go 2提上日程,官方团队呼吁社区给新特性提案提交反馈
查看>>
技术绩效考量:你们可能都做错了
查看>>
“亲切照料”下的领域驱动设计
查看>>
除了输入法,移动端AI还有哪些想象空间?
查看>>
回家路上想起来关于Js一个有趣的东西
查看>>
B端大数据应用的架构实践与思考
查看>>
2019 SRE 调查报告:事故处理是主要工作,SRE 压力山大
查看>>
React创建组件的三种方式及其区别
查看>>
大中型企业的天网:Apache Geode
查看>>
Windows Server已可安装Docker,Azure开始支持Mesosphere
查看>>
本地部署比SaaS更容易满足GDPR要求吗?
查看>>
业内预测:2017中国光通信设备规模将达近千亿元
查看>>
网页开发从业者仍更重视桌面程序及网页应用
查看>>
如何解决mysql数据库8小时无连接自动关闭
查看>>
ASP.NET Aries 入门开发教程5:自定义列表页工具栏区
查看>>
Rushcrm:如何利用CRM系统的权限设置
查看>>
《Cisco IPv6网络实现技术(修订版)》一2.7 复习题
查看>>
Facebook 开源 Android 调试工具 —— Stetho
查看>>
生活不止有苟且,还有N个免费DevOps开源工具
查看>>
视频直播Android推流SDK初体验
查看>>