开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

优化 | Redis AOF重写导致的内存问题

Redis突然内存爆涨,直到服务器内存不足半夜报警,是天灾还是人祸?
o翡翠谷o 发布于 3天前 阅读 222 评论 2

AI领袖、应用指南、窥见风口……你还能从这场全球峰会中获得更多

时代的潮流浩浩荡荡,上升到国家发展战略与基础设施的人工智能,正以不可思议的速度占据着我们生活的头条。如果说2017年宣告了人工智能接棒时代脉搏,那么2018年的人工智能将作为颠覆性变革力量迭代世界机器的运作。
GAITC

基于Docker的MySQL主从数据库搭建

最初的想法是为了做数据备份,但实际作用远不止于此,菜鸟一枚,仅作为记录。
Raphael_Zhang 发布于 3天前 阅读 458

Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?

Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?  QQ群里有人问:如何导出一个用户下的存储过程?   麦苗答:方法有多种,可以使用DBMS_METADATA.GET_DDL包。 使用PL/SQL DEVELOPER工具 -- 下面的SQL语句,如果报错:ORA-22835: 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小 (实际: 4994, 最大: 4000),那么去掉TO_CAHR SELECT TO_CHAR(DBMS_METADATA.GET_DDL('PROCEDURE', U.OBJECT_NAME)) ||CHR(10)||'/'   FROM USER_OBJECTS U  WHERE OBJECT_TYPE = 'PROCEDURE'  ;       然后将结果拷贝到Excel中, 打开Excel,复制内容到plsql developer里边,注意粘贴的时候使用右键的“Past from host Language”,否则粘贴后的代码含有双引号:   运行这些脚本脚本即可:   使用SQL*Plus   使用如下的脚本即可导出某个用户下的存储过程代码到/tmp/a.sql文件中: SET PAGESIZE 0 SET TRIMSPOOL ON SET LINESIZE 10000 SET LONG 90000 SET FEEDBACK OFF SET FEED OFF; SET ECHO OFF spool /tmp/a.sql SELECT DBMS_METADATA.GET_DDL('PROCEDURE', U.OBJECT_NAME)||CHR(10)||'/'   FROM USER_OBJECTS ...
小麦苗 发布于 1周前 阅读 45

ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1)

  ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1)       (一)NOLOGGING操作引起的坏块(ORA-01578和ORA-26040)简介 如果只是错误ORA-01578,而没有伴随ORA-26040,那么这个坏块是由其它的原因引起的坏块,可以尝试使用RMAN的BMR(Block Media Recovery)修复。 如果数据段(表段、索引段)被定义为NOLOGGING属性,那么当NOLOGGING加APPEND、UNRECOVERABLE操作修改该数据段或者使用数据泵(DATAPUMP)impdp参数DISABLE_ARCHIVE_LOGGING:Y时,联机重做日志只会记录很少的日志信息。如果这些联机重做日志或归档日志被用来恢复数据文件,那么Oracle会将对应的数据块标志为无效(Soft Corrupt),而且下一次访问这些数据块时,会报ORA-01578和ORA-26040错误。 例如: SQL> select * from test_nologging;   ORA-01578: ORACLE data block corrupted (file # 11, block # 84) ORA-01110: data file 4: '/oradata/users.dbf' ORA-26040: Data block was loaded using the NOLOGGING option 数据字典视图DBA_TABLES、DBA_INDEXES、DBA_LOBS、DBA_TAB_PARTITIONS、DBA_LOB_PARTITIONS、DBA_TAB_SUBPARTITIONS中的LOGGING列记录了NOL...
小麦苗 发布于 2周前 阅读 65

tcpcopy+mysql压力测试

一、tcpcopy工具介绍 tcpcopy 是一个分布式在线压力测试工具,可以将线上流量拷贝到测试机器,实时的模拟线上环境,达到在程序不上线的情况下实时承担线上流量的效果,尽早发现 bug,增加上线信心。 tcpcopy 的优势在于其实时性及真实性,除了少量的丢包,完全拷贝线上流量到测试机器,真实的模拟线上流量的变化规律。   二、tcpcopy原理   tcpcopy新版架构图 tcpcopy包含三部分:online server、assistant server、target server tcpcopy拷贝一次流量访问的步骤如下 1、一个访问请求到达线上内核后端机; 2、socket 包在 IP 层被拷贝了一份传给tcpcopy 进程; 3、tcpcopy 修改包的目的及源地址,发给测试内核后端机; 4、拷贝的包到达测试内核后端机; 5、测试内核后端机的推荐内核处理访问,并返回结果; 6、返回结果在 IP 层被截获、丢弃,由 intercept 拷贝返回结果的 IP header 返回; 7、IP header 被发送给线上内核后端机的 tcpcopy 进程。   三、tcpcopy搭建 3.1  服务器规划 角色 主机名 mysql端口 online server test00 3308(5.6) assistant server offline01   target server offline02 3318(5.7) 3.2  tcpcopy安装及配置 安装依赖 # yum -y install lib...
IT--小哥 发布于 2周前 阅读 274 评论 1

pgAgent (PostgreSQL定时任务)

简介 在pgAdminIII v1.4中引入的pgAgent是一个用于PostgreSQL的作业调度代理,可用于执行操作系统批处理脚本和SQL任务。 从pgAdmin 1.9开始,pgAgent独立于pgAdmin单独安装。 环境: PostgreSQL 9.6.6 pgAgent 3.4.0 cmake 2.8.11 wxWidgets 2.8.12 先安装PG、wxGTK、cmake 安装pgAgent [yangjie@young-1 package]$ tar zxvf pgAgent-3.4.0-Source.tar.gz [yangjie@young-1 package]$ cd pgAgent-3.4.0-Source/ [yangjie@young-1 pgAgent-3.4.0-Source]$ cmake ./ -- -- ================================================================================ -- Configuration summary: -- -- Project : pgagent -- Description : pgAgent is a job scheduling engine for PostgreSQL -- Version : 3.4.0 -- -- PostgreSQL version string : PostgreSQL 9.6.6 -- PostgreSQL version parts : 9.6.6 -- PostgreSQL path : /work/pgsql/pg96 -- PostgreSQL config binary : /work/pgsql/pg96/bin/pg_config -- PostgreSQL include path : /work/pgsql/pg96/include ...
yonj1e 发布于 2周前 阅读 123

MySQL 5.6 升级为 MySQL 5.7

该篇主要讲In-Place Upgrade的升级方式,即物理方式的升级。
o翡翠谷o 发布于 2周前 阅读 495

MySQL分布式中间件MYCAT解析

在应用系统用户量不断增加之后,带来性能上的瓶颈,此时通过在应用的服务端添加负载均衡即可提升性能,但是系统访问数量还在不断增加,有一天发现再增加应用层的负载均衡已经达不到预期的效果了,此时的性能瓶颈很可能在数据库,单台数据库已经达到了性能上限,但是将数据库进行负载均衡是非常麻烦的,此时应该考虑使用数据库的分布式中间件产品MYCAT,它为数据库访问量不断增大时出现性能瓶颈提供了解决问题思路。 1、MYCAT的起源          阿里巴巴在2008年推出了Amoeba,当时正好是在阿里去IOE的浪潮中,Amoeba提供了负载均衡,SQL过滤等功能,在2012年随着阿里业务量增长,Amoeba也越来越不适应当时不断增长的需求,同年在Amoeba的基础上阿里开源了替代Amoeba的产品Cobar,不过后来就没进行维护了,Cobar本身也存在不少问题,在2013年阿里推出了开源产品MYCAT,MYCAT在Cobar系统的基础上进行了升级和改造,修复了很多问题(例如在高并发下回导致Cobar假死),同时开源社区非常活跃,在2017年,MYCAT推出了1.6版本。   2、什么是MYCAT?     MYCAT是基于Java的一个分布式数据库系统中间层,为高并发下数据库的分布式提供解决方案。   3、MYCAT的主要作用是什...
Oo若离oO 发布于 3周前 阅读 324 评论 1 点赞 1

高可用分布式clickhouse集群搭建

发现NoSql中的一匹黑马ClickHouse,昨晚测试单机单表 2000万行 count(*)查询耗时0.25 sec
南寻 发布于 3周前 阅读 105

最快速的办法解决MySQL数据量增大之后翻页慢问题

MySQL单表数据量超过30万后,使用Limit翻页查询时 越往后翻页性能越慢
Oo若离oO 发布于 4周前 阅读 405 评论 1 点赞 1

mysql5.7.5及以上:ONLY_FULL_GROUP_BY SQL模式报错

Mysql,ONLY_FULL_GROUP_BY SQL模式
海岸线的曙光 发布于 4周前 阅读 188

关于数据库自增主键的几个问题

1 是否每张表都应该有自增主键? 不一定 自增主键可以加快行的插入速度,对于表的空间利用上有优势,碎片化不明显。 但是对一些内容,如根据uid的查询非常频繁的,而且比较集中的,那如果不用自增主键,而是使用uid+id作为复合主键,那查询效率会上去,但插入和碎片化就会增加。但如果数据库的存储类型是ssd,那这个问题就不存在了。 所以,大部分情况来看,表有自增主键是正确的。 2 自增主键是否具有业务上的唯一性? 不一定 单表结构下,是的。 多表情况下,不一定,需要一定的策略,如设定不同的后缀,相同的间隔等。 3 自增主键是否可以牵扯到业务? 不建议这样做。 如:表可以有自增主键,表内是具有唯一性的。在根据id查询和更新的时候,可以简化操作。但一般来说,和业务上存在关系,并且需要唯一性的时候,应该由业务自主去维护,如使用格式或算法,hash生成等方式。 4 业务维护的主键,怎样在多表的情况下保持唯一性? 维护自增键区间段,服务器每次取其中的一段,乐观锁更新。这个需要额外的表或策略来维护这个字段。 基于算法A,固定时间前缀,如:yyyyMMddHHmmss+表数mod值+随机数,通过位数的增加,来降低冲突的可能性。表字段存在唯一性约束(但有时候这个约...
小熊家的老肥熊 发布于 4周前 阅读 461 评论 1

TiDB 在新乐视云联“月光宝盒”项目中的应用与实践

## 公司介绍 2018 年,乐视云计算有限公司品牌升级为新乐视云联,新乐视云联是新乐视上市体系中核心业务版块之一,负责新乐视体系所有基础设施服务和云计算服务。新乐视云联围绕视频云和物联云两大方向开展业务,致力成为领先的家庭互联智能娱乐云技术提供者,以物联云为核心创造更智能的家居社区解决方案。 新乐视云联在视频行业有强大的技术储备,在视频领域中的点播、直播、分发、媒体技术、视频内容理解等方面处于行业领先地位;而物联云将围绕家居安全、智能互联、环境健康等方面提供全部解决方案。 ##项目背景 在观看视频直播中,难免会发生因为各种打断而错过一些精彩片刻的情况,这个时候,如果我们能快速穿越回去,会是怎样一种体验?乐视云“月光宝盒”可以完美弥补遗憾,让精彩不再错过。 ![图:应用场景示意图](https://upload-images.jianshu.io/upload_images/542677-0bbcbbf8d543b0eb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 项目挑战 “月光宝盒”是乐视云直播 PaaS 平台的一个重要服务,可以完美解决直播过程中任意时间段的时移回看,也可以在直播结束后,提供瞬时秒回功能,快速将直播信号转为点播信号进行分发,大幅提升了直播观看...
TiDB 发布于 1个月前 阅读 281 评论 1 点赞 1

吴镝:TiDB 在今日头条的实践

![](https://upload-images.jianshu.io/upload_images/542677-f5322f71353d7ee7.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) > 本文整理自今日头条数据库中间件/分布式数据库负责人吴镝([知乎 ID:吴镝](http://www.zhihu.com/people/foxmailed))在TiDB DevCon2018 上的分享内容。 TiDB 主要应用在今日头条核心 OLTP 系统 - 对象存储系统中,存储其中一部分元数据,支持头条图片和视频相关业务,比如抖音等。 如今(数据截至发文),TiDB 支撑着今日头条 OLTP 系统里数据流量最大、QPS 最高的场景:集群容量约几十 T,日常 QPS 峰值会达到几十万。 ## 为什么我们需要用 TiDB 今日头条内部有一些业务数据量非常大,之前用的 MySQL 的单机盘是大概 2.8T 的 SSD 盘。我们做对象存储。因为头条不但做视频,还做图片,这些视频和图片当中基本上都是用我们自研的 S3 存储系统,这种存储系统需要一个元数据,比如一个图片存下来,它存在 S3 系统的哪个机器、哪个文件、哪个偏移里面的数据,还有比如一个大的视频,S3 会把它切成很多小的视频片段,每一个分片的位置,都会存在元数据里面。 用 TiDB 之前,元数据是存在 MySQL 里的一个 2.8TB 的盘,因为增长的特别...
TiDB 发布于 1个月前 阅读 180 评论 2 点赞 1

Memcached特性、优点和限制

这里需要说明,很多开发者觉得 Memcached 是一种分布式 Cache ,但其实 Memcached 服务端本身是单实例的,只是在客户端实现过程中可以根据存储的主键作分区存储,而这个区就是 Memcached 服务端的一个或者多个实例,如果将客户端也囊括到 Memcached 中,那么可以部分概念上说是集中式的。集中式的构架,无非两种情况: 1. 节点均衡的网状( JBoss Tree Cache ),利用 JGroup 的多播通信机制来同步数据。 2.Master-Slaves 模式(分布式文件系统),由 Master 来管理 Slave ,如何选择 Slave ,如何迁移数据,都是由 Master 来完成,但是 Master 本身也存在单点问题。 特性、优点和限制 Memory :内存存储,速度快,对于内存的要求高,所缓存的内容非持久化。对于 CPU 要求很低,所以常常采用将 Memcached 服务端和一些 CPU 高消耗 Memory 低消耗应用部属在一起 。(否则会互相挤占资源) 集中式 Cache :避开了分布式 Cache 的传播问题,但是需要非单点保证其可靠性,这需要 cluster 的工作,可以将多个 Memcached 作为一个虚拟的 cluster ,同时对于 cluster 的读写和普通的 memcached 的读写性能没有差别。 分布式扩展...
vinci321 发布于 1个月前 阅读 288 评论 2

TiDB 源码阅读系列文章(三)SQL 的一生

## 概述 上一篇文章讲解了 TiDB 项目的结构以及三个核心部分,本篇文章从 SQL 处理流程出发,介绍哪里是入口,对 SQL 需要做哪些操作,知道一个 SQL 是从哪里进来的,在哪里处理,并从哪里返回。 SQL 有很多种,比如读、写、修改、删除以及管理类的 SQL,每种 SQL 有自己的执行逻辑,不过大体上的流程是类似的,都在一个统一的框架下运转。 ## 框架 我们先从整体上看一下,一条语句需要经过哪些方面的工作。如果大家还记得上一篇文章所说的三个核心部分,可以想到首先要经过协议解析和转换,拿到语句内容,然后经过 SQL 核心层逻辑处理,生成查询计划,最后去存储引擎中获取数据,进行计算,返回结果。这个就是一个粗略的处理框架,本篇文章会把这个框架不断细化。 对于第一部分,协议解析和转换,所有的逻辑都在 server 这个包中,主要逻辑分为两块:一是连接的建立和管理,每个连接对应于一个 Session;二是在单个连接上的处理逻辑。第一点本文暂时不涉及,感兴趣的同学可以翻翻代码,看看连接如何建立、如何握手、如何销毁,后面也会有专门的文章讲解。对于 SQL 的执行过程,更重要的是第二点,也就是已经建立了连接,在这个连接上的操作,本文会详细讲解这一点。 对于第...
TiDB 发布于 1个月前 阅读 112

Demo之Mycat读写分离

前言 数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能;对于MySQL来说,标准的读写分离是主从模式,一个写节点Master后面跟着多个读节点,其中包含两个步骤,其一是数据源的主从同步,其二是sql的读写分发;而Mycat不负责任何数据的同步,具体的数据同步还是依赖Mysql数据库自身的功能。 Mysql主从复制 准备两台主机,安装相同版本的Mysql数据库,下面准备配置Mysql的主从复制配置: 1.配置Master 配置my.ini或者my.conf如下: server-id=1 binlog_format=STATEMENT log_bin=D:/mysql/bin-log.log server-id:一般设置为IP,注意要唯一;binlog_format:设置binlog的格式;log_bin:开启log_bin 2.配置Slave 配置my.ini或者my.conf如下: server-id=2 binlog_format=STATEMENT relay_log=mysql-relay-bin relay_log:从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器; 更多binlog的配置:https://my.oschina.net/OutOfMemory/blog/1571107 3.分别重启Master和Slave service mysqld restart; 4.查询Master的状态 mysql> show master status; +----------...
ksfzhaohui 发布于 1个月前 阅读 517 点赞 1

对PostgreSQL的UPDATE和DELETE外键属性思考

外键创建时默认属性是MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION。这里需要深入思考一下NO ACTION这部分。 首先,该部分参数有三种: 1)NO ACTION - 不允许删除/更新,但是在事务中延迟报错。 2)RESTRICT - 不允许删除/更新,直接报错。 3)CASCADE - 允许级联删除/更新。   在这里,CASCADE最好理解,是级联的意思,如删除父表数据时子表关联数据也存在则会级联删除。 NO ACTION和RESTRICT对于操作都会进行检查,如果不符合约束则会报ERROR并退出,数据不变,唯一的区别是NO ACTION可以设置约束在事务中延迟生效,而RESTRICT不允许。个人理解应该是处于事务性能的考虑,假设在一个大事务中,定义的是RESTRICT,那么执行每一条语句都回去校验,如果整个事务中没有关联删除的错误存在,那必然会导致时间的浪费;但是如果此时使用NO ACTION,事务整个过程都在平滑处理,到最后提交时,如果存在级联约束,那么久报错退出,如果不存在久直接提交整个事务,此时是最省时的。另外事务具有原子性,针对一个事务做此处理也说的过去。...
闻术苑 发布于 2个月前 阅读 354 评论 2

