Atitit 数据库存储引擎

目录

1.1. BLACKHOLE 黑洞引擎 1

1.2. Myisam innodb 1

1.3. Archive 档案类 1

1.4. Fed 连接引擎 2

1.5. Memory 4

1.6. Merge 合并表引擎 4

1.7. Cluster 4

1.8. Bdb 4

1.9. Cluster/NDB 4

1.10. Custom 5

1.11. csv 5

1.12. MMAP内存映射存储引擎, 5

1.13. PERFORMANCE_SCHEMA 5

2. 2.常用两种引擎的选择 6

  1. BLACKHOLE 黑洞引擎

BLACKHOLE存储引擎是一个非常有意思的存储引擎,功能恰如其名,就是一个"黑洞".就像Unix系统下面的"/dev/null"设备一样,不管我们写入任何信息,都是有去无回,那么BLACKHOLE存储引擎有什么用呢?在我最初接触MySQL的时候也有过同样的疑问,不知道MySQL提供这样一个存储引擎给我们用意何在?但是在后来的一次数据的迁移过程中,正是BLACKHOLE给我带来了非常大的帮助,在那次数据迁移过程中,数据须要经过一个中转的MySQL服务器做一些相关的转换操作,然后再通过复制移植到新的服务器上面,可当时我没有足够的空间来支持这个中转服务器的动作,这时候就显示出BLACKHOLE的功效了,他不会记录下任何数据,但是会在binlog中记录下所有的Query.而这些Query最终都会被复制利用,并实施到最终的slave端.
    MySQL的用户手册上面介绍了BLACKHOLE存储引擎其他几项用途:
a.Query语法的验证;
b.测试二进制日志记录的性能开销,如通过比较允许二进制日志功能的BLACKHOLE与禁止二进制日志功能的BLACKHOLE的性能来实现.
c.查找与存储引擎自身不相关的性能瓶颈,因为BLACKHOLE本质上是一个"no-op"的存储引擎.

  1. Myisam innodb
  2. Archive 档案类

拥有很好的压缩机制,它使用zlib压缩库,在记录被请求时会实时压缩。

支持最基本的插入和查询两种功能。在MySQL 5.5开始支持索引。

不支持事务。支持行级锁和专用的缓存区,所以可以实现高并发的插入。

适合存储大量日志、历史数据。

  1. Fed 连接引擎

该存储引擎可以不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。
这种存储引擎非常适合数据库分布式应用。
Federated存储引擎可以使你在本地数据库中访问远程数据库中的数据,针对federated存储引擎表的查询会被发送到远程数据库的表上执行,本地是不存储任何数据的。

场景: dblink。

缺点:

1.对本地虚拟表的结构修改,并不会修改远程表的结构

2.truncate 命令,会清除远程表数据

3. drop命令只会删除虚拟表,并不会删除远程表

4.不支持 alter table 命令

5. select count(), select  from limit M, N 等语句执行效率非常低,数据量较大时存在很严重的问题,但是按主键或索引列查询,则很快,如以下查询就非常慢(假设 id 为主索引)

select id from db.tablea where id >100 limit 10 ;

而以下查询就很快:

select id from db.tablea where id >100 and id<150

6.  如果虚拟虚拟表中字段未建立索引,而实体表中为此字段建立了索引,此种情况下,性能也相当差。但是当给虚拟表建立索引后,性能恢复正常。

7. 类似 where name like "str%" limit 1 的查询,即使在 name 列上创建了索引,也会导致查询过慢,是因为federated引擎会将所有满足条件的记录读取到本,再进行 limit 处理。

  1. Memory
  2. Merge 合并表引擎

Merge

Merge允许将一组使用MyISAM存储引擎的并且表结构相同(即每张表的字段顺序、字段名称、字段类型、索引定义的顺序及其定义的方式必须相同)的数据表合并为一个表,方便了数据的查询。

