选择MariaDB的压缩数据引擎TokuDB
业务运用场景
- 数据基本不用update, 不频繁的范围查询
- 数据存储量较大(为以后准备)
- 选择占用磁盘较小的db
- 业务对数据库插入操作频繁,为避免影响其它业务,需要将直播业务的DB 独立出来,选择另外的db
db类型分析(只做简单表达,有兴趣可以自行了解)
sqlite
优点
- 整个数据库都包含在磁盘上的一个文件中,因此它有很好的迁移性
- 功能简约,小型化,追求最大磁盘效率
- 支持数据库大小至2TB
缺点
- SQLite 的数据库权限只依赖于文件系统,没有用户帐户的概念,
- SQLite 的缺陷之一是它的写入操作。这个数据库同一时间只允许一个写操作,因此吞吐量有限, mysql 连接插入5000条的时间是2.56秒,sqlite 是46.5秒 (本机操作)
- 不支持分布式
MongoDB
- 占用的空间很大,榆社政府网站因为它属于典型空间换时间原则的类型(直接不选择)
- 数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象
HBase (基本不符合应用场景)
- 海量数据存储能力,超高的数据读写性能
- HBase 不能支持 where 条件、Order by 查询,只支持按照主键 Rowkey 和主键的 range 来查询,但是可以通过 HBase 提供的 API 进行条件过滤
MariaDB(TokuDB 存储引擎TOKUDB_ZLIB 压缩算法)
优点
- TokuDB 除了支持现有的索引类型外, 还增加了(第二)集合索引, 以满足多样性的覆盖索引的查询, 费县县情网在快速创建索引方面提高了查询的效率
- 数据压缩。 官方的建议: 6核数以下的机器建议标准压缩, 反之可以使用高级别的压缩。
- 高压缩比,默认使用zlib进行压缩,尤其是对字符串(varchar,text等)类型有非常高的压缩比,比较适合存储日志、原始数据等。官方宣称可以达到1:12
- 在线添加索引,不影响读写操作
- 非常快的写入性能, Fractal-tree在事务实现上有优势,无undo log,官方称至少比innodb高9倍
- 数据量可以扩展到几个TB;
- 不会产生索引碎片
缺点:
- 不支持外键(foreign key)功能,如果您的表有外键,切换到 TokuDB引擎后,此约束将被忽略
- TokuDB 不适大量读取的场景,因为压缩解压缩的原因。CPU占用会高2-3倍,但由于压缩后空间小,IO开销低,平均响应时间大概是2倍左右。
- online ddl 对text,blob等类型的字段不适用
- 没有完善的热备工具,只能通过mysqldump进行逻辑备份
适用场景
- 访问频率不高的数据或历史数据归档
- 范围查询多
空间占用对比(一个索引)
类型 | 10W | 20W | 30W | 100W |
---|---|---|---|---|
mysql5.7(innodb) | 17M | 27M | 36M | 100M |
mysql5.7(myisam) | 5.8M | 11.8M | 17.9M | 59.7M |
sqlite3 | 7.2M | - | - | - |
mariadb(totudb) | 1.1M | 3.1M | 4.6M | 14.29M |
查询对比
类型 | 10W | 5W |
---|---|---|
mysql5.7 | 0.21 | 0.10 |
sqlite3 | 0.30 | 0.14 |
mariadb | 0.19 | 0.07 |
写入对比
类型 | 5000次 | 50000次 |
---|---|---|
mysql5.7 | 2.56 | 0.10 |
sqlite3 | 46.5 | 0.14 |
mariadb | 1.69 | 21.86 |
综合分析
- MariaDB(TokuDB 存储引擎) 场景基本全符合, 目前阿里,腾讯都有在线上使用(采用)
- sqlite 空间不占优势、整体速度不占优势(不采用)
- HBase 不能支持 where 条件、Order by 查询,只支持按照主键 Rowkey 和主键的 range 来查询,但是可以通过 HBase 提供的 API 进行条件过滤(不采用)
- MongoDB 占用空间大 (不采用)
- mysql5.7(myisam) 占用空间适中,但不是最优 (不采用)
选择MariaDB的压缩数据引擎TokuDB的更多相关文章
- 试用阿里云RDS的MySQL压缩存储引擎TokuDB
以前就用过自己搭建MySQL服务器的两种存储引擎MyISAM和InnoDB(也用过一点Memory方式),在今年初转向阿里云关系型数据库服务RDS的时候,看到可调参数中有一个TokuDB,不过不太了解 ...
- TokuDB · 引擎特性 · HybridDB for MySQL高压缩引擎TokuDB 揭秘
原文出处:阿里云RDS-数据库内核组 HybridDB for MySQL(原名petadata)是面向在线事务(OLTP)和在线分析(OLAP)混合场景的关系型数据库.HybridDB采用一份数据存 ...
- 数据库对比:选择MariaDB还是MySQL?
作者 | EverSQL 译者 | 无明 这篇文章的目的主要是比较 MySQL 和 MariaDB 之间的主要相似点和不同点.我们将从性能.安全性和主要功能方面对这两个数据库展开对比,并列出在选择数据 ...
- MySQL/MariaDB数据库的存储引擎
MySQL/MariaDB数据库的存储引擎 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL体系结构 连接管理模块: 负责接收远程用户的连接. 线程管理模块: 维护 ...
- 你需要知道的MySQL开源存储引擎TokuDB
在四月份的Percona Live MySQL会议上, TokuDB庆祝自己成为开源存储引擎整一周年.我现在仍能记得一年前它刚创建时的官方声明与对它的期望.当时的情况非常有意思,因为它拥有帮助MySQ ...
- MySql中启用InnoDB数据引擎的方法
1.存储引擎是什么? Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术, ...
- 修改mysql数据引擎的方法- 提高数据库性能
前言:同学告我说,他为了能使得数据查询变得快一点,修改的数据引擎,故查询一下,总结一下. 登录mysql后,查看当前数据库支持的引擎和默认的数据库引擎,使用下面命令: mysql>show en ...
- MySQL的数据引擎讲解
一.MySQL的数据引擎讲解 在MySQL数据库中,常用的引擎主要就是2个:Innodb和MyIASM. 1.简单介绍这两种引擎,以及该如何去选择. a.Innodb引擎,Innodb引擎提供了对数据 ...
- 【2019V2全新发布】ComponentOne .NET开发控件集,新增.NET Core数据引擎
ComponentOne .NET开发控件集 2019V2正式发布,除持续完善并加入全新的.NET开发控件外,还针对产品架构稳定性.易用性.与.NET Core平台深度集成.已有控件功能增强等多个方面 ...
随机推荐
- EF 连接 mysq l数据库 code first模式 的实践
准备工作: 1.下载vs2015 2.下载mysql2017 3.安装 开始: 1.创建 控制台文件 2.添加引用 Mysql.Data , Mysql.Data.Entity.EF6,Mysql.w ...
- Mac安装protobuf 流程
下载 https://github.com/google/protobuf/releases 找到对应版本下载 编译 cd protobuf./autogen.sh./configuremake 安装 ...
- GPU计算的后CUDA时代-OpenACC(转)
在西雅图超级计算大会(SC11)上发布了新的基于指令的加速器并行编程标准,既OpenACC.这个开发标准的目的是让更多的编程人员可以用到GPU计算,同时计算结果可以跨加速器使用,甚至能用在多核CPU上 ...
- Webpack4 学习笔记二 CSS模块转换
前言 此内容是个人学习笔记,以便日后翻阅.非教程,如有错误还请指出 webpack 打包css模块 webpack是js模块打包器, 如果在入口文件引入css文件或其它的less.sass等文件,需要 ...
- ABAP调用WebService时日期类型问题
在使用ABAP调用WebService时, 提示CX_SY_CONVERSION_NO_DATE_TIME,意思是日期格式不能转化. 究其原因是ABAP里没有相应的数据类型与WebService描述里 ...
- 基于mybatis设计简单OA系统问题1
全类名与全路径 全类名是某个文件在项目中的位置,格式为包名.类名 路径分为相对路径和绝对路径. 绝对路径是指这个文件在操作系统中的位置, 相对路径通过这个文件的上一级 ./ 或下一级/ 来指定文件 ...
- vim指令,快捷键汇总
Vim 命令.操作.快捷键全集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vi ...
- 使用JDBC操作数据库
准备工作 1.创建一个java项目导入mysql驱动包 2.在src目录中创建一个新的Java类 JDBC查询: package com.ATedu.test; import java.sql.Con ...
- ES6笔记03-Set和Map数据结构
ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值.Set本身是一个构造函数,用来生成Set数据结构. var s = new Set(); [2, 3, 5, 4, ...
- vue笔记v-if
如果ite.type=='培训',显示第一个img, 如果ite.type=='会议',显示第二个img