MySQL 存储引擎 原

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

存储引擎的使用

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

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

- 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 字段处理

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

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存储引擎来存储非永久需要的数据,或者是能够从基于磁盘的表中重新生成的数据。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏抠抠空间

mysql之引擎、Explain、权限详解

20140
来自专栏java 成神之路

聚簇索引和二级索引

53740
来自专栏乐沙弥的世界

SQL基础-->数据库事务(TRANSACTION)

数据库事务是指作为单个逻辑工作单元执行的一系列操作,可以认为事务就是一组不可分割的SQL语句

8930
来自专栏猿人谷

Mysql中DDL, DML, DCL, 和TCL是什么?

在一些公司中提交给测试团队的SQL脚本会划分为DDL、DML等,但这些概念到底是如何定义的呢?

13040
来自专栏智能合约

数据插入失败引发的主键auto_increment问题

40830
来自专栏蓝天

MYSQL不能从远程连接的一个解决方法

ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server

10120
来自专栏吴柯的运维笔记

mysql数据库服务概述

什么是数据库? ? 常见数据库服务软件介绍: ? mysql数据库的特点及应用: ? 数据库基本管理 # mysql -u root -p -h 127.0...

31580
来自专栏java学习

oracle数据库的常用的命令操作!

Java基础 | 数据库 | Android | 学习视频 | 学习资料下载 最新通知 数据库技术是计算机科学技术的一个重要分支。从20世纪50年代中期开始,...

33370
来自专栏北京马哥教育

数据库基础知识:数据库中的约束和三大范式

? 一.数据库中的范式: 范式, 英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后...

33470
来自专栏用户2442861的专栏

【Linux】Ubuntu下C语言访问MySQL数据库入门

首先以用户rick登录MySQL数据库(用户rick已经被root权限用户赋予了创建数据库等等的权限):

23230

扫码关注云+社区

领取腾讯云代金券