TiDB 源码阅读系列文章(二)初识 TiDB 源码

本文为 TiDB 源码阅读系列文章的第二篇,第一篇文章介绍了 TiDB 整体的架构,知道 TiDB 有哪些模块,分别是做什么的,从哪里入手比较好,哪些可以忽略,哪些需要仔细阅读。 这篇文章是一篇入门文档,难度系数比较低,其中部分内容可能大家在其他渠道已经看过,不过为了内容完整性,我们还是会放在这里。 ## TiDB 架构 ![](http://upload-images.jianshu.io/upload_images/542677-f99ab87773a67264.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 本次 TiDB 源码之旅从这幅简单的架构图开始,这幅图很多人都看过,我们可以用一句话来描述这个图:『TiDB 是一个支持 MySQL 协议,以某种支持事务的分布式 KV 存储引擎为底层存储的 SQL 引擎』。从这句话可以看出有三个重要的事情,第一是如何支持 MySQL 协议,与 Client 交互,第二是如何与底层的存储引擎打交道,存取数据,第三是如何实现 SQL 的功能。本篇文章会先介绍一些 TiDB 有哪些模块及其功能简要介绍,然后以这三点为线索,将这些模块串联起来。 ## 代码简介 TiDB 源码完全托管在 Github 上,从[项目主页](https://github.com/pingcap/tidb "项目主页")可以看到所有信息。整个项目使用 Go 语言开发,按照功...
TiDB 发布于 2个月前 阅读 54

AntDB3.1新增几个性能参数的使用和效果

AntDB是一款自主研发的开源分布式数据库,基于Postgresql开发。
珊珊AntDB 发布于 2个月前 阅读 184 评论 3

AI领袖、应用指南、窥见风口……你还能从这场全球峰会中获得更多

时代的潮流浩浩荡荡,上升到国家发展战略与基础设施的人工智能,正以不可思议的速度占据着我们生活的头条。如果说2017年宣告了人工智能接棒时代脉搏,那么2018年的人工智能将作为颠覆性变革力量迭代世界机器的运作。
GAITC

Springboot 与 Redis 集成 简易Redis工具类实现

最近项目需要处理一项数据量比较大的业务,考虑之下,高频访问/读取决定使用Redis.自己的Springboot框架下研究了Redis两天,把成果总结一下 ### 开发环境介绍 * JDK1.7 * Redis ### 基础依赖 ```xml org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.1 org.springframework.boot spring-boot-starter-data-redis ``` ### Redis配置 省略部分内容的application.yml, 都是默认配置,可以没有. 同时也可以在这里配置超时时间 最大连接 等属性,可以考虑参照其他网络博客 ```yml server: redis: host: localhost # 162上面的Redis port: 6379 password: ``` 创建RedisConfig,用来配置一些自定义内容.我配置的比较简略,只注册了一个按JDK序列化数据的RedisTemplate ``` @Configuration public class RedisConfig extends CachingConfigurerSupport{ /** * 注入 RedisConnectionFactory */ @Autowired RedisConnectionFactory redisConnectionFactory; /** * 实例化 RedisTemplate 对象 * Primary 在autoware时优先选用我注册的bean. * 因为在redis框架中有注册一个StringRedisTemplate,避免注入冲突 * @return */ @Bean @Primary public RedisTemplate functionDomainRedis...
BekeyChao 发布于 2个月前 阅读 137

composer的官方文档

1、HyperledgerComposer官方文档 http://fabric.docs.cloudchain.cn/ComposerDocs/introduction_introduction/ 2、HyperledgerComposer架构图     
做龙龙 发布于 55分钟前 阅读 4

将数据从redis数据库中存储到本地的mysql数据库中

redis、mysql、数据转存
邪云 发布于 2个月前 阅读 44

吴镝:TiDB 在今日头条的实践

