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

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

        MySQL是一种开放源代码的
关系型
数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--
结构化查询语言(SQL)
进行数据库管理。
查看方法:
show engines;
    MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDBBDB提供事务安全表,其它存储引擎都是非事务安全表。
    若要修改默认引擎,可以修改配置文件中的default-storage-engine。可以通过:show variables like 'default_storage_engine';查看当前数据库到默认引擎。命令:show engines和show variables like 'have%'可以列出当前数据库所支持的引擎。其中Value显示为disabled的记录表示数据库支持此引擎,而在数据库启动时被禁用。
    在MySQL5.1以后,INFORMATION_SCHEMA数据库中存在一个ENGINES的表,它提供的信息与show engines;语句完全一样,可以使用下面语句来查询哪些存储引擎支持事物处理:select engine from information_chema.engines where transactions = 'yes';
可以通过engine关键字在创建或修改数据库时指定所使用到引擎。
    主要存储引擎:MyISAM、InnoDB、MEMORY和MERGE介绍:
    在创建表到时候通过engine=...type=...来指定所要使用到引擎。show table status from DBname来查看指定表的引擎。

    1. MyISAM:这种引擎是mysql最早提供的。又可以分为静态MyISAM、动态MyISAM 和压缩MyISAM三种:

  • 静态MyISAM:如果数据表中的各数据列的长度都是预先固定好的,服务器将自动选择这种表类型。因为数据表中每一条记录所占用的空间都是一样的,所以这种表存取和更新的效率非常高。当数据受损时,恢复工作也比较容易。
  • 动态MyISAM:如果数据表中出现varchar、xxxtext或xxxBLOB字段时,服务器将自动选择这种表类型。相对于静态MyISAM,这种表存储空间比较小,但由于每条记录的长度不一,所以多次修改数据后,数据表中的数据就可能离散的存储在内存中,进而导致执行效率下降。同时,内存中也可能会出现很多碎片。因此,这种类型的表要经常用optimize table 命令或优化工具来进行碎片整理。
  • 压缩MyISAM:以上说到的两种类型的表都可以用myisamchk工具压缩。这种类型的表进一步减小了占用的存储,但是这种表压缩之后不能再被修改。另外,因为是压缩数据,所以这种表在读取时要先时行解压缩。

    但是,不管是何种MyISAM表,目前它都不支持事务、行级锁和外键约束的功能。

    2. MyISAM Merge引擎:这种类型是MyISAM类型的一种变种。合并表是将几个相同的MyISAM表合并为一个虚表。常应用于日志和数据仓库。

    3. InnoDB:InnoDB表类型可以看作是对MyISAM的进一步更新产品,它提供了事务、行级锁机制和外键约束的功能。

    4. memory(heap):这种类型的数据表只存在于内存中。它使用散列索引,所以数据的存取速度非常快。因为是存在于内存中,所以这种类型常应用于临时表中。

    5. archive:这种类型只支持select 和 insert语句,而且不支持索引。常应用于日志记录和聚合分析方面。

    6. CSV: 这种类型的存储引擎利用冒号分割值的格式将数据存在文本文件上。我们可以利用CSV存储引擎方便的对遵照CSV格式的数据进行导入导出或者与其他软件进行数据交换

    当然MySql支持的表类型不止上面几种。

如何选择(存储引擎之间的优缺点)

来源:Mysql官网

tip:Byte、KB、MB、GB、TB、PB、EB、ZB、YB、DB、NB。

Feature MyISAM Memory InnoDB Archive NDB
Storage limits 256TB RAM 64TB None 384EB
Transactions No No Yes No Yes
Locking granularity Table Table Row Row Row
MVCC No No Yes No No
Geospatial data type support Yes No Yes Yes Yes
Geospatial indexing support Yes No Yes No No
B-tree indexes Yes Yes Yes No No
T-tree indexes No No No No Yes
Hash indexes No Yes No No Yes
Full-text search indexes Yes No Yes No No
Clustered indexes No No Yes No No
Data caches No N/A Yes No Yes
Index caches Yes N/A Yes No Yes
Compressed data Yes No Yes Yes No
Encrypted data Yes Yes Yes Yes Yes
Cluster database support No No No No Yes
Replication support Yes Yes Yes Yes Yes
Foreign key support No No Yes No No
Backup / point-in-time recovery Yes Yes Yes Yes Yes
Query cache support Yes Yes Yes Yes Yes
Update statistics for data dictionary Yes Yes Yes Yes Yes

InnoDB support for geospatial indexing is available in MySQL 5.7.5 and higher.

InnoDB utilizes hash indexes internally for its Adaptive Hash Index feature.

InnoDB support for FULLTEXT indexes is available in MySQL 5.6.4 and higher.

Compressed MyISAM tables are supported only when using the compressed row format. Tables using the compressed row format with MyISAM are read only.

Compressed InnoDB tables require the InnoDB Barracuda file format.

Implemented in the server (via encryption functions), rather than in the storage engine.

Implemented in the server, rather than in the storage engine.

Implemented in the server, rather than in the storage engine.

参考资料:

转载地址:http://xdzoa.baihongyu.com/

你可能感兴趣的文章
《Raspberry Pi用户指南》——2.6 文件系统布局
查看>>
《数字图像处理与机器视觉——Visual C++与Matlab实现》——1.4 读取和写入图像文件...
查看>>
Design Pattern - 装饰模式
查看>>
《为iPad而设计:打造畅销App》——为什么iPad不是放大版的iPhone
查看>>
并发网系列文章集
查看>>
《从缺陷中学习C/C++》——6.17 String对象何时需delete
查看>>
支付宝能扫码闪电开发票了!人均省时3分钟
查看>>
【Spark Summit East 2017】FIS:加速FinTech数字智能
查看>>
MySQL · 社区见闻 · Oracle Open World 2016 见闻
查看>>
hadoop 1.1.2和 hive 0.10 和hbase 0.94.9整合
查看>>
XCoreRecyclerAdapter:更好用的Adapter For RecyclerView
查看>>
pdns 域名绑定 IP 故障备忘
查看>>
菜鸟—需求预测与分仓规划季军——“我们为R代言”团队赛后总结
查看>>
python 结巴分词(jieba)学习
查看>>
mac党如何解析bootchart
查看>>
Android面试之高级篇
查看>>
Fiddler (四) 实现手机的抓包
查看>>
Nginx学习之负载均衡
查看>>
【阿里云资讯】作战指挥系统碾压美军?!阿里双11破千亿背后的重大机密......
查看>>
zephir-(12)php函数和异常处理
查看>>