场景:MySQL中没有物化视图,视图的效率极低,故数据仓库中数据量较大的每天、每周或者每个月都创建一个单一的表的历史数据的集合可以通过Merge存储引擎合并为一张表。

  1. Cluster
  2. Bdb
  3. Cluster/NDB

该存储引擎用于多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大、安全和性能要求高的场景。

CAP理论。CAP理论(Brewer’s CAP Theorem) ,是说Consistency(一致性), Availability(可用性), Partition tolerance(分布) 三部分在系统实现只可同时满足二点,没法三者兼顾。如果对"一致性"要求高,且必需要做到"分区",那么就要牺牲可用性;而对大型网站,可用性与分区容忍性优先级要高于数据一致性,一般会尽量朝着 A、P 的方向设计,然后通过其它手段保证对于一致性的商务需求。

  1. Custom
  2. csv

每个表会生成一个.CSV文件,将CSV类型的文件当做表进行处理。

把数据以逗号分隔的格式存储在文本文件中,这种文件是一种普通文本文件,每个数据行占用一个文本行。

不支持索引,即使用该种类型的表没有主键列,也不允许表中的字段为null。

  1. MMAP内存映射存储引擎,

MongoDB使用的是内存映射存储引擎,即Memory Mapped Storage Engine,简称MMAP。

  1. PERFORMANCE_SCHEMA

PERFORMANCE_SCHEMA:

该引擎主要用于收集数据库服务器性能参数。这种引擎提供以下功能:提供进程等待的详细信息,包括锁、互斥变量、文件信息;保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期,例如(CYCLE、MICROSECOND)。 MySQL用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。

场景: DBA能够较明细得了解性能降低可能是由于哪些瓶颈

  1. 常用两种引擎的选择

    1. MyISAM与InnoDB

InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。

基本的差别为: MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。

所以从宏观来讲,事务数据库关注细节,而数据仓库关注高层次的聚集,所以,InnoDB更适合作为线上的事务处理,而MyISAM更适合作为ROLAP型数据仓库。

从接触的应用逻辑来说,select count(*) 和order by 是最频繁的,大概能占了整个sql总语句的60%以上的操作,而这种操作Innodb其实也是会锁表的,很多人以为Innodb是行级锁,那个只是where对它主键是有效,非主键的都会锁全表的。但MYISAM对于count操作只需要在元数据中读取,不用扫表。

6.如果是用MyISAM的话,merge引擎可以大大加快数据仓库开发速度,非常适合大项目总量约几亿的rows某一类型(如日志,调查统计)的业务表。

Atitti 存储引擎支持的国内点与特性attilax总结

MySQL各种存储引擎介绍与适用场景 - - SegmentFault 思否.html