![](https://upload-images.jianshu.io/upload_images/542677-f5322f71353d7ee7.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) > 本文整理自今日头条数据库中间件/分布式数据库负责人吴镝([知乎 ID:吴镝](http://www.zhihu.com/people/foxmailed))在TiDB DevCon2018 上的分享内容。 TiDB 主要应用在今日头条核心 OLTP 系统 - 对象存储系统中,存储其中一部分元数据,支持头条图片和视频相关业务,比如抖音等。 如今(数据截至发文),TiDB 支撑着今日头条 OLTP 系统里数据流量最大、QPS 最高的场景:集群容量约几十 T,日常 QPS 峰值会达到几十万。 ## 为什么我们需要用 TiDB 今日头条内部有一些业务数据量非常大,之前用的 MySQL 的单机盘是大概 2.8T 的 SSD 盘。我们做对象存储。因为头条不但做视频,还做图片,这些视频和图片当中基本上都是用我们自研的 S3 存储系统,这种存储系统需要一个元数据,比如一个图片存下来,它存在 S3 系统的哪个机器、哪个文件、哪个偏移里面的数据,还有比如一个大的视频,S3 会把它切成很多小的视频片段,每一个分片的位置,都会存在元数据里面。 用 TiDB 之前,元数据是存在 MySQL 里的一个 2.8TB 的盘,因为增长的特别...
TiDB 发布于 1个月前 阅读 180 评论 2 点赞 1

MYSQL写的一个定时执行的存储过程,仅供参考

ROP PROCEDURE IF EXISTS `proc__gl`; DELIMITER //  CREATE PROCEDURE `proc__gl` () BEGIN     DECLARE waringcount int;      DECLARE waringcountnoread int;      DECLARE noticecount int;      DECLARE noticecountnoread int;      DECLARE gs_id int;      DECLARE s int DEFAULT 0;         DECLARE ceshi int DEFAULT 0;      //声明游标     DECLARE cursor_notic CURSOR FOR      SELECT                     A1.waringcount AS temp_waringcount,                     A1.waringcountnoread AS temp_waringcountnoread,                     A1.noticecount AS temp_noticecount,                     A1.noticecountnoread AS temp_noticecountnoread,                     A1.gs_id AS temp_gs_id                 FROM                     (                         SELECT                             a.gs_name,                           ...
卯金刀GG 发布于 3个月前 阅读 22

Fedora 下 Mysql 安装与配置

1. 下载 https://www.mysql.com/downloads/ , 下载系统相对应的yum库的rpm文件。然后,本地安装: sudo dnf install '/home/.../.../mysql57-community-release-***.noarch.rpm'   2.安装 sudo dnf install mysql-community-server   3.开启Mysql服务 sudo systemctl start mysqld.service 可以使用以下命令,检查Mysql 的状态: sudo systemctl status mysqld.service   root用户的初始密码在日志文件中,通过以下命令查看: sudo grep 'temporary password' /var/log/mysqld.log 使用初始密码登陆: sudo mysql -uroot -p 然后使用以下命令修改密码: ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!'; 注:不同的mysql版本对密码的格式有不同的要求,本次 5.7.21 版本要求至少有一个大写字母、一个小写字母、一个数字和一个特殊字符的组合。 如果需要修改数据库结构,还可以安装 mysql-workbench: sudo dnf install mysql-workbench-community  ...
曾经花田错 发布于 2周前 阅读 6

Oracle 数据库更新或者删除之后,怎样恢复之前的数据

当我们误操作,更新或者删除之后,如何恢复之前的数据呢?
奋斗的斗斗 发布于 3个月前 阅读 43

tidb 安装

单机安装 http://blog.csdn.net/firetaker/article/details/73536373   wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz tar -xzf tidb-latest-linux-amd64.tar.gz cd tidb-latest-linux-amd64   启动pd-server ./bin/pd-server --name=pd1 \ --data-dir=pd1 \ --client-urls="http://127.0.0.1:2379" \ --log-file=pd.log   启动三个KV进程 ./bin/tikv-server --pd="127.0.0.1:2379" \ --addr="127.0.0.1:20160" \ --data-dir=tikv1 \ --log-file=tikv1.log   ./bin/tikv-server --pd="127.0.0.1:2379" \ --addr="127.0.0.1:20161" \ --data-dir=tikv2 \ --log-file=tikv2.log   ./bin/tikv-server --pd="127.0.0.1:2379" \ --addr="127.0.0.1:20162" \ --data-dir=tikv3 \ --log-file=tikv3.log   启动tidb ./bin/tidb-server --store=tikv \ --path="127.0.0.1:2379" \ --log-file=tidb.log   链接验证 mysql -h 192.168.199.113 -P 4000 -u root -D test   2.集群安装 http://blog.csdn.net/linuxheik/article/details/52575073   http://blog.51cto.com/dbaspace/1873302     集群PD启动:   /bin/pd-server --name=pd1 --data-dir=pd...
易野 发布于 2个月前 阅读 61

当scrapy-redis遇到MongoDB出现redis数据库中没有值

redis数据库中无值
邪云 发布于 2个月前 阅读 49

Redis 字符串(String)

Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下: 语法 redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 127.0.0.1:6379> SET runoobkey redis OK redis 127.0.0.1:6379> GET runoobkey "redis" 在以上实例中我们使用了 SET 和 GET 命令,键为 runoobkey。 Redis 字符串命令 下表列出了常用的 redis 字符串命令: 序号 命令及描述 1 SET key value 设置指定 key 的值 2 GET key 获取指定 key 的值。 3 GETRANGE key start end 返回 key 中字符串值的子字符 4 GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。 5 GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。 6 MGET key1 [key2..] 获取所有(一个或多个)给定 key 的值。 7 SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 8 SETEX key seconds value 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。 9 SETNX key value 只有在 key 不存在时设置 key 的值。 10 SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。 11 STR...
流氓兔- 发布于 1天前 阅读 1

Redis 哈希(Hash)

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。 Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。 实例 127.0.0.1:6379> HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000 OK 127.0.0.1:6379> HGETALL runoobkey 1) "name" 2) "redis tutorial" 3) "description" 4) "redis basic commands for caching" 5) "likes" 6) "20" 7) "visitors" 8) "23000" 在以上实例中,我们设置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 runoobkey 中。 Redis hash 命令 下表列出了 redis hash 基本的相关命令: 序号 命令及描述 1 HDEL key field1 [field2] 删除一个或多个哈希表字段 2 HEXISTS key field 查看哈希表 key 中,指定的字段是否存在。 3 HGET key field 获取存储在哈希表中指定字段的值。 4 HGETALL key 获取在哈希表中指定 key 的所有字段和值 5 HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment 。 6 HINCRBYFLOAT key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment ...
流氓兔- 发布于 1天前 阅读 1

left join(左联接)right join(右联接) inner join(等值连接) 区别

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录  right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner join(等值连接) 只返回两个表中联结字段相等的行 举例如下:  -------------------------------------------- 表A记录如下: aID     aNum 1     a20050111 2     a20050112 3     a20050113 4     a20050114 5     a20050115 表B记录如下: bID     bName 1     2006032401 2     2006032402 3     2006032403 4     2006032404 8     2006032408 -------------------------------------------- 1.left join sql语句如下:  select * from A left join B  on A.aID = B.bID 结果如下: aID     aNum     bID     bName 1     a20050111    1     2006032401 2     a20050112    2     2006032402 3     a20050113    3     2006032403 4     a20050114    4     2006032404 5     a20050115    NULL     NULL (所影响的行数为 5 行) 结果说明: left join是...
辣妈程序媛 发布于 2个月前 阅读 6

Redis 列表(List)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。 实例 redis 127.0.0.1:6379> LPUSH runoobkey redis (integer) 1 redis 127.0.0.1:6379> LPUSH runoobkey mongodb (integer) 2 redis 127.0.0.1:6379> LPUSH runoobkey mysql (integer) 3 redis 127.0.0.1:6379> LRANGE runoobkey 0 10 1) "mysql" 2) "mongodb" 3) "redis" 在以上实例中我们使用了 LPUSH 将三个值插入了名为 runoobkey 的列表当中。 Redis 列表命令 下表列出了列表相关的基本命令: 序号 命令及描述 1 BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 2 BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 3 BRPOPLPUSH source destination timeout 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 4 LINDEX key index 通过索引获...
流氓兔- 发布于 1天前 阅读 1

MySql索引原理与使用大全

一、索引介绍      索引是对数据库表中一列或多列的值进行排序的一种结构。在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。         索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。在数据库关系图中,可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在...
辣妈程序媛 发布于 2个月前 阅读 6

【MongoDB进阶】MongoDB高可用集群配置的几种方案

一、高可用集群的解决方案 高可用性即HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。 计算机系统的高可用在不同的层面上有不同的表现: (1)网络高可用 由于网络存储的快速发展,网络冗余技术被不断提升,提高IT系统的高可用性的关键应用就是网络高可用性,网络高可用性与网络高可靠性是有区别的,网络高可用性是通过匹配冗余的网络设备实现网络设备的冗余,达到高可用的目的。 比如冗余的交换机,冗余的路由器等 (2)服务器高可用 服务器高可用主要使用的是服务器集群软件或高可用软件来实现。 (3)存储高可用 使用软件或硬件技术实现存储的高度可用性。其主要技术指标是存储切换功能,数据复制功能,数据快照功能等。当一台存储出现故障时,另一台备用的存储可以快速切换,达一存储不停机的目的。   二、MongoDB的高可用集群配置 高可用集群,即High Availability Cluster,简称HA Cluster。集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。搭建高可用集群需要合理的配置多台计算机之间的角色,数...
卯金刀GG 发布于 4周前 阅读 4

Oracle、PostgreSQL与Mysql数据写入性能对比

最近因为工作需要,需要对Oracle和Mysql写入性能进行对比,以前都是听说Mysql性能比Oracle不是一个级别,现在亲测后,不比不知道,一比吓一跳。。。 追加PostgreSql性能测试数据 ## 测试场景 本地电脑(单机),通过程序往数据库表中插入1000万条数据,21个字段,其中一个主键为int类型,另外20个为32位字符串类型; ## 电脑配置 ``` CPU:i5-4590 内存:8G 系统盘:120G固态硬盘 系统:Window7 64位 ``` 表结构如下: ``` create table demo1( demo_id INT NOT NULL PRIMARY KEY , txt1 VARCHAR(32) NOT NULL, txt2 VARCHAR(32) NOT NULL, txt3 VARCHAR(32) NOT NULL, txt4 VARCHAR(32) NOT NULL, txt5 VARCHAR(32) NOT NULL, txt6 VARCHAR(32) NOT NULL, txt7 VARCHAR(32) NOT NULL, txt8 VARCHAR(32) NOT NULL, txt9 VARCHAR(32) NOT NULL, txt10 VARCHAR(32) NOT NULL, txt11 VARCHAR(32) NOT NULL, txt12 VARCHAR(32) NOT NULL, txt13 VARCHAR(32) NOT NULL, txt14 VARCHAR(32) NOT NULL, txt15 VARCHAR(32) NOT NULL, txt16 VARCHAR(32) NOT NULL, txt17 VARCHAR(32) NOT NULL, txt18 VARCHAR(32) NOT NULL, txt19 VARCHAR(32) NOT NULL, txt20 VARCHAR(32) NOT NULL...
傲娇字符 发布于 3周前 阅读 112

如何使用plsql导出Oracle建表语句、存储过程、视图

本文主要介绍了如何使用PLSQL导出Oracle建表语句
hengbao5 发布于 3周前 阅读 18

详解redis的全量复制与部分复制

