首页 / MYSQL / MySql存储引擎探索
MySql存储引擎探索
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySql存储引擎探索,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2467字,纯文字阅读大概需要4分钟。
内容图文
数据库存储引擎 :
是数据库底层软件组织,数据库管理系统( DBMS )使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。
这些不同的技术以及配套的相关功能在 MySQL 中被称作存储引擎 ( 也称作表类型 )
我的理解: 他是一种底层技术,一种解决方案,引擎就相当于数据库开发组将常用的一些数据库的存储问题解决方法,拼接起来组成一个套餐。你使用套餐 1 , 2 , 3 可以对应解决一一系列不同的问题
MySQL 的存储引擎
InnoDB : 5.5 版本后 Mysql 的默认数据库,事务型数据库的首选引擎,支持 ACID 事务,支持行级锁定
BDB : 源自 Berkeley DB ,事务型数据库的另一种选择,支持 COMMIT 和 ROLLBACK 等其他事务特性
Memory :所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在 Mysql 重新启动时丢失
Merge :将一定数量的 MyISAM 表联合而成一个整体,在超大规模数据存储时很有用
Archive :非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。 Archive 拥有高效的插入速度,但其对查询的支持相对较差
Federated : 将不同的 Mysql 服务器 联合起来,逻辑上组成一个完整的数据库。非常适合 分布式应用
Cluster/NDB :高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用
CSV : 逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个 .CSV 文件。这是一种普通文本文件,每个数据行占用一个文本行。 CSV 存储引擎不支持索引。 --- 我记得这个就是用来存储索引的 ....?
BlackHole : 黑洞引擎,写入的任何数据都会消失,一般用于记录 binlog 做复制的中继 ???
存储
找到 Mysql 的数据路径
C:\ProgramData\MySQL\MySQL Server 5.6\data 中找到对应表格的所有文件
如果引擎为 MYISAM 那么一张表一般存储 3 个文件
这个图标识 如果 col1 是一个索引列,那么查找时我就会先去查找索引文件( MYI )然后根据索引的数据结构( B+Tree )快速定位到 49 数据的地址,然后再去 MYD (数据)中查到地址对应的数据
增加索引后, MYI 文件中新增了对应的数据内容
之前似乎会有个 .frm 存储表结构,现在字段似乎都存在别的统一存在别的文件里了 可能是这个 你也能找到 log 文件 非常庞大 估计就是用来存各种操作的
InnoDB 引擎
我们尝试打开一个未加索引的 db 查看他的存储格式
1. 发现存储一个 ibd 文件最小也要 112KB
2. 存储的方式
t_test 只有 4 行数据:
t_test.idb 文件打开后:
1. 在文件中找不到表结构字段(搜索 ID name 是找不到的)
2. 搜索主键 ID 150701201 也是找不到的
3. 加了 name 索引后 文件中多了两行 (数字估计是以二进制存的)
MongoDB 的存储引擎
serverStatus 查看到 storageEngine https://mongoing.com/archives/25432
各类存储引擎说明 : https://mongoing.com/archives/1533
MMAPv1 MMAPV1StorageEngine 包含了 mmapv1 存储引擎的所有实现逻辑。
WiredTiger https://docs.mongodb.com/manual/core/wiredtiger/index.html
KVStorageEngine KVStorageEngine 实际上不是一个真正存储引擎的实现,只是为了方便接入 wiredTiger 、 rocks 等 KV 类型的存储引擎而增加的一个抽象层。 KVStorageEngine 实现了 StorageEngine 的接口,但其实现由 KVEngine 类代理, wiredTiger 等 KV 存储引擎接入 mongdb 时,只需实现 KVEngine 定义的接口即
WiredTigerKVEngine WiredTigerKVEngine 继承 KVEngine ,实现 KVEngine 的接口,其他的引擎如 RocksEngine 类似。
inMemory https://docs.mongodb.com/manual/core/inmemory/index.html
· 如果参数值是 wiredTiger , MongoDB 使用的存储引擎是 WiredTiger ,将数据持久化存储在 Disk Files 中;
· 如果参数值是 inMemory , MongoDB 使用的存储引擎是 In-Memory ,将数据存储在内存中;
ACID
事务的四个特点
原子性( atomicity)
一致性( consistency)
隔离性( isolation )不同的事务并发操作相同的数据时,每个事务都有各自完成的数据空间,即一个事务内部的操作及使用的数据对其他并发事务时隔离的,并发执行的各个事务之间不能相互干扰。
持久性( durability )
DDL
数据库模式定义语言 DDL (Data Definition Language)
原文:https://www.cnblogs.com/RikuBlog/p/13296463.html
内容总结
以上是互联网集市为您收集整理的MySql存储引擎探索全部内容,希望文章能够帮你解决MySql存储引擎探索所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。