![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据存储
数据存储相关
October-
多学习
展开
-
2020年 InfoWorld的 最佳开源奖
在2020年的25位获奖软件中,我们将发现一系列常见的前沿项目工具。翻译 2020-11-09 23:02:42 · 909 阅读 · 0 评论 -
NewSQL ---- Mysql.8.0 与 MemSQL 7.0 大数据量查询性能对比
目录1测试环境以及测试用例设计1.1测试环境1.2测试用例设计2 千万级数据量性能测试对比2.1 MemSQL时间范围分页查询2.1.1 性能测试数据2.2任务信息查询2.2.1 性能测试数据2.3 执行批次范围查询2.3.1 性能测试数据2.4 批次任务查询2.4.1 性能测试数据2.5 聚合查询2.5.1 性能测试数据2.5 系统资源监控数据2.6总结2.7 图表性能分析2.7.1查询时间对比2.7.2吞吐量对比3 稳定性测原创 2020-08-16 15:40:22 · 1174 阅读 · 0 评论 -
NewSQL ---- Mysql.8.0 与 CockroachDB.v20 大数据量查询性能对比
1测试环境以及测试用例设计1.1测试环境Mysql 和Mongodb 都是 4C/8G,测试接口都是通过Spring boot 微服务rest接口测试。MySQL 数据中的表和mongodb中集合都设创建了相同的索引。其中create_time 都使用了降序索引。1.1.1 Mysql 索引1.1.1 CockroachDB 索引1.2测试用例设计1.2.1时间范围分页查询参数/result/{page}/{size}/{startTime}/{endTime}1.2原创 2020-08-03 01:37:30 · 1920 阅读 · 1 评论 -
NewSQL ---- Docker 优化部署 MemSQL
MemSQL 部署稍微比较麻烦,需要设置LICENSE_KEY。镜像一定使用memsql/cluster-in-a-box,之前的镜像已经废弃了。这个镜像也只能用于测试。1、设置LICENSE_KEY这里提供一个我申请的 licenseBGY2ODhiMWE1MTk3YzQ0YjhhNzdmYzU3NTdiOTFmNDQ4AAAAAAAAAAAEAAAAAAAAAAwwNAIYeZemlJfrUTxFC542kaiZmYR0jbSkfxX9AhhGXF4PBIYNzGpP2d17vnlt7uo原创 2020-08-02 21:34:50 · 385 阅读 · 0 评论 -
NewSQL ---- Docker部署 cockroachdb数据库
CockroachDB是一款开源的分布式数据库,具有NoSQL对海量数据的存储管理能力,又保持了传统数据库支持的ACID和SQL等,还支持跨地域、去中心、高并发、多副本强一致和高可用等特性。支持OLTP场景,同时支持轻量级OLAP场景。 官方有定制好的Docker镜像可以直接使用。这里提供两种部署方式 分布是 手动docker部署和 docker-compose一键部署。1 手动部署详细参考:用户手册1.1 脚本这里整理一份直接copy 使用的脚本,并添加了性...原创 2020-07-25 18:56:12 · 592 阅读 · 0 评论 -
NewSQL ---- 常用NewSQL数据库梳理
很多企业都需要处理来自多个数据源的复杂数据,因此需要利用数据库管理系统来存储和管理数据。现在,有很多不同类型的数据库系统,而找到一个正确的数据库不是一件容易的事。这需要考虑业务需求,以便选择正确的数据库管理系统。企业使用关系数据库管理系统(RDBMS)来存储和管理他们的数据。然而,这些系统无法处理海量的复杂数据,无法满足当今数据库用户的需求。因此,很多企业都在寻找能够在保持传统数据库系统重要特性的同时,也能提供可伸缩性、可用性和高性能的数据库系统。数据库软件供应商也已经确定了这一需求,并开发了NewSQ原创 2020-07-19 16:47:22 · 10140 阅读 · 0 评论 -
开源中间件Vitess助力MySQL实现分库分表
关于VitessVitess自2011年以来一直为YouTube的所有数据库流量提供服务,目前已被许多企业采用,以满足其生产需求。Vitess是一个用于部署、扩展和管理大型mysql实例集群的数据库解决方案。它的架构是在公共或私有云架构中高效运行,就像在专用硬件上一样。它结合并扩展了许多重要的mysql特性和nosql数据库的可伸缩性。Vitess可以解决以下问题1. 实现M...转载 2019-12-10 18:53:33 · 1894 阅读 · 0 评论 -
NewSQL ---- MYSQL与TiDB 简单的性能测试对比
目录摘要1测试环境以及测试用例设计1.1测试环境1.2测试用例设计2百万级数据量性能测试对比2.1数据总量2.2性能测试报告2.3图表分析摘要对于百万级数据,mysql足够了,没必要使用TiDB或者MongoDB等Nosql 数据库。1测试环境以及测试用例设计1.1测试环境Mysql 和 TiDB 都是 4C/8G,测试接口都是通过Spring ...原创 2019-11-17 12:52:04 · 7047 阅读 · 0 评论 -
Docker 一键部署Redis Cluster 集群
适用centos操作系统1、安装docker 和 docker-compose参考 官方文档:https://docs.docker.com/compose/install/2、准备docker-compose.yml创建工作目录,并把docker-compose.yml放到改目录下 mkdir -p /data/redis/version: '3'services...原创 2020-03-28 15:40:33 · 487 阅读 · 0 评论 -
MongoDB.4.2 分片查询性能对比
摘要:简单对比分片情况下的查询性能,具体测试用例参考:https://blog.csdn.net/weixin_41715077/article/details/1028793571、百万数据比较少,其实不用分片1.2、查询性能对比占比越高说明性能越好。1.3 吞吐量对比占比越低说明吞吐量越高。2、千万数据2.2、查询性能对比占比越高...原创 2019-11-24 23:19:44 · 1139 阅读 · 0 评论 -
MongoDB Could not find host matching read preference { mode: \"primary\" } for set shard1
使用的集群部署方式是 副本集(Replica set)+分片(Sharding)。遇到这个问题,应该是副本集或者分片节点有宕机的情况。重启 config server (mongo 服务) 重启 分片服务(mongod服务集群) 重启 mongos。...原创 2019-11-19 18:42:16 · 5575 阅读 · 1 评论 -
NewSQL---- MYSQL 数据迁移到 TiDB 的几种方式
目录1、使用MYSQL数据库的管理工具1.1数据传输1.2 备份1.3 转储SQL的功能2、mysqldump3、mydumper(官方推荐)4、简单测试1、使用MYSQL数据库的管理工具以最常用的Navicat为例。类似的还有phpMyAdmin等。1.1数据传输Navicat 11以及之前的版本都有,数据传输的功能。对于数据量比较小的库,比如...原创 2019-11-15 19:46:47 · 2926 阅读 · 0 评论 -
MongoDB 聚合查询优化——映射关系是多对一的情况
1、业务场景映射关系是多对一的情况,根据多的字段进行聚合分页查询。比如根据任务列表查询其任务执行的最新几个批次的聚合信息,任务和批次是多对一的。前提条件是:使用的字段已经创建了索引。2、使用一个SQL查询db.pl_task_result.aggregate([{$match:{ task_id:{'$in':[620656410523615232, 6206564105445...原创 2019-11-10 21:32:59 · 515 阅读 · 0 评论 -
Mysql.8.0 与 MongoDB.4.2大数据量查询性能对比
目录摘要1测试环境以及测试用例设计1.1测试环境1.2测试用例设计2百万级数据量性能测试对比2.1数据总量2.2性能测试报告2.3图表分析与总结3 千万级数据量性能测试对比3.1 数据总量3.2 性能测试报告3.1数据总量3.2性能测试报告3.3图表分析4 总结摘要项目中使用MySQL存储采集的数据,但是查询遇到了性能瓶颈,前一段...原创 2019-11-03 09:23:36 · 12495 阅读 · 9 评论 -
Jedis与Redisson详细对比
1、Jedis技术特点比较全面支持redis命令,包括redis 2.8.x and 3.x.x.支持Redis cluster支持sentinel哨兵模式使用阻塞的I/O,同步调用不支持异步不是线程安全的All of the following redis features are supported:Sorting Connection handling C...原创 2019-10-08 19:11:19 · 10735 阅读 · 0 评论 -
RedisTemplate使用PipeLine的总结
最近做一个统计项目,数据量非常大,之前使用scan命令对redis中指定key进行扫描,一次100条,执行稳定、效率低,同时tcp关闭连接的time-wait增速相当的快,对性能造成了极大的浪费同时执行时间也很慢,而且当数据量进一步增大可能会影响其他服务。为了减少tcp连接数量,将redis的scan修改为pipeLine操作。一、为什么要使用Pipeline? Redis是...转载 2019-04-15 17:47:28 · 7927 阅读 · 3 评论 -
Redis 中的事件驱动模型
Redis 是一个事件驱动的内存数据库,服务器需要处理两种类型的事件。文件事件 时间事件下面就会介绍这两种事件的实现原理。文件事件Redis 服务器通过 socket 实现与客户端(或其他redis服务器)的交互,文件事件就是服务器对 socket 操作的抽象。 Redis 服务器,通过监听这些 socket 产生的文件事件并处理这些事件,实现对客户端调用的响应。React...转载 2019-04-15 17:43:38 · 566 阅读 · 0 评论 -
docker 部署 MYSQL8 (可用于生产环境)
1、拉取镜像;docker pull mysql#拉取的是最新的官方mysql docker 镜像,也可以制定版本2、创建挂载的目录:#配置文件mkdir /home/docker/mysql/conf#扩展配置mkdir /home/docker/mysql/conf.d#数据库存储路径mkdir /home/docker/mysql/data如果有需...原创 2020-03-21 23:30:30 · 4390 阅读 · 0 评论 -
MySQL8.0 Generated Column 函数索引(五)——索引优化
MySQL支持对generated columns创建索引。例如:CREATE TABLE t1 (f1 INT, gc INT AS (f1 + 1) STORED, INDEX (gc));generated columns gc用表达式f1+1定义,并创建索引,SQL优化器可以在执行计划期间会选择使用这个索引。在下面的查询中,WHERE条件中使用了gc,SQL优化器会推算使用这个索...翻译 2019-12-22 19:08:34 · 258 阅读 · 0 评论 -
MySQL8.0 Generated Column 函数索引(四 ) —— JSON列的Generated Column 索引
在Innodbr中JSON 列使用函数索引JSON类型的列不能直接创建索引,但可以间接创建索引,可以定义一个 Generated Column列,该列提取JSON字段的部分信息,然后在Generated Column列上创建索引,如以下示例所示:mysql> CREATE TABLE jemp ( -> c JSON, -> g INT ...原创 2019-12-22 17:13:17 · 919 阅读 · 0 评论 -
MySQL8.0 Generated Column 函数索引(三 )——注意事项
InnoDB只支持虚拟 generated columns的二级索引,不支持其他索引类型。在虚拟列上定义的二级索引有时称为“虚拟索引”。可以在一个或多个虚拟列上,或者在虚拟列和常规列的组合上,或者在存储的生成列上创建二级索引。包含虚拟列的二级索引可以定义为唯一索引。在虚拟 generated columns上创建二级索引时, generated columns值将具体化到索引的记录中。如果...原创 2019-12-22 13:25:58 · 354 阅读 · 0 评论 -
MySQL8.0 Generated Column 函数索引(一)——使用规范
1、示例CREATE TABLE支持generated columns的规范。generated columns的值是根据列定义中包含的表达式计算的。NDB存储引擎也支持Generated columns。下面的简单示例显示如何创建一个表,该表在sidea和sideb列中存储直角三角形边的长度,并在sidec中计算斜边的长度(其他边平方和的平方根)CREATE TABLE tri...翻译 2019-12-21 23:17:52 · 685 阅读 · 0 评论 -
MySQL5.7 Generated Column 函数索引(二)
官网原文:https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html注:以下是我参考官网文档和结合自己的理解写的,因为英文水平有限,不排除有错误,欢迎纠错。一、说明 Generated Column是MySQL 5.7引入的新特性,所谓Cenerated Column,就是数据库中这一列由其他...转载 2019-12-21 23:09:55 · 684 阅读 · 0 评论 -
mysql 8版本中 JSON类型转换规则
最近在做数据分析,使用了JSON字段,在数据转换的时候老是出问题(本地使用了MYSQL8的版本),后来发现是MYSQL8默认使用utf8mb4编码格式的问题,生产环境是用的MYSQL7版本。这里把格式转换规则贴出来,以供参考 类型 其他类型(varchar\text\blob等)转为JSON JSON转为其他类型(varchar\text\bl...原创 2019-12-21 18:54:55 · 1505 阅读 · 0 评论 -
如何删除慢查询表slow_log中数据
1、开启慢查询到slow_log表 set global slow_query_log = on; set global long_query_time=1; set global log_output='TABLE';2、如何清空?直接删除数据 delete from slow_log 会报异常[SQL]delete fr...原创 2019-09-24 19:22:16 · 1588 阅读 · 0 评论 -
MYSQL Explan 结果分析--Extra详解
目录Using Index ConditionUsing where; Using indexUsing indexUsing whereUsing filesortUsing temporaryUsing join buffer (Block Nested Loop):奇葩的情况:(Using index condition; Using where; Using...原创 2019-09-17 20:13:43 · 2472 阅读 · 0 评论 -
MySQL8.0新特性(二)
MySQL从5.7一跃直接到8.0,这其中的缘由,咱就不关心那么多了,有兴趣的朋友自行百度,本次的版本更新,在功能上主要有以下6点: 账户与安全 优化器索引 通用表表达式 窗口函数 InnoDB 增强 JSON 增强一、账户与安全1.用户的创建与授权 在MySQL5.7的版本: > grant all privileges on...转载 2019-09-17 14:10:07 · 155 阅读 · 0 评论 -
MySQL8.0新特性(一)
1. 默认字符集由latin1变为utf8mb4在8.0版本之前,默认字符集为latin1,utf8指向的是utf8mb3,8.0版本默认字符集为utf8mb4,utf8默认指向的也是utf8mb4。注:在Percona Server 8.0.15版本上测试,utf8仍然指向的是utf8mb3,与官方文档有出入。Warning | 3719 | 'utf8' is currently ...转载 2019-09-17 14:06:33 · 300 阅读 · 0 评论 -
mycat技术选型问题
列举一些大的方面,这里不深入细节。mysql 版本问题,根据测试mycat支持比较好的依然是mysql5.6 对于AWS和阿里云的MySQL支持不是太好,尤其是AWS的RDS. Mycat 本身技术局限性,毕竟是java开发的,性能上与官方的mysql-proxy相比较还是有比较大的差距的。 Sql 优化难。mycat有很多不支持的SQL,如果团队中没有好的DBA做技术支撑,SQL优化会...原创 2019-09-08 00:25:47 · 387 阅读 · 3 评论 -
10分钟让你明白MySQL是如何利用索引的
一、前言在MySQL中进行SQL优化的时候,经常会在一些情况下,对MySQL能否利用索引有一些迷惑。譬如:MySQL 在遇到范围查询条件的时候就停止匹配了,那么到底是哪些范围条件? MySQL 在LIKE进行模糊匹配的时候又是如何利用索引的呢? MySQL 到底在怎么样的情况下能够利用索引进行排序?今天,我将会用一个模型,把这些问题都一一解答,让你对MySQL索引的使用不再畏惧...转载 2019-04-16 18:26:41 · 378 阅读 · 0 评论 -
那些你不知道的 JDBC 异常类型
那些你不知道的 JDBC 异常类型(1)java.sql.SQLException: connection holder is null连接超时,主要是 update 或者select 的数据量太大超过,连接持有时间。解决方式;分片查询 最好 2000以内,查询出来就立刻处理。否则数据量大的时候,会占用很多的JVM内存。对应配置:主要是数据库连接池的配置, druid 对应removeA...原创 2018-12-05 19:17:15 · 7334 阅读 · 1 评论 -
MYSQL的TPS优化
系统优化-优化TPS 提升系统吞吐量摘要统计数据统计SQL执行次数general_log慢查询日志:binlog统计20181107-1757-1758文件中SQL执行次数统计insertupdate分析哪些SQL执行频率比较高。优化方式摘要系统初期使用的是分布式微服务,但是所有业务模型都在同一个数据库实例上,数据库的压力会非常大,这时需要找出系统执行频率比较高的SQL,进行优化。这里重点描述...原创 2018-11-08 20:09:20 · 4762 阅读 · 0 评论 -
通过ibd文件修复MYSQL数据库
通过ibd文件修复MYSQL数据库摘要准备工作开始操作遇到的问题以及解决方法摘要前段时间不小心把uat环境的库删了,苦逼的是尽然没有备份。只找到一份 frm 和 ibd 文件,没办法只能手动修复了。网上找了一些资料,感觉不太好用。索性自己搞了一套方法。准备工作Windows下部署一套mysql, 以及navicat。其实Linux环境也行,只是windows 下操作方便,会节省好多时间。...原创 2018-10-11 13:55:02 · 4858 阅读 · 0 评论 -
mysql数据清理及常见问题
数据库瘦身及常见问题摘要首先表空间按大小排序根据表空间大小,判断哪些表需要优化。备份表,并清除过期日志信息问题描述问题解决方案结论摘要在系统前期开发过程中(还没有系统拆分),会遇到表空间会越来越大,这时候需要做一些瘦身的操作。首先表空间按大小排序SELECT * from (select round(sum(DATA_LENGTH/1024/1024),2) content ,TABL...原创 2018-10-11 10:35:45 · 1415 阅读 · 0 评论 -
MySQL死锁分析
使用索引解决MySQL死锁问题摘要查看MYSQL死锁开启mysql死锁监控查死锁信息问题描述问题解决方案结论摘要当程序并发update同一张表,或者并发insert 一张表的时候都会出现数据库死锁问题。当并发insert一张表可能会出现间隙锁(小概率事件),这里先不谈,我主要描述update的常见的一种场景。查看MYSQL死锁开启mysql死锁监控create table InnoDB_...原创 2019-01-28 17:22:59 · 4548 阅读 · 0 评论 -
kudu ---- 集群一键部署
这个简单部署脚步过程适用于开发。但是要先安装docker 和docker-compose。#创建工作目录mkdir -p /home/kuducd /home/kudu## 获取镜像docker pull apache/kudu:latest## 获取compose 编排文件wget https://github.com/apache/kudu/blob/master/do...原创 2020-04-18 16:44:37 · 1409 阅读 · 2 评论 -
应用于大数据分析的工作流调度系统
Apache Airflowairflow是Airbnb开源的一个用python编写的调度工具,是一个可编程、调度和监控的工作流平台。基于有向无环图(DAG),airflow可以定义一组有依赖的任务,按照依赖依次执行。airflow自带web管理界面,易上手;使用python开源项目,支持扩展operate等插件,便于二次开发;通过python代码定义子任务,并支持各种Operate操作器,灵...原创 2019-12-10 18:49:19 · 1064 阅读 · 0 评论 -
Flink Slot详解与Job Execution Graph优化
前言近期将Flink Job从Standalone迁移至了OnYarn,随后发现Job性能较之前有所降低:迁移前有8.3W+/S的数据消费速度,迁移到Yarn后分配同样的资源但消费速度降为7.8W+/S,且较之前的消费速度有轻微的抖动。经过原因分析和测试验证,最终采用了在保持分配给Job的资源不变的情况下将总Container数量减半、每个Container持有的资源从1C2G 1Slot变更...转载 2019-12-02 18:54:18 · 255 阅读 · 0 评论 -
Apache Ignite Docker部署
Docker允许将具有所有依赖项的Ignite部署打包到标准容器中。Docker自动下载Ignite版本,将用户库部署到Ignite中,并配置节点。它还会自动启动完全配置好的Ignite节点。这种集成方式允许用户通过重新启动Ignite Docker容器来部署新代码。要运行docker容器,需要拉动并启动docker映像。默认情况下,将下载最新版本。你可以在这里看到标签的完整列表:https:...翻译 2019-11-23 08:37:16 · 2272 阅读 · 0 评论 -
Storm 占用CPU过高分析
1、top 命令 找到 storm 占用CPU过高的worker进程2、top -H -p 25155,查询该进程下的线程资源3、使用jstack 25155 > 0513.jdump ,输出 该JVM进程下的线程堆栈信息。4、sz 命令下载 0513.jdump 到本地分析5、 找CPU占用最大的几个线程比如 25185 ,线程ID都转16进制 1...原创 2019-05-13 18:43:39 · 2707 阅读 · 0 评论