全量复制 全量复制的原理 redis全量复制的原理是,首先将master本身的RDB文件同步给slave,而在同步期间,master写入的命令也会记录下来(master内部有一个复制缓冲区,会记录同步时master新增的写入),当slave将RDB加载完后,会通过偏移量的对比将这期间master写入的值同步给slave。 来看一张完整的复制流程图: 1. slave内部首先会发送一个psync的命令给master 这个命令第一个参数是runId,第二个参数是偏移量,而由于是第一次复制,slave不知道master的runId,也不知道自己偏移量,这时候会传一个问号和-1,告诉master节点是第一次同步。 2. 当master接受到psync ? -1 时,就知道slave是要全量复制,就会将自己的runID和offset告知slave 3.slave会将master信息保存 4.master这时会做一个RDB的生成(bgsave) 5.将RDB发送给slave 6.将复制缓冲区记录的操作也发送给slave 7.slave清空自己的所有老数据 8.slave这时就会加载RDB文件以及复制缓冲区数据,完成同步。 全量复制的开销 1.bgsave的开销,每次bgsave需要fork子进程,对内存和CPU的开销很大 2.RDB文件网络传输的时间(网络带宽) 3.从节点清空数据的时间 4.从节点加载RDB的时间 5.可能的AOF重写时间(如果我们的从...
吴正宇 发布于 3周前 阅读 24

Mysql InnoDB B+树索引和哈希索引的区别? MongoDB 为什么使用B-树?

B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域。 # B+树 B+树是为磁盘及其他存储辅助设备而设计一种平衡查找树(不是二叉树)。B+树中,所有记录的节点按大小顺序存放在同一层的叶节点中,各叶节点用指针进行连接。 数据库中B+树索引分为聚集索引(clustered index)和非聚集索引(secondary index).这两种索引的共同点是内部都是B+树,高度都是平衡的,叶节点存放着所有数据。不同点是叶节点是否存放着一整行数据。 **B+树有如下特点**: - B+树每个节点可以包含更多的节点,这样做有两个原因,一个是降低树的高度。另外一个是将数据范围变为多个区间,区间越多,数据检索越快。 - 每个节点不再只是存储一个key了,可以存储多个key。 - 非叶子节点存储key,叶子节点存储key和数据。 - 叶子节点两两指针相互链接,顺序查询性能更高。 **通俗的讲** - B+树的非叶子节点只是存储key,占用空间非常小,因此每一层的节点能索引到的数据范围更加的广。换句话说,每次IO操作可以搜索更多的数据。 - 叶子节点两两相连,符合磁盘的预读特性。比如叶子节点存储50和55,它有个指针指向了60和62这个叶子节点,那么当我们...
搜云库 发布于 3周前 阅读 22

从零开始使用AntDB

AntDB是一款自主研发的分布式数据库,基于Postgresql开发
Zaclu 发布于 3个月前 阅读 15

AI领袖、应用指南、窥见风口……你还能从这场全球峰会中获得更多

时代的潮流浩浩荡荡,上升到国家发展战略与基础设施的人工智能,正以不可思议的速度占据着我们生活的头条。如果说2017年宣告了人工智能接棒时代脉搏,那么2018年的人工智能将作为颠覆性变革力量迭代世界机器的运作。
GAITC

基于Docker的MySQL主从数据库搭建

最初的想法是为了做数据备份,但实际作用远不止于此,菜鸟一枚,仅作为记录。
Raphael_Zhang 发布于 3天前 阅读 458

优化 | Redis AOF重写导致的内存问题

Redis突然内存爆涨,直到服务器内存不足半夜报警,是天灾还是人祸?
o翡翠谷o 发布于 3天前 阅读 222 评论 2

CentOS7.x使用yum安装Mysql5.6

先检查是否存在已安装的MySQL yum list installed | grep mysql 若存在删除: yum remove 软件名称 CentOS 7的yum源中没有正常安装mysql时的mysql-sever文件,需要去官网上下载  # wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm # rpm -ivh mysql-community-release-el7-5.noarch.rpm # yum install mysql-community-server 成功安装之后重启mysql服务  # service mysqld restart 初次安装mysql是root账户是没有密码的 设置密码的方法  # mysql -u root mysql > set password for 'root'@'localhost' = password('666'); mysql> exit 搞定! mysql在安装完成后mysql.user表中有多个用户,建议清除除root以外的其他用户,保证安全和不必要的bug mysql> delete from mysql.user where host != 'localhost' or user !='root'; mysql> exit...
Sgmder 发布于 2个月前 阅读 377

mysql联合索引最左原则的理解

mysql联合主键最左原则的理解
冰暝 发布于 1个月前 阅读 98

以太坊智能合约开发入门

本文采用碎片化写作,原文会不定期更新,请尽量阅读原文。 http://www.netkiller.cn/journal/ethereum.solidity.html
netkiller- 发布于 3个月前 阅读 1176 评论 1

Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?

Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?  QQ群里有人问:如何导出一个用户下的存储过程?   麦苗答:方法有多种,可以使用DBMS_METADATA.GET_DDL包。 使用PL/SQL DEVELOPER工具 -- 下面的SQL语句,如果报错:ORA-22835: 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小 (实际: 4994, 最大: 4000),那么去掉TO_CAHR SELECT TO_CHAR(DBMS_METADATA.GET_DDL('PROCEDURE', U.OBJECT_NAME)) ||CHR(10)||'/'   FROM USER_OBJECTS U  WHERE OBJECT_TYPE = 'PROCEDURE'  ;       然后将结果拷贝到Excel中, 打开Excel,复制内容到plsql developer里边,注意粘贴的时候使用右键的“Past from host Language”,否则粘贴后的代码含有双引号:   运行这些脚本脚本即可:   使用SQL*Plus   使用如下的脚本即可导出某个用户下的存储过程代码到/tmp/a.sql文件中: SET PAGESIZE 0 SET TRIMSPOOL ON SET LINESIZE 10000 SET LONG 90000 SET FEEDBACK OFF SET FEED OFF; SET ECHO OFF spool /tmp/a.sql SELECT DBMS_METADATA.GET_DDL('PROCEDURE', U.OBJECT_NAME)||CHR(10)||'/'   FROM USER_OBJECTS ...
小麦苗 发布于 1周前 阅读 45

mysql 两种连接方式:socket和TCP/IP

参考mysql 连接方式:socket和tcp/ip unix系统上,mysql的登陆方式有两种,分别是socket和tcp/ip方式登陆。 当server和client在同一台服务器上的时候,我们可以直接用mysql命令登陆。 [root@mysql ~]# mysql Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.5.46-log MySQL Community Server (GPL) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. root@[(none)]> 当什么参数都没有指定的时候,mysql默认使用socket方式登陆,如果my.cnf的[client]没有指定socket文件路径时,mysql默认会去寻找/tmp/mysql.sock,所以如果mysql服务启动的时候,生成的socket文件不是默认路径的话,登陆会报错。 [root@mysql ~]# mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) mysql服务启动的时候...
为了美好的明天 发布于 3个月前 阅读 183

Springboot 与 Redis 集成 简易Redis工具类实现

最近项目需要处理一项数据量比较大的业务,考虑之下,高频访问/读取决定使用Redis.自己的Springboot框架下研究了Redis两天,把成果总结一下 ### 开发环境介绍 * JDK1.7 * Redis ### 基础依赖 ```xml org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.1 org.springframework.boot spring-boot-starter-data-redis ``` ### Redis配置 省略部分内容的application.yml, 都是默认配置,可以没有. 同时也可以在这里配置超时时间 最大连接 等属性,可以考虑参照其他网络博客 ```yml server: redis: host: localhost # 162上面的Redis port: 6379 password: ``` 创建RedisConfig,用来配置一些自定义内容.我配置的比较简略,只注册了一个按JDK序列化数据的RedisTemplate ``` @Configuration public class RedisConfig extends CachingConfigurerSupport{ /** * 注入 RedisConnectionFactory */ @Autowired RedisConnectionFactory redisConnectionFactory; /** * 实例化 RedisTemplate 对象 * Primary 在autoware时优先选用我注册的bean. * 因为在redis框架中有注册一个StringRedisTemplate,避免注入冲突 * @return */ @Bean @Primary public RedisTemplate functionDomainRedis...
BekeyChao 发布于 2个月前 阅读 137

tcpcopy+mysql压力测试

一、tcpcopy工具介绍 tcpcopy 是一个分布式在线压力测试工具,可以将线上流量拷贝到测试机器,实时的模拟线上环境,达到在程序不上线的情况下实时承担线上流量的效果,尽早发现 bug,增加上线信心。 tcpcopy 的优势在于其实时性及真实性,除了少量的丢包,完全拷贝线上流量到测试机器,真实的模拟线上流量的变化规律。   二、tcpcopy原理   tcpcopy新版架构图 tcpcopy包含三部分:online server、assistant server、target server tcpcopy拷贝一次流量访问的步骤如下 1、一个访问请求到达线上内核后端机; 2、socket 包在 IP 层被拷贝了一份传给tcpcopy 进程; 3、tcpcopy 修改包的目的及源地址,发给测试内核后端机; 4、拷贝的包到达测试内核后端机; 5、测试内核后端机的推荐内核处理访问,并返回结果; 6、返回结果在 IP 层被截获、丢弃,由 intercept 拷贝返回结果的 IP header 返回; 7、IP header 被发送给线上内核后端机的 tcpcopy 进程。   三、tcpcopy搭建 3.1  服务器规划 角色 主机名 mysql端口 online server test00 3308(5.6) assistant server offline01   target server offline02 3318(5.7) 3.2  tcpcopy安装及配置 安装依赖 # yum -y install lib...
IT--小哥 发布于 2周前 阅读 274 评论 1

再谈MySQL JSON数据类型

本文首发微信公众号《andyqian》。期待你的关注~ 前言 眨眼间,有一小段时间没有更新文章了。唉,又懒了..。你是否还记得,之前写过的《说说 MySQL JSON 数据类型》这篇文章,在这篇文章中,我们简单的介绍了MySQL JSON函数。但是在实际操作中。还有更多的实用操作没有介绍。如: JSON字符串如何搜索?如何获取JSON字符串中特定的属性?能不能批量替换JSON中特定key?等等。别急,我们就在下面给出答案。 数据准备 数据如下所示: create table t_base_data( id bigint(20) not null primary key auto_increment comment "主键", content json null comment "内容", created_at datetime null comment "创建时间", updated_at datetime null comment "修改时间" ) engine=innodb charset=utf8 -- 初始化数据: INSERT INTO `t_base_data` (`id`, `content`, `created_at`, `updated_at`) VALUES ('1', '{\"blog\": \"www.andyqian.com\", \"name\": \"andyqian\"}', NULL, '2018-04-08 11:19:44'); 操作数据库版本:5.7.20 搜索 当我们需要获取JSON字符串中的某个key值时。我们可以通过如下方式: 列名->key 如下所示: mysql> select content->"$.blog" f...
andyqian 发布于 3天前 阅读 28 评论 4

TiKV 在饿了么的大规模应用实践

饿了么从 2008 年创建以来,一直都是飞速的发展。目前,饿了么已覆盖了 2000 多个城市,拥有 2.6 亿的用户,130 万的商户,300万的骑手。饿了么在配送时间上追求卓越,目前饿了么的准时达订单平均配送时长已达到 28 分钟以内。从 2015 年开始,饿了么形成了 2 大业务,在线交易平台业务和即时配送平台业务。饿了么的用户量和订单量的快速增长,带来了数据量的快速增长,从而产生对大数据量存储的强烈需求,并且很多数据都是 KeyValue 格式的数据。之前饿了么没有统一的 Key-Value 存储系统,这部分数据被存储在 MySQL、Redis、Mongo、Cassandra 等不同的系统中,将数据存储在这些系统中,带来一些问题,比如数据扩容不方便、内存不可靠、性能不达标、运维不方便等。 ![](http://upload-images.jianshu.io/upload_images/542677-b7598894fea0ae21?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 我们希望用一套统一的 Key-Value 存储系统来存储这些 Key-Value 形式的数据,并且满足以下所有的技术要求: * 大数据量,可以存储至少数十 TB 级别的数据。 * 高性能,在满足高 QPS 的同时,保证比较低的延时。 * 高可靠,数据被可靠的持久化存储,少量机器的损坏不会导致...
TiDB 发布于 3周前 阅读 63

最快速的办法解决MySQL数据量增大之后翻页慢问题

MySQL单表数据量超过30万后,使用Limit翻页查询时 越往后翻页性能越慢
Oo若离oO 发布于 4周前 阅读 405 评论 1 点赞 1

高可用分布式clickhouse集群搭建

发现NoSql中的一匹黑马ClickHouse,昨晚测试单机单表 2000万行 count(*)查询耗时0.25 sec
南寻 发布于 3周前 阅读 105

查看 mysql 数据库当前连接数

命令:mysql> show processlist; 或者  # mysqladmin -uroot -p密码 processlist   如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。 show processlist;只列出前100条,如果想全列出请使用show full processlist; mysql> show processlist; 命令: show status; 或者 # mysqladmin -uroot -p密码 status Aborted_clients                    由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。 Aborted_connects                尝试已经失败的MySQL服务器的连接的次数。 Connections                        试图连接MySQL服务器的次数。 Created_tmp_tables             当执行语句时,已经被创造了的隐含临时表的数量。 Delayed_insert_threads         正在使用的延迟插入处理器线程的数量。 Delayed_writes                     用INSERT DELAYED写入的行数。 Delayed_errors                     用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。 Flush_commands                  执行FLUSH命令的次数。 Handler_delete...
小菜鸟儿 发布于 1个月前 阅读 80

pgAgent (PostgreSQL定时任务)

简介 在pgAdminIII v1.4中引入的pgAgent是一个用于PostgreSQL的作业调度代理,可用于执行操作系统批处理脚本和SQL任务。 从pgAdmin 1.9开始,pgAgent独立于pgAdmin单独安装。 环境: PostgreSQL 9.6.6 pgAgent 3.4.0 cmake 2.8.11 wxWidgets 2.8.12 先安装PG、wxGTK、cmake 安装pgAgent [yangjie@young-1 package]$ tar zxvf pgAgent-3.4.0-Source.tar.gz [yangjie@young-1 package]$ cd pgAgent-3.4.0-Source/ [yangjie@young-1 pgAgent-3.4.0-Source]$ cmake ./ -- -- ================================================================================ -- Configuration summary: -- -- Project : pgagent -- Description : pgAgent is a job scheduling engine for PostgreSQL -- Version : 3.4.0 -- -- PostgreSQL version string : PostgreSQL 9.6.6 -- PostgreSQL version parts : 9.6.6 -- PostgreSQL path : /work/pgsql/pg96 -- PostgreSQL config binary : /work/pgsql/pg96/bin/pg_config -- PostgreSQL include path : /work/pgsql/pg96/include ...
yonj1e 发布于 2周前 阅读 123

如何获得Ethereum测试网络TestNet的以太币

How to get Ether on Testnet Ethereum Wired P2P NetWork
swingcoder 发布于 1周前 阅读 24

DB大量出现select @@session.tx_read_only

在一次捞取Top SQL中,发现DB大量执行select @@session.tx_read_only,几乎每一条DML语句前,都会有这么一个sql。但是应用层并没有做特殊处理,那么这个SQL语句有什么作用?是谁执行了它? 此sql的作用主要是判断事务是否为只读事务。MySQL自身会对只读事务做优化,这是MySQL5.6.5 版本以后才出现的。http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_tx_read_only 定位到MySQL的驱动包 ConnectionImpl.java : 可以看到,在if条件中,对MySQL的版本做了判断,同时也有  !getUseLocalSessionState()  这么一个条件,对应JDBC参数useLocalSessionState,当这个值为false时,会发出select @@session.tx_read_only; 这条sql。 默认情况下,我们的连接串信息没有包含useLocalSessionState参数的设置,这个值默认为false。 这个值的作用是驱动程序是否使用autocommit,read_only和transaction isolation的内部值(jdbc端的本地值)。 如果设置为false,则需要这个判断这三个参数的场景,都需要发语句到远端请求,比如更新语句前, 需要发语句select @@session.tx_read_only确认会话是否只读。 如果设置为true,则只需要取本地值即可。这可以解释为什...
Hosee 发布于 4天前 阅读 20

将数据从redis数据库中存储到本地的mongodb数据库中

redis与mongodb数据转存
邪云 发布于 2个月前 阅读 56

MySQL查询 存在一个表而不在另一个表中的数据

A、B两表,找出id字段中,存在A表,但是不存在B表的数据。 示例:a表                                   b表                               方法1: 使用 not in ,容易理解,效率低  ~执行时间为:1.395秒~ SELECT DISTINCT a.id FROM a WHERE a.ID NOT IN (SELECT id FROM b) 方法二 : 使用 left join...on... , "B.ID isnull" 表示左连接之后在B.ID 字段为 null的记录  ~执行时间:0.739秒~ select A.ID from A left join B on A.ID=B.ID where B.ID is null 方法三 : 逻辑相对复杂,但是速度最快  ~执行时间: 0.570秒~ SELECT * FROM a WHERE (SELECT COUNT(1) FROM b WHERE A.ID = B.ID) = 0; 对于效率我没有测试,这是前人的测试结果,而且原博客最后一种方法写错了。 下面解释一下第三种做法: 按顺序来 首先SELECT * FROM  a  , 如果没有where的话就是查询所有。 现在有where 就缩小范围了,你可以这样理解,他按顺序遍历自己的值,当前值只有where后的表达式等于true时才会取出来。(‘’‘仅是为了方便理解,真实可能并不这样’)。 然后看子查询,子查询count(1) 只有在后面条件 a.id=b.id 时才count 的值才加一。...
为了美好的明天 发布于 3个月前 阅读 115

windows10_x64下安装mongoDB3.4.2

1. http://dl.mongodb.org/dl/win32/x86_64 从这个地址下载需要的mongoDB windows版本 2. 下载的版本是:mongodb-win32-x86_64-2008plus-ssl-3.4.2-signed 3. 安装:     (1).目录:D:\MongoDB\Server\3.4     (2).在D:\MongoDB\Server\3.4目录下新建data, etc, logs文件夹         data目录是mongoDB数据存放目录         etc目录是mongoDB配置文件存放目录         logs目录是mongoDB是日志文件存放目录     (3).在D:\MongoDB\Server\3.4\etc目录下新建mongoDB配置文件mongo.cnf,配置内容如 下:         dbpath=D:\MongoDB\Server\3.4\data #数据库路径         logpath=D:\MongoDB\Server\3.4\logs\mongo.log #日志输出文件路径         logappend=true #错误日志采用追加模式         journal=true #启用日志文件,默认启用         quiet=false #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false         port=7018 #端口号 默认为27017     (4).在 D:\MongoDB\Server\3.4\logs目录下新建mongoDB的日志文件mongo.log 4. 启动mongoDB数据库  在cmd下执...
最王座 发布于 2个月前 阅读 94

composer的官方文档

1、HyperledgerComposer官方文档 http://fabric.docs.cloudchain.cn/ComposerDocs/introduction_introduction/ 2、HyperledgerComposer架构图     
做龙龙 发布于 55分钟前 阅读 4

Oracle11g常用数据字典

Oracle11g常用数据字典 Oracle数据字典的名称由前缀和后缀组成,使用_连接,含义说明如下:   dba_:包含数据库实例的所有对象信息   v$_:当前实例的动态视图,包含系统管理和系统优化等所使用的视图     user_:记录用户的对象信息   gv_:分布式环境下所有实例的动态视图,包括系统管理和系统优化使用的视图   all_:记录用户的对象信息机被授权访问的对象信息     基本数据字典   描述逻辑存储结构和物理存储结构的数据表,还包括描述其他数据对象信息的表: 数据字典名称  说明  dba_tablespaces 关于表空间的信息 dba_ts_quotas 所有用户表空间限额 dba_free_space 所有表空间中的自由分区 dba_segments   描述数据库中所有段的存储空间 dba_extents 数据库中所有分区的信息 dba_tables 数据库中所有数据表的描述 dba_tab_columns 所有表、视图以及簇的列 dba_views 数据库中所有视图的信息 dba_synonyms 关于同义词的信息 dba_sequences 所有用户序列信息 dba_constraints 所有用户表的约束信息 dba_indexs 数据表中所有索引的描述 dba_ind_columns 所有表及簇上压缩索引的列 dba_triggers 所有用户的触发器信息 dba_source 所有用户存储过程信息 db...
wangxuwei 发布于 1天前 阅读 4

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

Redis 集合(Set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。 实例 redis 127.0.0.1:6379> SADD runoobkey redis (integer) 1 redis 127.0.0.1:6379> SADD runoobkey mongodb (integer) 1 redis 127.0.0.1:6379> SADD runoobkey mysql (integer) 1 redis 127.0.0.1:6379> SADD runoobkey mysql (integer) 0 redis 127.0.0.1:6379> SMEMBERS runoobkey 1) "mysql" 2) "mongodb" 3) "redis" 在以上实例中我们通过 SADD 命令向名为 runoobkey 的集合插入的三个元素。 Redis 集合命令 下表列出了 Redis 集合基本命令: 序号 命令及描述 1 SADD key member1 [member2] 向集合添加一个或多个成员 2 SCARD key 获取集合的成员数 3 SDIFF key1 [key2] 返回给定所有集合的差集 4 SDIFFSTORE destination key1 [key2] 返回给定所有集合的差集并存储在 destination 中 5 SINTER key1 [key2] 返回给定所有集合的交集 6 SINTERSTORE destination key1 [key2] 返回给定所有集合的交集并存储在 ...
流氓兔- 发布于 1天前 阅读 4