Atitit 数据库存储引擎 目录 1.1. BLACKHOLE 黑洞引擎 1 1.2. Myisam innodb 1 1.3. Archive 档案类 1 1.4. Fed 连接引擎 2 1.相关推荐

  1. 手把手教你轻松学会数据库存储数据类型(数据库入门必看)

    数据库存储数据类型 目录 数据类型 1 numeric数字类型 2 string 字符串 3 date.time.datetime日期相关类型 4 enum set 复合类型 5 bit 布尔 6 j ...

  2. android新闻管理,Android资讯新闻类App(头条、网易等),频道管理集成之数据库存储...

    Android资讯新闻类App(头条.网易等),频道管理集成之数据库存储 发布时间:2019-01-16 19:55, 浏览次数:305 , 标签: Android App * 经常看新闻类的大家都知 ...

  3. Mysql的数据库引擎 区别特点_mysql数据库存储引擎及区别

    MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(BerkeleyDB).EXAMPLE.FEDERA ...

  4. MySQL 数据库存储引擎介绍

    文章目录 一.存储引擎概念介绍 二.MyISAM 存储引擎 1. MyISAM 简介 2. MyISAM 表支持 3 种不同的存储格式 (1) 静态(固定长度)表 (2) 动态表 (3) 压缩表 3. ...

  5. 数据库存储引擎学习总结

    什么是存储引擎以及不同存储引擎特点 http://www.cnblogs.com/wildfox/p/5815414.html 以前一直玩Oracle数据库,整天围着业务需求和执行计划转,刚刚接触My ...

  6. mysql 主库innodb从库myisam_MySQL的两种常用数据库存储引擎:MyISAM与InnoDB

    问题1:MySQL的data里的网站数据库里只有.frm 而没有.MYD和.MYI文件? 解释:首先排除误删的情况,那么,你的此数据库的存储引擎可能为innoDB类型(把数据库导入为.sql后,可以在 ...

  7. MySQL 数据库存储引擎

    目录 一.存储引擎简介 二.MyISAM存储引擎 1.MylSAM介绍 2.MyISAM表支持3种不同的存储格式 3.MylSAM的特点 4.MyISAM使用的生产场景 三.InnoDB存储引擎 1. ...

  8. MYSQL数据库--存储引擎

    前言 数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建.查询.更新和删除数据操作.简而言之,存储引擎就是指表的类型.数据库的存储引擎决定了表在计算机中的存储方式.不同的存储引擎提 ...

  9. 数据库存储引擎—InnoDB,MyISAM,Memory

    数据库存储引擎-InnoDB,MyISAM 存储引擎 首先,什么是存储引擎: Mysql用各种不同的存储技术,将数据存储到文件或内存中.数据库存储引擎是数据库的底层的软件组件,数据库可以使用数据存储引 ...

  10. 数据库存储引擎大揭秘,不看不知道这里面的骚操作可真多!

    B+树被广泛应用于MySQL数据库的索引实现,不过并未展开细说,但是呢B+树是一种重要的数据结构,常年出现在各种面试题中,这次就来一起学习下和B+树相关的MySQL索引底层实现的内容. 面试官:简单讲 ...

最新文章

  1. Hibernate的主键生成器generator(zhuan)
  2. 二进制字符串模5的值(有限状态机法)
  3. python3.6.1安装教程-Linux下python3.6.1环境配置教程
  4. android 获取apk中的素材图片
  5. 数据结构:(翻转二叉树) 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适
  6. tornado 08 数据库-ORM-SQLAlchemy-表关系和简单登录注册
  7. 前端学习(1613):oracle基本概念
  8. redis windows安装
  9. 发展分布式光伏要理顺价格机制
  10. 多窗口文件管理软件 Q_Dir
  11. Blackrock的思考与启示
  12. NUAA第四届“节能小屋”大赛工艺组“一等奖”作品——新能源智慧食堂
  13. MySQL-Workbench数据库基本操作
  14. Linux之nslookup命令使用详解—网络故障定位(一)
  15. 如何无损把mp4视频格式转换成mp3音频格式
  16. Azure Az-900认证 04——-考取AZ900所有知识点总结--获取证书!
  17. java判断时间日期是否等于当前日期
  18. 【Pytorch实战6】一个完整的分类案例:迁移学习分类蚂蚁和蜜蜂(Res18,VGG16)
  19. uniapp生成android并调用第三方sdk的拍照进行身份证识别
  20. 做自媒体前期如何开始?

热门文章

  1. windows GDI开发
  2. 网页英文 错位_网页错位原因解决方法
  3. is exists可以传数组查询吗_C++中数组类型的操作
  4. 常用的html语言,常用的HTML语言标记
  5. html 高度塌陷,CSS之高度塌陷问题解决方案
  6. lua游戏脚本自动打怪_了解Lua(官方文档翻译)
  7. Goland 学习笔记之--govendor
  8. Yii2给数据库表添加字段后对应模型无法识别到该属性的原因和解决办法
  9. 数据库交易记录--如何添加审计信息到闪回归档数据以替换操作日志表
  10. 使用$.getJSON解决ajax跨域访问 JQuery 的跨域方法(服务器端为wordpress程序)