Redis 列表(List)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。 实例 redis 127.0.0.1:6379> LPUSH runoobkey redis (integer) 1 redis 127.0.0.1:6379> LPUSH runoobkey mongodb (integer) 2 redis 127.0.0.1:6379> LPUSH runoobkey mysql (integer) 3 redis 127.0.0.1:6379> LRANGE runoobkey 0 10 1) "mysql" 2) "mongodb" 3) "redis" 在以上实例中我们使用了 LPUSH 将三个值插入了名为 runoobkey 的列表当中。 Redis 列表命令 下表列出了列表相关的基本命令: 序号 命令及描述 1 BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 2 BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 3 BRPOPLPUSH source destination timeout 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 4 LINDEX key index 通过索引获...
流氓兔- 发布于 1天前 阅读 1

Redis 哈希(Hash)

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。 Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。 实例 127.0.0.1:6379> HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000 OK 127.0.0.1:6379> HGETALL runoobkey 1) "name" 2) "redis tutorial" 3) "description" 4) "redis basic commands for caching" 5) "likes" 6) "20" 7) "visitors" 8) "23000" 在以上实例中,我们设置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 runoobkey 中。 Redis hash 命令 下表列出了 redis hash 基本的相关命令: 序号 命令及描述 1 HDEL key field1 [field2] 删除一个或多个哈希表字段 2 HEXISTS key field 查看哈希表 key 中,指定的字段是否存在。 3 HGET key field 获取存储在哈希表中指定字段的值。 4 HGETALL key 获取在哈希表中指定 key 的所有字段和值 5 HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment 。 6 HINCRBYFLOAT key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment ...
流氓兔- 发布于 1天前 阅读 1

Redis 字符串(String)

Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下: 语法 redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 127.0.0.1:6379> SET runoobkey redis OK redis 127.0.0.1:6379> GET runoobkey "redis" 在以上实例中我们使用了 SET 和 GET 命令,键为 runoobkey。 Redis 字符串命令 下表列出了常用的 redis 字符串命令: 序号 命令及描述 1 SET key value 设置指定 key 的值 2 GET key 获取指定 key 的值。 3 GETRANGE key start end 返回 key 中字符串值的子字符 4 GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。 5 GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。 6 MGET key1 [key2..] 获取所有(一个或多个)给定 key 的值。 7 SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 8 SETEX key seconds value 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。 9 SETNX key value 只有在 key 不存在时设置 key 的值。 10 SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。 11 STR...
流氓兔- 发布于 1天前 阅读 1

Redis 键(key)

Redis 键命令用于管理 redis 的键。 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 127.0.0.1:6379> SET runoobkey redis OK redis 127.0.0.1:6379> DEL runoobkey (integer) 1 在以上实例中 DEL 是一个命令, runoobkey 是一个键。 如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integer) 0 Redis keys 命令 下表给出了与 Redis 键相关的基本命令: 序号 命令及描述 1 DEL key 该命令用于在 key 存在时删除 key。 2 DUMP key 序列化给定 key ,并返回被序列化的值。 3 EXISTS key 检查给定 key 是否存在。 4 EXPIRE key seconds 为给定 key 设置过期时间。 5 EXPIREAT key timestamp EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。 6 PEXPIRE key milliseconds 设置 key 的过期时间以毫秒计。 7 PEXPIREAT key milliseconds-timestamp 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计 8 KEYS pattern 查找所有符合给定模式( pattern)的 key 。 9 MOVE key db 将当前数据库的 key 移动到给定的数据库 db 当中。 10 PERSI...
流氓兔- 发布于 1天前 阅读 1

Redis 命令

Redis 命令用于在 redis 服务上执行操作。 要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前下载的的 redis 的安装包中。 语法 Redis 客户端的基本语法为: $ redis-cli 实例 以下实例讲解了如何启动 redis 客户端: 启动 redis 客户端,打开终端并输入命令 redis-cli。该命令会连接本地的 redis 服务。 $redis-cli redis 127.0.0.1:6379> redis 127.0.0.1:6379> PING PONG 在以上实例中我们连接到本地的 redis 服务并执行 PING 命令,该命令用于检测 redis 服务是否启动。 在远程服务上执行命令 如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令。 语法 $ redis-cli -h host -p port -a password 实例 以下实例演示了如何连接到主机为 127.0.0.1,端口为 6379 ,密码为 mypass 的 redis 服务上。 $redis-cli -h 127.0.0.1 -p 6379 -a "mypass" redis 127.0.0.1:6379> redis 127.0.0.1:6379> PING PONG...
流氓兔- 发布于 1天前 阅读 1

Redis 数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。 string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。 string类型是Redis最基本的数据类型,一个键最大能存储512MB。 实例 redis 127.0.0.1:6379> SET name "runoob" OK redis 127.0.0.1:6379> GET name "runoob" 在以上实例中我们使用了 Redis 的 SET 和 GET 命令。键为 name,对应的值为 runoob。 注意:一个键最大能存储512MB。 Hash(哈希) Redis hash 是一个键值(key=>value)对集合。 Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。 实例 redis> HMSET myhash field1 "Hello" field2 "World" "OK" redis> HGET myhash field1 "Hello" redis> HGET myhash field2 "World" 以上实例中 hash 数据类型存储了包含用户脚本信息的用户对象。 实例中我们使用了 Redis HMSET, HGETALL 命令,user:1 为键值。 每个 hash 可以存储 232 -1 键值对(40多亿)。   Li...
流氓兔- 发布于 1天前 阅读 1

Redis 配置

Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。 你可以通过 CONFIG 命令查看或设置配置项。 语法 Redis CONFIG 命令格式如下: redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME 实例 redis 127.0.0.1:6379> CONFIG GET loglevel 1) "loglevel" 2) "notice" 使用 * 号获取所有配置项: 实例 redis 127.0.0.1:6379> CONFIG GET * 1) "dbfilename" 2) "dump.rdb" 3) "requirepass" 4) "" 5) "masterauth" 6) "" 7) "unixsocket" 8) "" 9) "logfile" 10) "" 11) "pidfile" 12) "/var/run/redis.pid" 13) "maxmemory" 14) "0" 15) "maxmemory-samples" 16) "3" 17) "timeout" 18) "0" 19) "tcp-keepalive" 20) "0" 21) "auto-aof-rewrite-percentage" 22) "100" 23) "auto-aof-rewrite-min-size" 24) "67108864" 25) "hash-max-ziplist-entries" 26) "512" 27) "hash-max-ziplist-value" 28) "64" 29) "list-max-ziplist-entries" 30) "512" 31) "list-max-ziplist-value" 32) "64" 33) "set-max-intset-entries" 34) "512" 35) "zset-max-ziplist-entries" 36) "128" 37) "zset-max-ziplist-value" 3...
流氓兔- 发布于 1天前 阅读 1

Redis 安装

Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases。 Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。 打开一个 cmd 窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.windows.conf 。 如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。输入之后,会显示如下界面: 这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。 切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。 设置键值对 set myKey abc 取出键值对 get myKey Linux 下安装 下载地址:http://redis.io/download,下载最新文档版本。 本教程使用的最新文档版本为 2.8.17,下载并安装: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目...
流氓兔- 发布于 1天前 阅读 1

Redis 简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。   Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。 Redis 优势 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。 Redis与其他key-value存储有什么不同? Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。 Redis运行在内存中但是可以持久化到磁盘,...
流氓兔- 发布于 1天前 阅读 1

读书笔记之Z-BLOG如何选择ASP和PHP程序以及数据库版本?

     最近一直在研究和解决ZBLOG数据库的事情,因为早期的博客一般都采用小型数据库,但时至今日,数据了逐渐增大,ACCESS这样的微软桌面级数据库已经不能够处理当前的数据量了,就算是建立个博客,数据超过2万条也压力山大,生成一次数据要很长时间,而且对用户的访问影响很大,这就促成了我们改善这个难题。      实战数据:ZBLOG ASP程序+SQLSERVER2012数据库,选择读后感(http://www.simayi.net)和IT读书笔记主题,欢迎交流!      ACCESS数据库:建议数据量很小的站可以使用,例如2万条数据以内,访问和生成数据还是毫无压力,但是以后就麻烦越来越大。      sql server数据库:如果要生成纯静态的HTML文件,并且数据量比较大,可以选中这种数据库,那么可以极大地提升访问速度和节省服务器的资源,这对于站长来说是非常实惠和有用的。      MY SQL数据库:如果你选用了PHP的网站程序,并且数据量也比较大,那么就应该搭配这个MYSQL数据库,这是PHP+MYSQL数据库的经典搭配,也是最佳方案。      但是我们要注意一些问题:这套程序的抗压能力并不是很强,做个小博客还行,访问量大了或者数据量大了就扛不住压力!      sql server数据库最好选择...
原创小博客 发布于 2天前 阅读 1

Insert Ignore

mysql中常用的三种插入数据的语句: insert into表示插入数据,数据库会检查主键(Primary-Key),如果出现重复会报错; replace into表示插入或替换数据,如果目标表中有Primary-Key,或者unique索引的话,当出现相同值时,则用新数据替换旧数据,如果没有则和insert into一样插入数据; REPLACE语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和。如果对于一个单行REPLACE数为1,则一行被插入,同时没有行被删除。如果该数大于1,则在新行被插入前,有一个或多个旧行被删除。如果表包含多个唯一索引,并且新行复制了在不同的唯一索引中的不同旧行的值,则有可能是一个单一行替换了多个旧行。   insert ignore表示,如果中已经存在相同的数据记录(如主键和唯一索引),则忽略当前新数据,不进行插入,只插入不相同的数据;
vinci321 发布于 2天前 阅读 1

ICDE:POLARDB定义云原生数据库

摘要: 4月17日(巴黎时间)阿里云POLARDB走出国门,亮相ICDE2018,并同步举办阿里云自有的POLARDB技术专场。在会上,阿里云进行了学术成果展示,从而推动Cloud Native DataBase成为行业标准。   4月17日(巴黎时间)阿里云POLARDB走出国门,亮相ICDE2018,并同步举办阿里云自有的POLARDB技术专场。在会上,阿里云进行了学术成果展示,从而推动Cloud Native DataBase成为行业标准。   以下为阿里云资深技术专家蔡松露演讲实录:   现在我给大家介绍一下我们的云原生数据库-POLARDB。 大家可能要问到底什么是“云原生数据库”,云原生数据库的标准是什么,我们是如何定义的以及为何如此定义?现在,我们先把这些问题放一边,我们稍后回答。 现在我们看一下一个云原生的数据库大概是什么样子,门槛是什么,特性是什么,首先,云原生数据库必须有优越的性能,有百万级别的QPS;其次,必须有超大规模的存储,可达到100TB的存储空间;在云上0宕机能力也是非常重要的;最后一个也是最重要的,云是一个生态系统,数据库必须兼容开源生态。 云原生数据库就像一辆跑车,一辆跑车可能有很多特性,比如外观、速度,但是一个有这样外观和速度的车不一定是跑车。所以回到我们的问题,...
猫耳m 发布于 2天前 阅读 2

delphi字符串截取

劳动保险,劳动保险1,劳动保险2,劳动保险3,劳动保险4 通过stringlist字符串数组截取','生成 劳动保险 劳动保险1 劳动保险2 劳动保险3 劳动保险4 代码如下: procedure TMainForm.UniComboBox1DropDown(Sender: TObject); var   strTemp,strReplace,str:string;   iLength,I:integer; begin   for I := 0 to FileNames.Count-1 do   begin     FileNames[I] := 'false';   end;   strTemp := UniComboBox1.Text;   strReplace := StringReplace (strTemp, ',', '', [rfReplaceAll]);   iLength := strTemp.Length - strReplace.Length;   strReplace := strTemp;   for I := 0 to iLength do   begin //截取字段为str,剩余字段为strReplace     str := strReplace.Substring(0,AnsiPos(',',strReplace)-1); strReplace := strReplace.SubString(AnsiPos(',',strReplace),strReplace.Length-AnsiPos(',',strReplace));     if not str.Trim.IsEmpty then     begin       FileNames.Values[str] := 'true';     end     else     begin       FileNames.Values[strReplace] := 'true';     end;   end;   str := strTemp.SubString(0,str...
dillonxiao 发布于 2天前 阅读 1

ICDE:POLARDB定义云原生数据库

摘要: 4月17日(巴黎时间)阿里云POLARDB走出国门,亮相ICDE2018,并同步举办阿里云自有的POLARDB技术专场。在会上,阿里云进行了学术成果展示,从而推动Cloud Native DataBase成为行业标准。 4月17日(巴黎时间)阿里云POLARDB走出国门,亮相ICDE2018,并同步举办阿里云自有的POLARDB技术专场。在会上,阿里云进行了学术成果展示,从而推动Cloud Native DataBase成为行业标准。 以下为阿里云资深技术专家蔡松露演讲实录: 现在我给大家介绍一下我们的云原生数据库-POLARDB。 大家可能要问到底什么是“云原生数据库”,云原生数据库的标准是什么,我们是如何定义的以及为何如此定义?现在,我们先把这些问题放一边,我们稍后回答。 现在我们看一下一个云原生的数据库大概是什么样子,门槛是什么,特性是什么,首先,云原生数据库必须有优越的性能,有百万级别的QPS;其次,必须有超大规模的存储,可达到100TB的存储空间;在云上0宕机能力也是非常重要的;最后一个也是最重要的,云是一个生态系统,数据库必须兼容开源生态。 云原生数据库就像一辆跑车,一辆跑车可能有很多特性,比如外观、速度,但是一个有这样外观和速度的车不一定是跑车。所以回到我们的问题,云原生数...
阿里云云栖社区 发布于 2天前 阅读 5

Oracle通过老的dbf文件创建新的数据库

使用场景:每次重装系统以后,Oracle都需要重装,但是Oracle的所有文件都是完好的,因此想到是否可以利用这些资源还原Oracle。
yanglk2010 发布于 2天前 阅读 5

阿里云 centos6 上按照 MariaDB

1、https://downloads.mariadb.org/mariadb/repositories/#mirror=tuna&distro=CentOS&distro_release=centos6-amd64--centos6&version=10.2 打开上面的链接 复制选中的值, 2、修改目录 并将上面选中区域的内容拷贝到文件下 这里选择的是64位 按照自己服务器对应选择 sudo vi /etc/yum.repos.d/MariaDB.repo 或修改成一下的源 # MariaDB 10.2 CentOS repository list - created 2017-07-15 07:23 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos6-amd64 gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1   3、安装 sudo yum install MariaDB-server MariaDB-client 安装需要一点时间   4.启动,配置MariaDB 配置方式可参照mysql的配置 service mysql start mysqladmin -u root -p password "mima"  ...
cwftalus 发布于 2天前 阅读 4

Installing Oracle Enterprise Manager Grid Control 11g Release 1 (11.1.0.1.0) Linux x86

Installing Oracle Enterprise Manager Grid Control 11g Release 1 (11.1.0.1.0) Linux x86   This tutorial contains the following sections:   Purpose   Time to Complete   Overview   Scenario   Software Requirements   Prerequisites Configuring the Operating System   Installing Oracle WebLogic Server 11g Release 1 (10.3.2) Linux x86 Installing Oracle Database 11g Release 2 (11.2.0.1.0) Linux x86   Installing Oracle Enterprise Manager Grid Control 11g Release 1 (11.1.0.1.0) Linux x86   Accessing Oracle Enterprise Manager Grid Control with a Browser   Summary   Resources     Purpose In this tutorial, you learn how to install Oracle Enterprise Manager Grid Control 11g Release 1 (11.1.0.1.0) Linux x86. Time to Complete Approximately 2.5 hours. Overview Earlier releases of Oracle Enterprise Manager Grid Control were installed in a single step using Oracle Universal Installer.   With the release of Oracle Enterprise Manager Grid Control 11g Release 1 (11.1.0.1.0) installing Ora...
rootliu 发布于 2天前 阅读 5

AI领袖、应用指南、窥见风口……你还能从这场全球峰会中获得更多

时代的潮流浩浩荡荡,上升到国家发展战略与基础设施的人工智能,正以不可思议的速度占据着我们生活的头条。如果说2017年宣告了人工智能接棒时代脉搏,那么2018年的人工智能将作为颠覆性变革力量迭代世界机器的运作。
GAITC

十个实用MySQL函数

十个实用MySQL函数,你要不要进来领走...
andyqian 发布于 4个月前 阅读 3081 评论 6 点赞 6

谈谈开源(一)

作者 申砾 源码面前,了无秘密 ---- 侯捷 ### 前言 很多人的『开源』是一个比较时髦且有情怀的词汇,不少公司也把开源当做 KPI 或者是技术宣传的手段。但是在我们看来,大多数人开源做的并不好,大多数开源项目也没有被很好的维护。比如前一段时间微博上流传关于 Tengine 的讨论,一个优秀的开源项目不止是公布源代码就 OK 了,还需要后续大量的精力去维护,包括制定 RoadMap、开发新功能、和社区交流、推动项目在社区中的使用、对使用者提供一定程度的支持,等等。 目前我们在国内没看到什么特别好的文章讲如何运营一个开源项目,或者是如何做一个顶级的开源项目。TiDB 这个项目从创建到现在已经有两年多,从开发之初我们就坚定地走开源路线,陆续开源了 TiDB、TiKV、PD 这三个核心组件,获得了广泛的关注,项目在 GitHub 的 Trending 上面也多次登上首页。在这两年中,我们在这方面积累了一些经验和教训,这里和大家交流一下我们做开源过程中的一些感受,以及参与开源项目(至少是指 TiDB 相关项目)的正确姿势。 ### 什么是开源 Open-source software (OSS) is computer software with its source code made available with a license in which the copyright ...
TiDB 发布于 7个月前 阅读 1483 评论 7 点赞 2

浅析开源数据库MySQL架构

数据库是所有应用系统的核心,故保证数据库稳定、高效、安全地运行是所有企业日常工作的重中之重。数据库系统一旦出现问题无法提供服务,有可能导致整个系统都无法继续工作。所以,一个成功的数据库架构在高可用设计方面也是需要充分考虑的。下面就为大家介绍一下如何构建一个高可用的MySQL数据库系统。 做过DBA或者是运维的同学都应该知道,任何设备或服务,存在单点就会带来巨大风险,因为这台物理机一旦宕机或服务模块crash,若在短时间内无法找到替换的设备,势必会影响整个应用系统。因而如何保证不出现单点就是我们的重要工作,使用MySQL高可用方案可以很好地解决这个问题,一般有以下几种: 一、利用MySQL自身的Replication来实现高可用 MySQL自带的Replication就是我们常说的主从复制(AB复制),通过对主服务器做一个从机,在主服务器宕机的情况下快速地将业务切换到从机上,保证应用的正常使用。利用AB复制做高可用方案也分为几种不同的架构: 1、常规的MASTER---SLAVE解决方案 普通的MASTER---SLAVE是目前国内外大多数中小型公司最常用的一种架构方案,主要的好处就是简单、使用设备较少(成本较低)、维护方便。这种架构能解决单点的问题,而且还能在很大程度上...
illy安智 发布于 7个月前 阅读 2385 评论 5 点赞 1

MySQL 死锁与日志二三事

最近线上 MySQL 接连发生了几起数据异常,都是在凌晨爆发,由于业务场景属于典型的数据仓库型应用,白天压力较小无法复现。甚至有些异常还比较诡异,最后 root cause 分析颇费周折。那实际业务当中咱们如何能快速的定位线上 MySQL 问题,修复异常呢?下文我会根据两个实际 case,分享下相关的经验与方法。 1、Case1:部分数据更新失败 某天渠道同学反馈某报表极个别渠道数据为 0,大部分渠道数据正常。这个数据是由一个统计程序每天凌晨例行更新的,按理来说,要么全部正常,要么全部失败,那会是什么原因导致极个别数据异常呢? 首先我们能想到的自然是根据统计任务日志来看了,但是看了统计程序打印的日志没有发现诸如 SQL update 失败的异常描述,那当时的数据库究竟发生了什么呢?在查看 MySQL-server 日志之前,习惯性的看了下数据库状态: SHOW ENGINE INNODB STATUS\G 恰好看到了凌晨这个 update 发生了死锁: ------------------------ LATEST DETECTED DEADLOCK ------------------------ 2017-07-17 04:09:01 0x7f6de03c8700 *** (1) TRANSACTION: TRANSACTION 215208479, ACTIVE 0 sec fetching rows mysql tables in use 3, locked 3 LOCK WAIT 5 lock stru...
xrzs 发布于 9个月前 阅读 8372 评论 9 点赞 19 打赏 1

数据库中间件 MyCAT 源码分析 —— SQL ON MongoDB

![wechat_mp](http://www.yunai.me/images/common/wechat_mp.jpeg) > 🙂🙂🙂关注**微信公众号**有福利: > 1. RocketMQ / MyCAT / Sharding-JDBC **所有**源码分析文章列表 > 2. RocketMQ / MyCAT / Sharding-JDBC **中文注释源码 GitHub 地址** > 3. 您对于源码的疑问每条留言**都**将得到**认真**回复。**甚至不知道如何读源码也可以请教噢**。 > 4. **新的**源码解析文章**实时**收到通知。**每周更新一篇左右**。 ------- - [1. 概述](#) - [2. 主流程](#) - [3. 查询操作](#) - [4. 插入操作](#) - [5. 彩蛋](#) ------- # 1. 概述 可能你在看到这个标题会小小的吃惊,MyCAT 能使用 MongoDB 做数据节点。是的,没错,确实可以。 吼吼吼,让我们开启这段神奇的“旅途”。 本文主要分成四部分: 1. 总体流程,让你有个整体的认识 2. 查询操作 3. 插入操作 4. 彩蛋,😈彩蛋,🙂彩蛋 建议你看过这两篇文章(_非必须_): 1. [《MyCAT 源码分析 —— 【单库单表】插入》](http://www.yunai.me/MyCAT/single-db-single-table-insert/?self) 2. [《MyCAT 源码分析 —— 【单库单表】查询》](http://www.yunai.me/MyCAT/single-db-single-table-select/?self) # 2....
芋道源码 发布于 9个月前 阅读 1899 评论 18 点赞 2

数据库中间件 MyCAT源码分析 —— 跨库两表Join

![wechat_mp](http://www.yunai.me/images/common/wechat_mp.jpeg) > 🙂🙂🙂关注**微信公众号**有福利: > 1. RocketMQ / MyCAT / Sharding-JDBC **所有**源码分析文章列表 > 2. RocketMQ / MyCAT / Sharding-JDBC **中文注释源码 GitHub 地址** > 3. 您对于源码的疑问每条留言**都**将得到**认真**回复。**甚至不知道如何读源码也可以请教噢**。 > 4. **新的**源码解析文章**实时**收到通知。**每周更新一篇左右**。 ------- - [1. 概述](#) - [2. 主流程](#) - [3. ShareJoin](#) - [3.1 JoinParser](#) - [3.2 ShareJoin.processSQL(...)](#) - [3.3 BatchSQLJob](#) - [3.4 ShareDBJoinHandler](#) - [3.5 ShareRowOutPutDataHandler](#) - [4. 彩蛋](#) ------- # 1. 概述 MyCAT 支持跨库表 Join,目前版本仅支持跨库**两**表 Join。虽然如此,已经能够满足我们大部分的业务场景。况且,Join 过多的表可能带来的性能问题也是很麻烦的。 本文主要分享: 1. 整体流程、调用顺序图 2. 核心代码的分析 前置阅读:[《MyCAT 源码分析 —— 【单库单表】查询》](http://www.yunai.me/MyCAT/single-db-single-table-select/?yunai)。 OK,Let's Go。 # 2. 主流程 当执行...
芋道源码 发布于 9个月前 阅读 1555 评论 1 点赞 3

如何理解并正确使用MySql索引

1、概述 索引是存储引擎用于快速查找记录的一种数据结构,通过合理的使用数据库索引可以大大提高系统的访问性能,接下来主要介绍在MySql数据库中索引类型,以及如何创建出更加合理且高效的索引技巧。 注:这里主要针对的是InnoDB存储引擎的B+Tree索引数据结构                        2、索引的优点 1、大大减轻了服务器需要扫描的数据量,从而提高了数据的检索速度 2、帮助服务器避免排序和临时表 3、可以将随机I/O变为顺序I/O 3、索引的创建 3.1、主键索引 ALTER TABLE 'table_name' ADD PRIMARY KEY 'index_name' ('column'); 3.2、唯一索引 ALTER TABLE 'table_name' ADD UNIQUE 'index_name' ('column'); 3.3、普通索引 ALTER TABLE 'table_name' ADD INDEX 'index_name' ('column'); 3.4、全文索引 ALTER TABLE 'table_name' ADD FULLTEXT 'index_name' ('column'); 3.5、组合索引 ALTER TABLE 'table_name' ADD INDEX 'index_name' ('column1', 'column2', ...); 4、B+Tree的索引规则 创建一个测试的用户表 DROP TABLE IF EXISTS user_test; CREATE TABLE user_test( id int AUTO_INCREMENT PRIMARY KEY, user_name varchar(30) NOT NULL, sex bit(...
FEINIK 发布于 9个月前 阅读 6910 评论 24 点赞 30 打赏 2

MySQL基于gtid特性与xtrabackup的数据恢复

通过备份文件新建从库,将binlog跑到指定的gtid位置,可以将数据恢复到指定的时间点。
o翡翠谷o 发布于 10个月前 阅读 1925 评论 2 点赞 2

对MySQL交换分区的实践

前言 在介绍交换分区之前,我们先了解一下 mysql 分区。 数据库的分区有两种:水平分区和垂直分区。而MySQL暂时不支持垂直分区,因此接下来说的都是水平分区。水平分区即:以行为单位对表进行分区。比如:按照时间分区,每一年一个分区等。 在MySQL中,分区是可以交换的,可以将一个分区表中的一个分区和一个普通表中的数据互换。   交换分区的实现 1、交换分区的语法 alter table pt exchange partition p with table nt; 解释: 将 分区表pt 的 分区p 和 一个普通表nt 中的数据 进行互换。 交换的前提条件: 普通表nt 不为临时表,且不是分区表。 表结构和分区表pt的结构一致。 普通表nt 没有外键引用。 普用表nt 若为非空。在MySQL5.6以及之前的版本,必须在分区的范围内;在MySQL5.7之后则可以不再其分区范围内,也依然会成功存入该分区中。 2、实验 交换分区 (1) 创建一个分区表,并插入数据 # 创建一个 分区表e CREATE TABLE e ( id INT NOT NULL, fname VARCHAR(30), lname VARCHAR(30) ) PARTITION BY RANGE (id) ( PARTITION p0 VALUES LESS THAN (50), PARTITION p1 VALUES LESS THAN (100), PARTITION p2 VALUES LES...
star_glm 发布于 10个月前 阅读 2037 评论 4 点赞 5

三篇文章了解 TiDB 技术内幕 —— 谈调度

任何一个复杂的系统,用户感知到的都只是冰山一角,数据库也不例外。 前两篇文章介绍了 TiKV、TiDB 的基本概念以及一些核心功能的实现原理,这两个组件一个负责 KV 存储,一个负责 SQL 引擎,都是大家看得见的东西。在这两个组件的后面,还有一个叫做 PD(Placement Driver)的组件,虽然不直接和业务接触,但是这个组件是整个集群的核心,负责全局元信息的存储以及 TiKV 集群负载均衡调度。 本篇文章介绍一下这个神秘的模块。这部分比较复杂,很多东西大家平时不会想到,也很少在其他文章中见到类似的东西的描述。我们还是按照前两篇的思路,先讲我们需要什么样的功能,再讲我们如何实现,大家带着需求去看实现,会更容易的理解我们做这些设计时背后的考量。 # 为什么要进行调度 先回忆一下第一篇文章提到的一些信息,TiKV 集群是 TiDB 数据库的分布式 KV 存储引擎,数据以 Region 为单位进行复制和管理,每个 Region 会有多个 Replica(副本),这些 Replica 会分布在不同的 TiKV 节点上,其中 Leader 负责读/写,Follower 负责同步 Leader 发来的 raft log。了解了这些信息后,请思考下面这些问题: * 如何保证同一个 Region 的多个 Replica 分布在不同的节点上?更进一...
TiDB 发布于 10个月前 阅读 1133 评论 3 点赞 1

Mongodb高可用集群搭建

最近公司项目要求Mongodb集群且高可用,在查询了一系列文章,再结合项目实际情况,所以采用了这一套高可用集群方案
Crazy_Coder 发布于 11个月前 阅读 2025 评论 5 点赞 7

实验:MySQL使用JDBC执行批处理性能测试

实验:MySQL使用JDBC执行批处理性能测试
IamOkay 发布于 1年前 阅读 1987 评论 10 点赞 6

记一次mysql性能优化过程

所谓mysql的优化,三分是配置的优化,七分是sql语句的优化,通过一些案例分析,希望给大家在工作中带来一些思路
成熟的毛毛虫 发布于 1年前 阅读 6509 评论 57 点赞 36 打赏 3

NoSQL介绍

对nosql出现背景、nosql类型做介绍,并解答nosql相关问题
你我他有个梦 发布于 1年前 阅读 1599 评论 1 点赞 4

Linux服务器安装Oracle服务端总结

通过ssh远程连接linux服务器,上传Oracle11g的安装包,在无图形化界面的情况,安装Oracle服务器端。本例中linux服务器系统为CentOS6.5.
梨加橙 发布于 1年前 阅读 3540 评论 27 点赞 4

【技术解密】SequoiaDB复制组选举原理说明

1.SequoiaDB介绍 SequoiaDB是国内一款自主研发的分布式文档型数据库。它与过去开发者所熟悉的关系型数据库不同,它的数据结构是BSON类型,一种与JSON结构非常相近的数据类型。 SequoiaDB与关系型数据库除了在数据类型上有比较明显的差异外,还原生支持分布式存储。用户在搭建一个能够应对海量数据以及包含高并发操作的系统时,不再需要像过去一样,在业务层面做复杂的分表分库工作,直接在定义数据表时,明确告诉数据库此表需要根据哪个字段以及何种规则进行分布式存储,数据分布式存储对于用户来说变得透明。用户可以更加专注以业务逻辑开发,而不是关注如何分表分库。 2.SequoiaDB总体架构介绍   图1:SequoiaDB 总体架构示意图 SequoiaDB整个集群中,主要角色构成是三个,协调节点,编目节点和数据节点。 1.1 协调节点 协调节点(英文称呼为Coord),是SequoiaDB的任务分发节点(一般用户成为Master节点),本身不存储任何数据,主要负责接收应用程序的访问请求。所以一般用户在与SequoiaDB打交道时,访问的都是协调节点,对于其他角色的节点,一般情况下是不建议用户去访问的。 在SequoiaDB老版本中,协调节点在数据库集群中是类似孤岛式部署的。怎么说呢,主要因为...
巨杉数据库 发布于 1年前 阅读 797 点赞 1

redis 主从配置

redis主从复制过程:  当配置好slave后,slave与master建立连接,然后发送sync命令。无论是第一次连接还是重新连接,master都会启动一个后台进程,将 数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。后台进程完成写文件后,master就发送文件给slave,slave将 文件保存到硬盘上,再加载到内存中,接着master就会把缓存的命令转发给slave,后续master将收到的写命令发送给slave。如果master同时收到多个slave发来的同步连接命令,master只会启动一个进程来写数据库镜像,然后发送给所有的slave。master同步数据时是非阻塞式的,可以接收用户的读写请求。然而在slave端是阻塞模式的,slave在同步master数据时,并不能够响应客户端的查询。 可以在master禁用数据持久化,只需要注释掉master 配置文件中的所有save配置,然后只在slave上配置数据持久化 拥有主从服务器的好处(从服务器是只读的,可以一主多从) 1.    主服务器进行读写时,会转移到从读,减轻服务器压力 2.    热备份 主从都可以设置密码,也可以密码不一致   进入/usr/data/redis/slave 创建 master  slave1  slave2 1.复制redis.conf到3个目录,修改端口 1000,2000,3000 ...
lyg945 发布于 1年前 阅读 5371 评论 20 点赞 12

Redis基数统计——HyperLogLog小内存大用处

摘自本人 http://irfen.me/redis-hyperloglog-intro/ 我们一直都知道,redis几大常用数据结构,字符串、散列、列表、集合、有序集合。其实后来Redis做了很多补充,其中之一就是HyperLogLog,另外的还有GEO(地理位置),是3.2版本加的。 这里我们就来简单介绍下HyperLogLog结构。 先说用处:这个结构可以非常省内存的去统计各种计数,比如注册ip数、每日访问IP数、页面实时UV(PV肯定字符串就搞定了)、在线用户数等。 这里看到所有的用处都是xxx数,所以这个数据结构的特点就是,可以比较准确的估算出你要统计的数量,但是却无法知道统计的详细内容。比如统计每日访问IP数,可以获取当时访问过的IP总数量,但是没法知道这些IP都是什么。 有得必有失,当然你要统计上面提到的那些内容,可以用集合来处理,这样可以知道数量,也能获得所有的详细列表。但是一个大型的网站,每天IP比如有100万个呢,我们粗算一个IP消耗15字节,那么100万个IP就是15M,如果1千万,就是150M。 再来看看我们的HyperLogLog,在Redis中每个键占用的内容都是12K,理论存储近似接近2^64个值,不管存储的内容是什么。12K,知道这个数据结构的作用了吧。这也是为什么他不能知道里面的详细内容了。这是...
赵伊凡 发布于 1年前 阅读 2285 评论 1 点赞 3

PingCAP唐刘:基于Raft构建分布式系统TiKV

2016年9月10日,第52期【OSC源创会】在珠海圆满落幕,350余名OSCer齐聚报业大厦,聆听了一场诚意满满的技术分享盛会。本期源创会由5位讲师分别针对5个不同的主题进行分享,为给未能到现场以及参与活动后仍意犹未尽的OSCer更好的了解和学习,开源中国将每位讲师的演讲内容进行了整理,并将逐一发布。干货多多,不容错过! PingCAP 是国内的一家完全走开源路线的 startup,专注于构建下一代分布式数据库及生态系统,代表作品 TiDB。本期源创会,来自 PingCAP 的首席架构师唐刘,对分布式一致性算法 Raft,以及他们是如何使用 Raft 进行分布式系统 TiKV 的开发进行了介绍与分享。 嘉宾介绍: 唐刘,PingCAP 首席架构师,现致力于下一代分布式数据库 TiDB、分布式存储 TiKV 的开发。开源爱好者,Go、Rust 等语言爱好者和实践者。 分享亮点: 1、 Raft 算法将 Server 划分为3种角色,Leader、Follower 和 Follower,每个 Term 至多存在1个 Leader,每个 Server 本地维护 currentTerm。 2、TiKV 和 TiDB可以看作对应着 Google Spanner 和 F1,用 Open Source 方式重建。 3、TiDB 是使用 Go 编写的,TiKV 是用 Rust 编写的,TiDB 在 TiKV 上层。 4、 TiKV 基于 Raft ,每一个 ...
王练 发布于 2年前 阅读 1463 评论 2 点赞 2

MySQL应用优化

本文从MySQL语句优化、引擎选择、数据库设计三个方面介绍如何进行MySQL应用优化
lonelydawn 发布于 2年前 阅读 4127 评论 20 点赞 6
顶部