技术前沿网

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

快速了解人工智能结晶之语音转换文字

科技解放生产力,人工智能的应用如今是大热,那么今天就来给各位介绍一下IBM在这方面的一个小的尝试,语音转换文字。咱们来看一看相较于传统的转换,结合Watson的IBM是如何做到让识别率飙升的。
IBM Bluemix

谈谈开源(一)

作者 申砾 源码面前,了无秘密 ---- 侯捷 ### 前言 很多人的『开源』是一个比较时髦且有情怀的词汇,不少公司也把开源当做 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 发布于 4天前 阅读 383 评论 2

mysql树状数据的数据库设计

### 0 树状数据的分类 我们在mysql数据库设计的时候,会遇到一种树状的数据.如公司下面分开数个部门,部门下面又各自分开数个科室,以此形成树状的数据.关于树状的数据,按层级数大致可分为一下两类: 分类 | 特点 ---|--- 固定数量层级 | 层级数量固定,每一层级都有各自的意义,如集团-分公司-部门-科室,省-市-区等 可变数量层级 | 层级数量不固定,前几层级可能会有特殊含义,但整体在相当大的范围内是浮动的 前者的优点在于,由于每一层级均有各自含义,数据库的整体设计更为方便,可将某一子节点的不同上级节点均存储在数据库中,同样以某集团为例: 节点code | 节点名称 | 节点层级 | 父级节点code | 1级祖先code | 2级祖先cdoe --- | --- | --- | --- | --- | --- 010000 | 公司1 | 1 | 000000 | null | null 020000 | 公司2 | 1 | 000000 | null | null 010300 | 制造部 | 2 | 010000 | 010000 | null 010400 | 品质部 | 2 | 010000 | 010000 | null 010301 | 前工程制造 | 3 | 010300 | 010000 | 010300 010303 | 组装制造 | 3 | 010300 | 010000 | 010300 这样设计的表格冗余较多,但在各种类型查询的时候效率较高.在插入,更新(含子机构,由于业务逻辑特点,机构之间的更新一般是平...
杨意社 发布于 5天前 阅读 106

【BBED】BBED模拟并修复ORA-08102错误

【BBED】BBED模拟并修复ORA-08102错误
小麦苗 发布于 7天前 阅读 31

尊重开源,且用且珍惜

——致开源多模型数据库ArangoDB 在中国市场的“山寨友”
GermanWifi 发布于 1周前 阅读 430 评论 8 点赞 3

[ElasticSearch ]2轻量级搜索

# 概述 ES是一个搜索引擎,我们之所以要使用它就是为了借助它快速构建全文索引,帮助我们快速检索数据。 本文接着上篇文章[ElasticSearch1初步使用](http://www.jianshu.com/p/b338b37dd5e2)继续来通过blogs索引实例说明如何简单的借助ES实现轻量级搜索功能。 # 问题 本文主要以应用ES为基本问题,主要探索ES通过GET方法进行搜索的使用方法。在实验的示例中本文也会简要的描述ES相关的理论知识。 如何使用索引进行搜索,对搜索结果进行分页,并使用简单的条件来过滤搜过结果是本文需要探讨的问题。 # 方法 本文采用对照RDBMS中SELECT功能的方法来描述ES中的轻量级搜索的概念,从总体上来讲,在ES中搜索数据其实和在RDBMS中SELECT数据是一样的,都可以指定搜索(查询)条件,都可以设置返回字段,也都可以进行一定的聚合运算。只不过ES搜索引擎使用全文搜索得到的结果会根据内容与搜索关键字的匹配程度给与每个结果一个权重,这个权重就作为搜索结果排序的依据。而RDBMS完全是依照ORDER BY子句中指定的排序规则进行排序的。 说明: ES REST API所提供的完全在URL中描述参数的接口就是轻量级搜索接口,换句话说轻量级搜索接口都是使用GET方法的。所以文中示例使用的地址和API...
为为02 发布于 2周前 阅读 336

浅析开源数据库MySQL架构

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

PostgreSQL hook机制编写插件限制超级用户权限

PG版本:PostgreSQL 9.6.5 由于版本不同代码会有所差别,本例在PostgreSQL 9.6.5编写而来,其他版本未经测试(PostgreSQL 10beta3测试不能直接用)。 1.安装插件前 [email protected]:~/PG/PG9.6.5/bin$ ./createdb testdb [email protected]:~/PG/PG9.6.5/bin$ ./createuser testuser [email protected]:~/PG/PG9.6.5/bin$ ./psql -U testuser testdb psql (9.6.5) Type "help" for help. testdb=> create table testtable(a int); CREATE TABLE testdb=> create table testtable2(a int); CREATE TABLE testdb=> \q [email protected]:~/PG/PG9.6.5/bin$ ./psql -U sun testdb psql (9.6.5) Type "help" for help. testdb=# \d List of relations Schema | Name | Type | Owner --------+------------+-------+---------- public | testtable | table | testuser public | testtable2 | table | testuser (2 rows) testdb=# drop table testtable2; DROP TABLE testdb=# \d List of relations Schema | Name | Type | Owner --------+-----------+-------+---------- public | testtable | table | testuser (1 row) 2.安装插件后 [email protected]:~/PG/PG9.6.5/bin$ ...
SunBeau 发布于 2周前 阅读 182 评论 1 点赞 1

pgBadger(PostgreSQL日志分析工具)

摘要 之前曾介绍过PostgreSQL的日志审计,这会将执行的SQL输出到服务日志(pg_log),势必会带来性能问题,真正的问题是,这些记录对我们有多少帮助?所以我们来看一下如何使用增加的日志记录来做一些有用的事情。 pg_stat_statements 不仅输出SQL语句,还可以输出执行时间等,通过分析此服务器日志,可以知道执行什么样的SQL,以及缩小范围找到哪些SQL有可能出现性能问题。 SQL日志分析工具pgBadger pgBadger 主页:home 下载地址:download pgBadger是在Perl中创建的一个脚本,与PHP脚本中开发的名为pgFouine的程序具有相同的功能。 在命令行上指定并执行服务器日志时,会生成一个将服务器日志分析为HTML文件的报告。 此外,它不仅收集SQL,还收集服务器日志中的错误日志等。 环境 CentOS 6.9、PostgreSQL9.5.9、pgBadger 9.2 安装pgBadger tar zxvf pgbadger-9.2.tar.gz cd pgbadger-9.2 [[email protected] pgbadger-9.2]# ll total 1416 drwxr-xr-x. 8 root root 4096 Sep 11 01:13 blib -rw-rw-r--. 1 root root 94609 Jul 28 07:45 ChangeLog -rw-rw-r--. 1 root root 347 Jul 28 07:45 CONTRIBUTING.md drwxrwxr-x. 2 root root 4096 Jul 28 07:45 doc -...
yonj1e 发布于 3周前 阅读 450 点赞 1

mysql数据表存储引擎类型及特性

数据表类型(存储引擎) 数据库引擎用于存储、处理和保护数据的核心服务,利用数据库引擎可控制访问权限并快速处理事务,利用数据库引擎创建用于联机事务处理或联机分析处理数据的关系数据库,包括创建用于存储数据的表和用于查看、管理、保护数据安全的数据库对象(索引、视图、存储过程)。 常见引擎比对 特性 Myisam InnoDB Memory BDB Archive 存储限制 无限制 64TB 有 没有 没有 事务安全 - 支持 - 支持 - 锁机制 表锁 行锁 表锁 页锁 行锁 B树索引 支持 支持 支持 支持 - 哈希索引 - 支持 支持 - - 全文索引 支持 - - - - 集群索引 - 支持 - - - 数据缓存 - 支持 支持 - - 索引缓存 支持 支持 支持 - - 数据压缩 支持 - - - 支持 空间使用 低 高 N/A 低 非常低 内存使用 低 高 中 低 低 批量插入速度 高 低 高 高 非常高 外键支持 - 支持 - - - 各引擎特点 Myisam mysql默认存储引擎,在磁盘上存储成三个文件.frm(存储表定义).MYD(MYData存储数据)。MYI(MYIndex存储索引); 没有事务支持,不支持行锁外键,因此当insert、update会锁定整个表,效率会低一些,MyIASM中存储了行数,如果表的读操作远大于写且不需要事务,MyISAM优选。 索引 MyISAM引擎索引结构为B+Tree,...
qinwei 发布于 3周前 阅读 242 评论 3 点赞 1

如何编写更好的SQL查询:终极指南-第二部分

上一篇文章中,我们学习了 SQL 查询是如何执行的以及在编写 SQL 查询语句时需要注意的地方。 下面,我进一步学习查询方法以及查询优化。   基于集合和程序的方法进行查询 反向模型中隐含的事实是,建立查询时基于集合和程序的方法之间存在着不同。 查询的程序方法是一种非常类似于编程的方法:你告诉系统需要做些什么以及如何做。例如上一篇文章中的示例,通过执行一个函数然后调用另一个函数来查询数据库,或者使用包含循环、条件和用户定义函数(UDF)的逻辑方式来获得最终查询结果。你会发现通过这种方式,一直在请求一层一层中数据的子集。这种方法也经常被称为逐步或逐行查询。 另一种是基于集合的方法,只需指定需要执行的操作。使用这种方法要做的事情就是,指定你想通过查询获得的结果的条件和要求。在检索数据过程中,你不需要关注实现查询的内部机制:数据库引擎会决定最佳的执行查询的算法和逻辑。 由于 SQL 是基于集合的,所以这种方法比起程序方法更加有效,这也解释了为什么在某些情况下,SQL 可以比代码工作地更快。 基于集合的查询方法也是数据挖掘分析行业要求你必须掌握的技能!因为你需要熟练的在这两种方法之间进行切换。如果你发现自己的查询中存在程...
葡萄城控件技术团队 发布于 3周前 阅读 886 点赞 2
腾讯开源

基于腾讯Angel的LDA*入选VLDB,超越微软LightLDA

--- > 2017年8月27日-9月1日, 数据库领域的国际顶级学术会议VLDB(Very Large DataBase) 在德国慕尼黑召开。 腾讯TEG数据平台部和北京大学联合撰写的大规模主题模型系统的论文《`LDA*`:A Robust and Large-scale Topic Modeling System》, 入选了今年VLDB的Research Track,并获邀在大会上进行Oral Presentation。 ![](http://upload-images.jianshu.io/upload_images/1672626-5ca8ed7001bf320c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) VLDB会议由VLDB基金会赞助,和另外两大会议SIGMOD、ICDE构成了数据库领域的三个顶级会议,而它是这3个会议中,含金量最高的一个。VLDB的论文接受率总体很低,只有创新性很高、贡献很大的论文才有机会被录用。近年来随着大数据的发展,VLDB的领域也从数据库扩展到大数据相关领域,与时俱进的同时,依然保持着对文章质量的严格把控。 本次论文的主要内容,是研究如何在工业界的环境中建立一个大规模的主题模型训练系统。在这之前,已经有很多的相关的系统工作,包括YahooLDA,微软的LightLDA以及Petuum等,而`LDA*` 则解决了 __鲁棒的采样性能__ 以及 __词分布倾斜__ 这两个难题,取得了更好的性能。`LDA*` 构建于腾讯...
腾讯开源 发布于 4周前 阅读 207

MySQL SQL优化之覆盖索引

利用索引提升SQL的查询效率是我们经常使用的一个技巧,但是有些时候MySQL给出的执行计划却完全出乎我们的意料,我们预想MySQL会通过索引扫描完成查询,但是MySQL给出的执行计划却是通过全表扫描完成查询的,其中的某些场景我们可以利用覆盖索引进行优化。
Mr船长 发布于 4周前 阅读 1149 评论 12 点赞 10

MySQL进行Replace操作时造成数据丢失——那些坑你踩了吗?

## 一、问题说明 公司开发人员在更新数据时使用了 replace into 语句,由于使用不当导致了数据的大量丢失,到底是如何导致的数据丢失?现分析如下。 ## 二、问题分析 ### a. REPLACE 原理 REPLACE INTO 原理的官方解释为: > REPLACE works exactly like INSERT, except that if an old row in the table has the same value as a new row for a PRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted. > 如果新插入行的主键或唯一键在表中已经存在,则会删除原有记录并插入新行;如果在表中不存在,则直接插入 地址:https://dev.mysql.com/doc/refman/5.6/en/replace.html ### b. 问题现象 丢失数据的表结构如下: ```sql CREATE TABLE `active_items` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `ad_id` char(32) NOT NULL DEFAULT '' COMMENT 'XXX', `ap_id` tinyint(4) NOT NULL DEFAULT '1' COMMENT 'XXX', `price` bigint(20) NOT NULL DEFAULT '0' COMMENT 'xxx', `rate` int(11) NOT NULL DEFAULT '0' COMMENT 'XXX', `cc_price` bigint(20) NOT NULL DEFAULT '0' COMMENT 'XXX', `sale_count` int(11) NOT NU...
o翡翠谷o 发布于 1个月前 阅读 689 评论 4

折腾笔记——使用MongoDB(1、Windows安装MongoDB)

1、MongoDB简介         MongoDB是一个高性能,开源,无模式、易部署、易使用,存储数据非常方便的文档型数据库,是当前NoSql(Not Only SQL,但其实已经悄悄滴放弃了SQL的一些特性和功能)数据库中非常热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发。Mongo的官方网站地址是:http://www.mongodb.org/ ,可以去下载编译好的二进制文件和压缩包。也可以去https://github.com/mongodb,下载源码(版本非常全面)。             主要功能特点有: MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。 Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。 MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。 Mongodb中的...
二十岁以后 发布于 1个月前 阅读 545 点赞 1
neo-chen

Elasticsearch Cluster 安装与配置

集群模式需要两个以上的节点,通常是一个 master 节点,多个 data 节点 首先在所有节点上安装 elasticsearch,然后配置各节点的配置文件,对于 5.5.1 不需要配置决定哪些节点属于 master 节点 或者 data 节点。
neo-chen 发布于 1个月前 阅读 587

PostgreSQL 10 HASH分区实现

PostgreSQL 10 HASH分区 前面简单说明了基于pg10实现hash分区的使用语法,下面介绍参照range/list分区实现的hash分区。 注意:由于本人水平限制,难免会有遗漏及错误的地方,不保证正确性,并且是个人见解,发现问题欢迎留言指正。 思路 语法尽可能与range/list分区相似,先创建主表,再创建分区。 inser时对key值进行hash算法对分区数取余,找到要插入的分区。 可动态添加分区,当分区中有数据并新创建分区时,数据重新计算并分发。 select时约束排除使用相同的算法过滤分区。 建表语法 yonj1e=# create table h (h_id int, h_name name, h_date date) partition by hash(h_id); CREATE TABLE yonj1e=# create table h1 partition of h; CREATE TABLE yonj1e=# create table h2 partition of h; CREATE TABLE yonj1e=# create table h3 partition of h; CREATE TABLE yonj1e=# create table h4 partition of h; CREATE TABLE 建主表的语法与range/list分区一样,只有类型差别。 子表不需要想range/list分区那样的约束,因此不需要额外的说明,创建后,会将分区key值信息记录到pg_class.relpartbound。 创建主表时做了两个主要修改以识别主表的创建: /src/include/nodes/p...
yonj1e 发布于 2个月前 阅读 126 评论 1 点赞 1

PostgreSQL 日志审计

 PostgreSQL 日志审计 摘要 审计是指记录用户的登陆退出以及登陆后在数据库里的行为操作。 Postgres 的日志(pg_log)功能十分丰富,接下来首先会介绍它的标准日志审计功能,之后还会详细介绍 postgresql审计扩展(PgAudit) ,编译安装以及使用。 设置 highgo=# show logging_collector; --是否开启日志收集,默认off logging_collector ------------------- on (1 row) highgo=# show log_destination; --日志记录类型,默认是stderr,只记录错误输出 log_destination ----------------- stderr (1 row) highgo=# show log_directory; --日志路径,默认是$PGDATA/pg_log log_directory --------------- pg_log (1 row) highgo=# show log_filename; -日志名称,默认是postgresql-%Y-%m-%d_%H%M%S.log log_filename -------------------------------- postgresql-%Y-%m-%d_%H%M%S.log (1 row) highgo=# show log_connections; --用户session登陆时是否写入日志,默认off log_connections ----------------- off (1 row) highgo=# show log_disconnections; --用户session退出时是否写入日志,默认off log_disconnections ...
yonj1e 发布于 2个月前 阅读 409

PostgreSQL 10 分区表探密

PostgreSQL 10 分区表探密 分区介绍 PostgreSQL的分区需要先建立主表,然后再建立子表,使用继承的特性,但不需要手动写触发器/规则了,目前支持range、list分区,10 正式版发布时不知道会不会有其他的,后面我会介绍我基于10 Beta2添加的hash分区。 range分区 分区语法: postgres=# create table r (r_id int, r_name name, r_date date) partition by range (r_id); CREATE TABLE postgres=# create table r1 partition of r for values from (1) to (10); CREATE TABLE postgres=# create table r2 partition of r for values from (10) to (20); CREATE TABLE postgres=# create table r3 partition of r for values from (20) to (30); CREATE TABLE postgres=# insert into r select id, md5(random()::text), now() + (id||'day')::interval from generate_series(1, 29) t(id); INSERT 0 29 postgres=# select *, tableoid::regclass from r; r_id | r_name | r_date | tableoid ------+----------------------------------+------------+---------- 1 | 1d0d0680930198d2962b3b5f9cf82083 | 2017-08-09 | r1 2 | 47ba81de41d71bd51b18c7861a594b...
yonj1e 发布于 2个月前 阅读 471 评论 1

使用Redis解决“树”形数据的复杂查询

# 使用Redis解决“树”形数据的复杂查询 最近因业务需要,研究了一下树数据结果的存储及查询解决方案。 最初的想法是使用neo4j,可是在网上看了一下开源的不支持集群,感觉用的人不多。 网上也查了一些 [树形结构数据存储方案](https://www.biaodianfu.com/?s=%E6%A0%91%E5%BD%A2%E7%BB%93%E6%9E%84%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8%E6%96%B9%E6%A1%88) 但每种实现方案都有它的一定局限性。 想了一短时间后,想出了下面的方案: 一、 因为复杂的查询都由Redis来处理,所以数据库表的设计就变得非常简单:tree 表 | 字段名称 | 数据类型 | 备注说明 | | ---- | ---- | ---- | | id | int | 主键 | | parent_id | int | 上级节点ID | 二、Redis的数据存储方案: 把表的数据存储到一个Hash表中,使用表中的id值做为此hash表的key, value值为: { id: 10, parentId: 9, childIds: [11] } ### 代码实现 为了简化测试,这里只演示Redis相关的操作 1. Tree 类定义 public class Tree { private Integer id; private String name; private Integer parentId; private List childIds; } 2. 往Redis中添加测试数据: [@Test](https://my.oschina.net/azibug) public void addTest...
qiujiayu 发布于 2个月前 阅读 1509 评论 9

融合RocksDB, Pregel, Fault-Tolerent Foxx & Satellite Collections 怎样使数据库性能提升35%?

经过数月的研发测评,开源多模型数据库ArangoDB 终于发布了其 3.2 正式版,该版本消除了两个重大的障碍,添加了一个期待已久的功能,还集成了一个有趣的功能。此外,官方团队表示新版本将 ArangoDB 的性能平均提高了 35%。同时,与 3.1 版本相比,还减少了内存的占用。集群管理方面也有了大幅度的改进。 具体如下:
GermanWifi 发布于 2个月前 阅读 162 评论 3

MySQL的binlog日志

MySQL的binlog日志
通吃岛-低手哥 发布于 4周前 阅读 11

left join 和 inner join

使用小经验,可能有错误,欢迎指出
learn_more 发布于 3个月前 阅读 51

Oracle执行计划调优-超级大表关联超级小表的性能调优

今日客户现场出现一个查询SQL异常慢的情况。 用时分钟级别。 SELECT *   FROM (SELECT a1.*, rownum rn           FROM (SELECT openOrder2017.exchId,                        ............                        openOrder2017.internalbizmark,                        customer.typeIdList                   FROM openOrder2017, customer                  WHERE openOrder2017.custId = customer.custId                    AND openOrder2017.orderTime >= 20170810000000                    AND openOrder2017.orderTime <= 20170811235959                    AND openOrder2017.branchId IN ('001100', '001101')                    AND openOrder2017.acctId IN ('##########')                    AND openOrder2017.optLevel IN ('A0')                    AND openOrder2017.custType IN                        ('A2', 'A9', 'A1', 'A4', 'A3')                  ORDER BY orderTime, serialNum) a1...
Black_Lands 发布于 1个月前 阅读 26

mysql在linux下的安装

mysql在linux下的安装 安装环境:系统是 centos6.5 1、下载     下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads     下载版本:我这里选择的5.6.33,通用版,linux下64位     也可以直接复制64位的下载地址,通过命令下载:wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz 2、解压 1 2 3 4 #解压 tar -zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz #复制解压后的mysql目录 cp -r mysql-5.6.33-linux-glibc2.5-x86_64 /usr/local/mysql 3、添加用户组和用户 1 2 3 4 #添加用户组 groupadd mysql #添加用户mysql 到用户组mysql useradd -g mysql mysql 4、安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 cd /usr/local/mysql/<br>mkdir ./data/mysql chown -R mysql:mysql ./ ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql cp support-files/mysql.server /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld cp support-files/my-default.cnf /etc/my.cnf   #修改启动脚本 vi /etc/init.d/mysqld   #修改...
rootliu 发布于 3周前 阅读 4

MySQL 获取两个日期之间的日期列表

select * from (select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date from (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0, (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1, (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2, (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3, (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v where selected_date between '2017-02-10' and '2017-06-15'; 上例返回2017-02-10到2017-06-15之间的日期列表。...
莫铭 发布于 1周前 阅读 10

MySQL 锁之死锁

死锁在生产环境中其实是不可避免,但是我们可以尽可能的减少死锁的出现。另外一个系统中如果经常出现死锁,那肯定是有问题的 ,如果偶尔出现可以忽略的
learn_more 发布于 7天前 阅读 7

谈谈开源(一)

作者 申砾 源码面前,了无秘密 ---- 侯捷 ### 前言 很多人的『开源』是一个比较时髦且有情怀的词汇,不少公司也把开源当做 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 发布于 4天前 阅读 383 评论 2

mysql分库分表

依据个人经验:数据库分表首先是进行预估数据量、数据的属性、以及维度的划分。分库分表中维度的选取是极为重要一个步骤,这个主要与所设计分表业务密切相关的。 数据量是基于目前数据的业务属性在未来的时间内递量,依次来评估数据所占的是硬盘大小。举个例子:股票期货交易的ticker数据,每天的行情变化数据量是一个不小的数字。 以A股为例:假设A股票每分钟变化10次,那么每天产生的行情数据为60*4*10 = 2400条数据,假设每年有250个交易日,那么股票A产生的数据量为2400*250 =600W条数据,假设A股市场有3000只股票,每年要存的数据量为600W*3000=180亿条数据。 面对这么大的一个数据量,第一层考虑将每只股票的行情放在一张表里,但是随时时间的推移,过个两三年那么每个股票的行情表的数据量量就达到千万了,而且数据量只会越来越大,只能事先把分库分表策略写好。所以,第二层考虑的是将每只股票的行情数据再进行分表。接下来考虑记录所有分表的位置的配置表的结构------设定每张表最大可以存的数据量,以时间的开始和结束作为每张行情表的范围标记,因为历史航行多用于数据分析和策略,所以准确性也是非常重要的;通常情况下会选多路数据进行对比,所以数据来源也是分...
二师弟的大师兄 发布于 22小时前 阅读 13

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 发布于 2个月前 阅读 7889 评论 9 点赞 17 打赏 1

如何理解并正确使用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(1) NOT NULL DEFAULT b'1', city varc...
FEINIK 发布于 3个月前 阅读 6319 评论 24 点赞 30 打赏 2

mysql安装卡在Type and NetWorking,无法继续安装。

由于重装了电脑,需要重新安装mysql,使用的mysql-installer-community-5.7.19.0.msi安装包。安装一切正常,然后就卡在Type and NetWorking页面,无法继续安装,看不到Next按钮。 后来查找了半天,才发现是电脑设置的原因。 桌面右键/个性化/显示/修改为:较小-默认100%,即可。如下图: 设置完成后,注销电脑。然后继续安装MYSQL,就可以看到Next按钮,正常安装了。
一片云里的天空 发布于 2个月前 阅读 347

浅析开源数据库MySQL架构

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

如何编写更好的SQL查询:终极指南-第二部分

上一篇文章中,我们学习了 SQL 查询是如何执行的以及在编写 SQL 查询语句时需要注意的地方。 下面,我进一步学习查询方法以及查询优化。   基于集合和程序的方法进行查询 反向模型中隐含的事实是,建立查询时基于集合和程序的方法之间存在着不同。 查询的程序方法是一种非常类似于编程的方法:你告诉系统需要做些什么以及如何做。例如上一篇文章中的示例,通过执行一个函数然后调用另一个函数来查询数据库,或者使用包含循环、条件和用户定义函数(UDF)的逻辑方式来获得最终查询结果。你会发现通过这种方式,一直在请求一层一层中数据的子集。这种方法也经常被称为逐步或逐行查询。 另一种是基于集合的方法,只需指定需要执行的操作。使用这种方法要做的事情就是,指定你想通过查询获得的结果的条件和要求。在检索数据过程中,你不需要关注实现查询的内部机制:数据库引擎会决定最佳的执行查询的算法和逻辑。 由于 SQL 是基于集合的,所以这种方法比起程序方法更加有效,这也解释了为什么在某些情况下,SQL 可以比代码工作地更快。 基于集合的查询方法也是数据挖掘分析行业要求你必须掌握的技能!因为你需要熟练的在这两种方法之间进行切换。如果你发现自己的查询中存在程...
葡萄城控件技术团队 发布于 3周前 阅读 886 点赞 2

DAO设计模式(进一步封装JDBC工具类)

一、DAO模式简介 DAO即Data Access Object,数据访问接口。数据访问:故名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。 DAO模式实际上是两个模式的组合,即Data Accessor (数据访问者)模式和 Active Domain Object(领域对象)模式。Data Accessor 模式实现了数据访问和业务逻辑的分离;Active Domain Object 模式实现了业务数据的对象化封装。 需要注意的是,DAO设计模式是Java EE中的设计模式,而非Java SE中的23种设计模式。   二、实现DAO模式 一个典型的DAO实现有下列几个组件: 一个DAO接口; 一个实现DAO接口的具体类;  数据传递对象(DTO):有些时候叫做值对象(VO)或领域模型(domain) 这种实现模式就是一个套路,记熟就好了。不过在这之前,如果有不明白的地方,还是要回顾一下之前几篇博文中的知识:PreparedStatement接口重构增删改查、封装JDBC工具类。好了,下面直接上代码。 三、代码实现 我们一下面的这张数据表为例: 新建Java工程文件DaoTest01,最终的工程文件结构如下: DBUtils:初步封装的JDBC工具类; db-config.properties:属性文件,方便修改配置信息; Person类就是领域模型,表示是对它(数据库表)进行增删改查。 PersonDao接口:专...
小衰哥有点帅 发布于 23小时前 阅读 6

sqlalchemy 插入或者更新数据失败 UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-3: o

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-3: ordinal not in range(256)
coord 发布于 1周前 阅读 42

数据库同步软件SyncNavigator

SyncNavigator可以同步sql server 和mysql 等不同的数据库。
wangxujun59 发布于 2天前 阅读 10

封装JDBC工具类

通过分析可以发现有上一篇博文中有以下不足:有许多重复的代码、每次都要加载驱动、获取连接等。增删改查无非只是slq语句不一样而已。 封装工具类就是一个抽象的过程,我们可以把现在代码中非常公用的代码抽取出来,形成一个工具类。 第一步:抽象公共的代码到工具类。 第二步:为提高可以连接不同数据库的能力,将连接数据库的URL、用户名,密码等信息编写在一个属性文件(jdbc.properties)中,方便以后进行修改。  新建工程文件,结构如下 1)新建一个DBUtils工具类 package com.vae.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ResourceBundle; /** * 数据库操作工具类 * @author lamp * */ public class DBUtils { //数据库连接地址 public static String URL; //用户名 public static String USERNAME; //密码 public static String PASSWORD; //mysql的驱动类 public static String DRIVER; private static ResourceBundle rb = ResourceBundle.getBundle("com.vae.jdbc.db-c...
小衰哥有点帅 发布于 24小时前 阅读 5

使用Redis解决“树”形数据的复杂查询

# 使用Redis解决“树”形数据的复杂查询 最近因业务需要,研究了一下树数据结果的存储及查询解决方案。 最初的想法是使用neo4j,可是在网上看了一下开源的不支持集群,感觉用的人不多。 网上也查了一些 [树形结构数据存储方案](https://www.biaodianfu.com/?s=%E6%A0%91%E5%BD%A2%E7%BB%93%E6%9E%84%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8%E6%96%B9%E6%A1%88) 但每种实现方案都有它的一定局限性。 想了一短时间后,想出了下面的方案: 一、 因为复杂的查询都由Redis来处理,所以数据库表的设计就变得非常简单:tree 表 | 字段名称 | 数据类型 | 备注说明 | | ---- | ---- | ---- | | id | int | 主键 | | parent_id | int | 上级节点ID | 二、Redis的数据存储方案: 把表的数据存储到一个Hash表中,使用表中的id值做为此hash表的key, value值为: { id: 10, parentId: 9, childIds: [11] } ### 代码实现 为了简化测试,这里只演示Redis相关的操作 1. Tree 类定义 public class Tree { private Integer id; private String name; private Integer parentId; private List childIds; } 2. 往Redis中添加测试数据: [@Test](https://my.oschina.net/azibug) public void addTest...
qiujiayu 发布于 2个月前 阅读 1509 评论 9

mysql数据表存储引擎类型及特性

数据表类型(存储引擎) 数据库引擎用于存储、处理和保护数据的核心服务,利用数据库引擎可控制访问权限并快速处理事务,利用数据库引擎创建用于联机事务处理或联机分析处理数据的关系数据库,包括创建用于存储数据的表和用于查看、管理、保护数据安全的数据库对象(索引、视图、存储过程)。 常见引擎比对 特性 Myisam InnoDB Memory BDB Archive 存储限制 无限制 64TB 有 没有 没有 事务安全 - 支持 - 支持 - 锁机制 表锁 行锁 表锁 页锁 行锁 B树索引 支持 支持 支持 支持 - 哈希索引 - 支持 支持 - - 全文索引 支持 - - - - 集群索引 - 支持 - - - 数据缓存 - 支持 支持 - - 索引缓存 支持 支持 支持 - - 数据压缩 支持 - - - 支持 空间使用 低 高 N/A 低 非常低 内存使用 低 高 中 低 低 批量插入速度 高 低 高 高 非常高 外键支持 - 支持 - - - 各引擎特点 Myisam mysql默认存储引擎,在磁盘上存储成三个文件.frm(存储表定义).MYD(MYData存储数据)。MYI(MYIndex存储索引); 没有事务支持,不支持行锁外键,因此当insert、update会锁定整个表,效率会低一些,MyIASM中存储了行数,如果表的读操作远大于写且不需要事务,MyISAM优选。 索引 MyISAM引擎索引结构为B+Tree,...
qinwei 发布于 3周前 阅读 242 评论 3 点赞 1

CentOS7 安装Oracle 11.2.0

[toc] # CentOS7 安装Oracle 11.2.0 ## 材料 ``` [[email protected] yum.repos.d]# rpm -qi centos-release Name : centos-release Version : 7 Release : 2.1511.el7.centos.2.10 Architecture: x86_64 Install Date: Tue 27 Jun 2017 11:37:39 PM PDT Group : System Environment/Base Size : 36019 License : GPLv2 Signature : RSA/SHA256, Wed 09 Dec 2015 02:01:49 AM PST, Key ID 24c6a8a7f4a80eb5 Source RPM : centos-release-7-2.1511.el7.centos.2.10.src.rpm Build Date : Wed 09 Dec 2015 01:59:15 AM PST Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem Vendor : CentOS Summary : CentOS Linux release file Description : CentOS Linux release files ``` ## 环境设置 ### 修改操作系统核心参数 1. 修改用户的SHELL的限制,修改/etc/security/limits.conf文件追加以下内容,设置系统进程的最大数目、打开文件的最大数目 [参考资料](http://blog.csdn.net/panfelix/article/details/21008887) ``` [[email protected] oracle]# vim /etc/security/limits.conf oracle soft nproc 2047 oracle hard nproc 16384 o...
邹卓琪 发布于 1个月前 阅读 16

谈谈开源(一)

作者 申砾 源码面前,了无秘密 ---- 侯捷 ### 前言 很多人的『开源』是一个比较时髦且有情怀的词汇,不少公司也把开源当做 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 发布于 4天前 阅读 383 评论 2

浅析开源数据库MySQL架构

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

PostgreSQL 日志审计

 PostgreSQL 日志审计 摘要 审计是指记录用户的登陆退出以及登陆后在数据库里的行为操作。 Postgres 的日志(pg_log)功能十分丰富,接下来首先会介绍它的标准日志审计功能,之后还会详细介绍 postgresql审计扩展(PgAudit) ,编译安装以及使用。 设置 highgo=# show logging_collector; --是否开启日志收集,默认off logging_collector ------------------- on (1 row) highgo=# show log_destination; --日志记录类型,默认是stderr,只记录错误输出 log_destination ----------------- stderr (1 row) highgo=# show log_directory; --日志路径,默认是$PGDATA/pg_log log_directory --------------- pg_log (1 row) highgo=# show log_filename; -日志名称,默认是postgresql-%Y-%m-%d_%H%M%S.log log_filename -------------------------------- postgresql-%Y-%m-%d_%H%M%S.log (1 row) highgo=# show log_connections; --用户session登陆时是否写入日志,默认off log_connections ----------------- off (1 row) highgo=# show log_disconnections; --用户session退出时是否写入日志,默认off log_disconnections ...
yonj1e 发布于 2个月前 阅读 409

oracle中merge into的用法

Oracle9i引入了MERGE命令,你能够在一个SQL语句中对一个表同时执行inserts和updates操作. MERGE命令从一个或多个数据源中选择行来updating或inserting到一个或多个表. Oracle 10g中MERGE有如下一些改进: 1、UPDATE或INSERT子句是可选的 2、UPDATE和INSERT子句可以加WHERE子句 3、ON条件中使用常量过滤谓词来insert所有的行到目标表中,不需要连接源表和目标表 4、UPDATE子句后面可以跟DELETE子句来去除一些不需要的行   首先创建示例表: create table PRODUCTS     (     PRODUCT_ID INTEGER,     PRODUCT_NAME VARCHAR2(60),     CATEGORY VARCHAR2(60)     );     insert into PRODUCTS values (1501, 'VIVITAR 35MM', 'ELECTRNCS');     insert into PRODUCTS values (1502, 'OLYMPUS IS50', 'ELECTRNCS');     insert into PRODUCTS values (1600, 'PLAY GYM', 'TOYS');     insert into PRODUCTS values (1601, 'LAMAZE', 'TOYS');     insert into PRODUCTS values (1666, 'HARRY POTTER', 'DVD');     commit;     create table NEWPRODUCTS     (     PRODUCT_ID INTEGER,     PRODUCT_NAME VARCHA...
毕加索5481 发布于 4天前 阅读 22

快速了解人工智能结晶之语音转换文字

科技解放生产力,人工智能的应用如今是大热,那么今天就来给各位介绍一下IBM在这方面的一个小的尝试,语音转换文字。咱们来看一看相较于传统的转换,结合Watson的IBM是如何做到让识别率飙升的。
IBM Bluemix

mysql安装卡在Type and NetWorking,无法继续安装。

由于重装了电脑,需要重新安装mysql,使用的mysql-installer-community-5.7.19.0.msi安装包。安装一切正常,然后就卡在Type and NetWorking页面,无法继续安装,看不到Next按钮。 后来查找了半天,才发现是电脑设置的原因。 桌面右键/个性化/显示/修改为:较小-默认100%,即可。如下图: 设置完成后,注销电脑。然后继续安装MYSQL,就可以看到Next按钮,正常安装了。
一片云里的天空 发布于 2个月前 阅读 347

如何理解并正确使用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(1) NOT NULL DEFAULT b'1', city varc...
FEINIK 发布于 3个月前 阅读 6319 评论 24 点赞 30 打赏 2

如何编写更好的SQL查询:终极指南-第二部分

上一篇文章中,我们学习了 SQL 查询是如何执行的以及在编写 SQL 查询语句时需要注意的地方。 下面,我进一步学习查询方法以及查询优化。   基于集合和程序的方法进行查询 反向模型中隐含的事实是,建立查询时基于集合和程序的方法之间存在着不同。 查询的程序方法是一种非常类似于编程的方法:你告诉系统需要做些什么以及如何做。例如上一篇文章中的示例,通过执行一个函数然后调用另一个函数来查询数据库,或者使用包含循环、条件和用户定义函数(UDF)的逻辑方式来获得最终查询结果。你会发现通过这种方式,一直在请求一层一层中数据的子集。这种方法也经常被称为逐步或逐行查询。 另一种是基于集合的方法,只需指定需要执行的操作。使用这种方法要做的事情就是,指定你想通过查询获得的结果的条件和要求。在检索数据过程中,你不需要关注实现查询的内部机制:数据库引擎会决定最佳的执行查询的算法和逻辑。 由于 SQL 是基于集合的,所以这种方法比起程序方法更加有效,这也解释了为什么在某些情况下,SQL 可以比代码工作地更快。 基于集合的查询方法也是数据挖掘分析行业要求你必须掌握的技能!因为你需要熟练的在这两种方法之间进行切换。如果你发现自己的查询中存在程...
葡萄城控件技术团队 发布于 3周前 阅读 886 点赞 2

oracle函数大全-字符串处理函数

这些函数全都接收的是字符族类型的参数(CHR 除外)并且返回字符值.除了特别说明的之外,这些函数大部分返回VARCHAR2类型的数值.字符函数的返回类型所受的限制和基本数据库类型所受的限制是相同的,比如: VARCHAR2数值被限制为2000字符(ORACLE 8中为4000字符),而CHAR数值被限制为255字符(在ORACLE8中是2000).当在过程性语句中使用时,它们可以被赋值给VARCHAR2 或者CHAR类型的PL/SQL变量. CHR 语法: chr(x) 功能:返回在数据库字符集中与X拥有等价数值的字符。CHR和ASCII是一对反函数。经过CHR转换后的字符再经过ASCII转换又得到了原来的字符。 使用位置:过程性语句和SQL语句。 CONCAT 语法: CONCAT(string1,string2) 功能:返回string1,并且在后面连接string2。 使用位置:过程性语句和SQL语句。 INITCAP 语法:INITCAP(string) 功能:返回字符串的每个单词的第一个字母大写而单词中的其他字母小写的string。单词是用.空格或给字母数字字符进行分隔。不是字母的字符不变动。 使用位置:过程性语句和SQL语句。 LTRIM 语法:LTRIM(string1,string2) 功能:返回删除从左边算起出现在string2中的字符的string1。String2被缺省设置为单个的空格。数据库将扫描string1,从最...
毕加索5481 发布于 4天前 阅读 11

第二课 redis主从配置

Redis主从复制和集群配置 redis主从复制 概述 1、redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。 2、通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。 主从复制过程 主从复制过程:见下图   过程: 1:当一个从数据库启动时,会向主数据库发送sync命令, 2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来 3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。 4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。 注意:redis2.8之前的版本:当主从数据库同步的时候从数据库因为网络原因断开重连后会重新执行上述操作,不支持断点续传。 redis2.8之后支持断点续传。 配置 Redis主从结构支持一主多从 主节点:192.168.33.130 从节点:192.168.33.131 注意...
Caishu 发布于 4天前 阅读 10

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 发布于 2个月前 阅读 7889 评论 9 点赞 17 打赏 1

sqlalchemy 插入或者更新数据失败 UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-3: o

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-3: ordinal not in range(256)
coord 发布于 1周前 阅读 42

(转)业界难题-“跨库分页”的四种方案

转自:58沈剑 架构师之路系列文章
pxk 发布于 4天前 阅读 10

数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(一)之语法解析

![](http://www.yunai.me/images/common/wechat_mp.jpeg) > 关注**微信公众号:【芋艿的后端小屋】**有福利: > 1. RocketMQ / MyCAT / Sharding-JDBC **所有**源码分析文章列表 > 2. RocketMQ / MyCAT / Sharding-JDBC **中文注释源码 GitHub 地址** > 3. 您对于源码的疑问每条留言**都**将得到**认真**回复。**甚至不知道如何读源码也可以请教噢**。 > 4. **新的**源码解析文章**实时**收到通知。**每周更新一篇左右**。 ------- - [1. 概述](#) - [2. Lexer 词法解析器](#) - [3. Token 词法标记](#) - [3.1 DefaultKeyword 词法关键词](#) - [3.2 Literals 词法字面量标记](#) - [3.2.1 Literals.IDENTIFIER 词法关键词](#) - [3.2.2 Literals.VARIABLE 变量](#) - [3.2.3 Literals.CHARS 字符串](#) - [3.2.4 Literals.HEX 十六进制](#) - [3.2.5 Literals.INT 整数](#) - [3.2.6 Literals.FLOAT 浮点数](#) - [3.3 Symbol 词法符号标记](#) - [3.4 Assist 词法辅助标记](#) - [4. 彩蛋](#) ------- # 1. 概述 **SQL 解析引擎**,数据库中间件必备的功能和流程。Sharding-JDBC 在 `1.5.0.M1` 正式发布时,将 SQL 解析引擎从 Druid 替换成了自研的。**新引...
芋艿V 发布于 2个月前 阅读 987 评论 6 点赞 3

MySQL运行状态show status 详解

 使用show status 命令查询mysql运行的各项状态: 状态名 作用域 详细解释 Aborted_clients Global 由于客户端没有正确关闭连接导致客户端终止而中断的连接数 Aborted_connects Global 试图连接到MySQL服务器而失败的连接数 Binlog_cache_disk_use Global 使用临时二进制日志缓存但超过binlog_cache_size值并使用临时文件来保存事务中的语句的事务数量 Binlog_cache_use Global 使用临时二进制日志缓存的事务数量 Bytes_received Both 从所有客户端接收到的字节数。 Bytes_sent Both 发送给所有客户端的字节数。 com*   各种数据库操作的数量 Compression Session 客户端与服务器之间只否启用压缩协议 Connections Global 试图连接到(不管是否成功)MySQL服务器的连接数 Created_tmp_disk_tables Both 服务器执行语句时在硬盘上自动创建的临时表的数量 Created_tmp_files Global mysqld已经创建的临时文件的数量 Created_tmp_tables Both 服务器执行语句时自动创建的内存中的临时表的数量。如果Created_tmp_disk_tables较大,你可能要增加tmp_table_size值使临时 表基于内存而不基于硬盘 Delayed_errors Global 用INSERT DELAYED写的出现错误的行数(可能为duplicate key...
Amui 发布于 4天前 阅读 7

Oracle中给已存在的表增加自增主键

总能遇到很多奇葩的表,比如没有任何主键,而且数据量还老大老大的。
RippleChan 发布于 4天前 阅读 7

如何修改Oracle的dbf文件位置

网上不少教程,但要么缺少细节,要么压根行不通。
RippleChan 发布于 4天前 阅读 7

使用Redis解决“树”形数据的复杂查询

# 使用Redis解决“树”形数据的复杂查询 最近因业务需要,研究了一下树数据结果的存储及查询解决方案。 最初的想法是使用neo4j,可是在网上看了一下开源的不支持集群,感觉用的人不多。 网上也查了一些 [树形结构数据存储方案](https://www.biaodianfu.com/?s=%E6%A0%91%E5%BD%A2%E7%BB%93%E6%9E%84%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8%E6%96%B9%E6%A1%88) 但每种实现方案都有它的一定局限性。 想了一短时间后,想出了下面的方案: 一、 因为复杂的查询都由Redis来处理,所以数据库表的设计就变得非常简单:tree 表 | 字段名称 | 数据类型 | 备注说明 | | ---- | ---- | ---- | | id | int | 主键 | | parent_id | int | 上级节点ID | 二、Redis的数据存储方案: 把表的数据存储到一个Hash表中,使用表中的id值做为此hash表的key, value值为: { id: 10, parentId: 9, childIds: [11] } ### 代码实现 为了简化测试,这里只演示Redis相关的操作 1. Tree 类定义 public class Tree { private Integer id; private String name; private Integer parentId; private List childIds; } 2. 往Redis中添加测试数据: [@Test](https://my.oschina.net/azibug) public void addTest...
qiujiayu 发布于 2个月前 阅读 1509 评论 9

Oracle数据类型

1、字符类型 • CHAR:一个定长字符串,当位数不足自动用空格填充来达到其最大长度。如非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的 信息。 • VARCHAR2:目前这也是VARCHAR 的同义词。这是一个变长字符串,与CHAR 类型不同,它不会用空格填充至最大长度。VARCHAR2(12)可能包含0~ 12字节的信息。VARCHAR2最多可以存储4,000 字节的信息。 CHAR和VARCHAR2的比较 CHAR(4) “A“ 实际在数据库中存储为"A “ “ABCDE”超长报错 VARCHAR2(4) “A” 存储的还是“A” “ABCDE”超长报错 汉字:每个汉字占多少字节,要看具体的编码方式,如UTF-8(1-3字节)、 GB2312(2字节)、GBK(2字节)、GB18030(1、2、4字节)   2、数字类型 • NUMBER:该数据类型能存储精度最多达38位的数字。每个数存储在一个变长字段中,其长度在0~22字节之间。Oracle的NUMBER类型精度很高, 远远高于许多编程语言中常规的FLOAT和DOUBLE类型。 NUMBER( p,s ) p表示精度(总长度) s表示小数位置且四舍五入 NUMBER(10,3) 10是总长度,3是小数位数的长度 123.456 123.4567 :将存储为123.457 12345679.899 :精度超长了,10是总长度,3是小数位, 整数位为10-3=7位 NUMBER(10)...
小衰哥有点帅 发布于 4天前 阅读 7

Redis基础操作命令及对应的Python操作Redis方法

Redis基础操作命令及对应的Python操作Redis方法
LeeHH 发布于 4天前 阅读 6

使用 链接服务器执行SELECT、UPDATE、INSERT 或 DELETE 及其它命令

当在SQL SERVER中建立好链接服务器之后,我们可以使用下面的方法对远程的数据库进行相关的操作。 假设链接服务器的名称为 Orcl   SELECT:     指明要选择的列的过虑条件,可以传入到openquery方法中,也可以在选出之后过滤。     select * from openquery(Orcl,'select * from dept');     select * from openquery(Orcl,'select * from dept where deptno > 10');     select * from openquery(Orcl,'select * from dept') where deptno > 10;       也可以使用下面的方法来检查数据。     select * from ORCL..SCOTT.DEPT; ---表名一定要用大写,不然会出现表找不到的错误。     select * from ORCL..SCOTT.DEPT where deptno > 10;   UPDATE     指明要更新的行,过滤条件可以传入到openquery参数中,也可以在选出后添加过滤条件。     update openQuery(orcl,'select * from dept where deptno = 10') set dname = 'New Name';     update openQuery(orcl,'select * from dept') set dname = 'New Name2' where deptno = 10;       同上,也可以使用下面的方法来更新数据     update ORCL..SCOTT.DEPT set loc = 'NEW YORK'...
wangxujun59 发布于 4天前 阅读 6

OVER(PARTITION BY)函数大全

OVER(PARTITION BY), row_number, rank, dense_rank, lag, lead
苗永超 发布于 12小时前 阅读 5

MySQL数据库主从配置

mysql数据库配置主从服务器,然后可以做到读写分离,主服务器写入和修改操作,从服务器进行查询
HitoTright 发布于 13小时前 阅读 6

MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

本文章来给大家提供三种在mysql中避免重复插入记录方法,主要是讲到了ignore,Replace,ON DUPLICATE KEY UPDATE三种方法,各位同学可尝试参考。 案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用:  代码如下 复制代码 1 INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('[email protected]', '99999', '9999'); 这样当有重复记录就会忽略,执行后返回数字0 还有个应用就是复制表,避免重复记录:  代码如下 复制代码 1 INSERT IGNORE INTO `table_1` (`name`) SELECT `name` FROM `table_2`; 方案二:使用Replace 语法格式:  代码如下 复制代码 REPLACE INTO `table_name`(`col_name`, ...) VALUES (...); REPLACE INTO `table_name` (`col_name`, ...) SELECT ...; REPLACE INTO `table_name` SET `col_name`='value', ...算法说明: REPLACE的运行与INSERT很相像,但是如果旧记录与新记录有相同的值,则在新记录被插入之前,旧记录被删除,即: 尝试把新行插入到表中  当因为对于主键或唯一关键字出现重复关键字错误而造成插入失败时:  从表中删除含有重复关键字值的冲突行  再次尝试...
小田天 发布于 16小时前 阅读 2

Redis详解

### 一、Redis简介 1.关于关系型数据库和nosql数据库 关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据 库是基于特殊的结构,并将数据存储到内存的数据库。从性能上而言,nosql数据库 要优于关系型数据库,从安全性上而言关系型数据库要优于nosql数据库,所以在实 际开发中一个项目中nosql和关系型数据库会一起使用,达到性能和安全性的双保证。 ![输入图片说明](https://static.oschina.net/uploads/img/201709/28155059_6i5O.png "在这里输入图片标题") ### 二、使用java去操作Redis 1 maven配置文件 ``` 4.0.0 com.shi.redis redis_first 0.0.1-SNAPSHOT war junit junit 4.12 redis.clients jedis 2.7.0 org.apache.commons commons-pool2 2.3 ``` 2 java代码 ``` package com.shi.util; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * redisPool的工具包 * @author shiye * */ public class RedisPoolUtil { private static JedisPool jed...
小小小施爷 发布于 18小时前 阅读 2

快速了解人工智能结晶之语音转换文字

科技解放生产力,人工智能的应用如今是大热,那么今天就来给各位介绍一下IBM在这方面的一个小的尝试,语音转换文字。咱们来看一看相较于传统的转换,结合Watson的IBM是如何做到让识别率飙升的。
IBM Bluemix

mysql分库分表

依据个人经验:数据库分表首先是进行预估数据量、数据的属性、以及维度的划分。分库分表中维度的选取是极为重要一个步骤,这个主要与所设计分表业务密切相关的。 数据量是基于目前数据的业务属性在未来的时间内递量,依次来评估数据所占的是硬盘大小。举个例子:股票期货交易的ticker数据,每天的行情变化数据量是一个不小的数字。 以A股为例:假设A股票每分钟变化10次,那么每天产生的行情数据为60*4*10 = 2400条数据,假设每年有250个交易日,那么股票A产生的数据量为2400*250 =600W条数据,假设A股市场有3000只股票,每年要存的数据量为600W*3000=180亿条数据。 面对这么大的一个数据量,第一层考虑将每只股票的行情放在一张表里,但是随时时间的推移,过个两三年那么每个股票的行情表的数据量量就达到千万了,而且数据量只会越来越大,只能事先把分库分表策略写好。所以,第二层考虑的是将每只股票的行情数据再进行分表。接下来考虑记录所有分表的位置的配置表的结构------设定每张表最大可以存的数据量,以时间的开始和结束作为每张行情表的范围标记,因为历史航行多用于数据分析和策略,所以准确性也是非常重要的;通常情况下会选多路数据进行对比,所以数据来源也是分...
二师弟的大师兄 发布于 22小时前 阅读 13

DAO设计模式(进一步封装JDBC工具类)

一、DAO模式简介 DAO即Data Access Object,数据访问接口。数据访问:故名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。 DAO模式实际上是两个模式的组合,即Data Accessor (数据访问者)模式和 Active Domain Object(领域对象)模式。Data Accessor 模式实现了数据访问和业务逻辑的分离;Active Domain Object 模式实现了业务数据的对象化封装。 需要注意的是,DAO设计模式是Java EE中的设计模式,而非Java SE中的23种设计模式。   二、实现DAO模式 一个典型的DAO实现有下列几个组件: 一个DAO接口; 一个实现DAO接口的具体类;  数据传递对象(DTO):有些时候叫做值对象(VO)或领域模型(domain) 这种实现模式就是一个套路,记熟就好了。不过在这之前,如果有不明白的地方,还是要回顾一下之前几篇博文中的知识:PreparedStatement接口重构增删改查、封装JDBC工具类。好了,下面直接上代码。 三、代码实现 我们一下面的这张数据表为例: 新建Java工程文件DaoTest01,最终的工程文件结构如下: DBUtils:初步封装的JDBC工具类; db-config.properties:属性文件,方便修改配置信息; Person类就是领域模型,表示是对它(数据库表)进行增删改查。 PersonDao接口:专...
小衰哥有点帅 发布于 23小时前 阅读 6

封装JDBC工具类

通过分析可以发现有上一篇博文中有以下不足:有许多重复的代码、每次都要加载驱动、获取连接等。增删改查无非只是slq语句不一样而已。 封装工具类就是一个抽象的过程,我们可以把现在代码中非常公用的代码抽取出来,形成一个工具类。 第一步:抽象公共的代码到工具类。 第二步:为提高可以连接不同数据库的能力,将连接数据库的URL、用户名,密码等信息编写在一个属性文件(jdbc.properties)中,方便以后进行修改。  新建工程文件,结构如下 1)新建一个DBUtils工具类 package com.vae.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ResourceBundle; /** * 数据库操作工具类 * @author lamp * */ public class DBUtils { //数据库连接地址 public static String URL; //用户名 public static String USERNAME; //密码 public static String PASSWORD; //mysql的驱动类 public static String DRIVER; private static ResourceBundle rb = ResourceBundle.getBundle("com.vae.jdbc.db-c...
小衰哥有点帅 发布于 24小时前 阅读 5

mariadb 开启慢查询日志

一. 简介     开启慢查询日志,可以让mysql或者mariadb记录执行时超过指定时间的sql语句。 二. 开启慢查询日志设置 1. 在mariadb的配置文件/etc/my.cnf(centos系统是该文件,其他系统请自行寻找mysql或mariadb的配置文件)中的[mysqld]下面添加以下语句。重启数据库即可。 [mysqld] slow_query_log = 1 # 开启慢日志查询 long_query_time = 2 # 把查询时间超过2秒的定义为慢查询,也可以设置为1秒 log_output = 'TABLE' # 保存日志到mysql数据的slow_log表 #slow_query_log_file=/var/log/mariadb/slow_query_log.txt #将日志保存带本地文件中 2. 参数说明: slow_query_log:表示是否开启慢查询日志。 long_query_time:最长运行时间。表示运行超过该值的sql语句都会被定义为慢查询语句。该值默认为10秒。 log_output:表示当慢查询日志开启后,以哪种方式存放,log_output可以设置为4种值,“FILE”、“TABLE”、“FILE,TABLE”、“NONE”。     “FILE“:表示慢查询日志存放在指定的文件中。     “TABLE”:表示慢查询日志存放在mysql库中的slow_log表中,如下图所示。一般建议设置为该值。     “FILE,TABLE”:表示将满查询日志同时存放于指定的文件...
Amui 发布于 2天前 阅读 3

数据库同步软件SyncNavigator

SyncNavigator可以同步sql server 和mysql 等不同的数据库。
wangxujun59 发布于 2天前 阅读 10

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

前言:朋友咨询我说执行简单的update语句失效,症状如下: mysql> update order_info  set province_id=15  ,city_id= 1667  where order_from=10 and order_out_sn='1407261241xxxx'; ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction mysql>    QQ远程过去,开始check 1,查看数据库的隔离级别: mysql> select @@tx_isolation; +-----------------+ | @@tx_isolation  | +-----------------+ | REPEATABLE-READ | +-----------------+ 1 row in set (0.00 sec) mysql>    2,去查看先当前库的线程情况: mysql> show full processlist; +----------+-----------------+-------------------+-----------------+-------------+---------+-------------------------+-----------------------+ | Id       | User            | Host              | db              | Command     | Time    | State                   | Info                  | +----------+-----------------+-------------------+--------...
小田天 发布于 2天前 阅读 2

云数据库UDB的三重境界「上」

前言 公有云服务本质上是用户和传统 IT 基础设施的连接器,通过将传统 IT 繁重的流程、低效的工作方式、不透明的价格以及糟糕的用户体验打碎,重构出诸如云主机、云对象存储/CDN 、云数据库等产品,让用户方便地获取计算和存储能力,同时保持使用习惯不变。 经过近十年的发展,一个越来越明显的趋势是公有云服务正逐渐从基于传统 IT 基础设施的包装和组合式创新,演进为围绕公有云场景、计算和存储能力的重新进化和升级。诸如容器云和 Serverless 架构、AWS Aurora 云数据库、UCloud 安全屋等,便是这一趋势的典型代表。 由此,我们可以对公有云的发展进程做一个两阶段的概括。云计算 1.0 的关键词是连接,通过互联网和公有云来连接用户和计算存储能力;而云计算 2.0 的关键词是进化,围绕公有云场景,重新看待全社会使用计算和存储资源的问题,对现有 IT 基础设施、模式做进一步的升级和进化。 站在云计算 1.0 向 2.0 进化和升级的档口, UCloud 云数据库团队将用一系列文章来梳理过去、剖析当下、想象未来, 以此来全面展现 UCloud 云数据库服务( UCloud DataBase Service,简称 UDB )能力,分享我们过去的经验和对未来的思考。 基因 考察一个云计算服务的发展犹如观察...
UCloudTech 发布于 2天前 阅读 1

oracle 10g以上特性,wmsys.wm_concat(),多行合并一行写法

select wmsys.wm_concat(sdt.nsrsbh)nsrsbh, wmsys.wm_concat(sdn.nsrmc)nsrmc,sy.bdcdyh, wmsys.wm_concat(sdt.tdzldz) tdzldz, wmsys.wm_concat(sdt.tdsyzbh) tdsyzbh from (                    select sds.* from sw_data_sy sds                    where sds.bdcdyh in (select wgz.bdcdyh from wf_gis_zd wgz where wgz.del_flag!='1')                    ) sy                    left join sw_data_tdsy sdt on sdt.sy_id=sy.id                    left join sw_data_nsr sdn on sdn.id=sdt.nsr_id                    group by sy.bdcdyh...
随风而浮沉 发布于 3天前 阅读 3

Oracle千万级数据分页查询优化

我承认,我也写不出来,做个记录,一是可以分享,二呢,忘记还能直接复制粘贴,额。。
RippleChan 发布于 3天前 阅读 16

云MongoDB优化让LBS服务性能提升十倍

腾讯云MongoDB团队在运营中发现,原生MongoDB在LBS服务场景下有较大的性能瓶颈,经腾讯云团队专业的定位分析与优化后,云MongoDB在LBS服务的综合性能上,有10倍以上的提升。
腾讯云技术社区 发布于 3天前 阅读 5

Linux运维文档之nginx

    NGINX安装配置 1.检查并且安装依赖组件 检查安装nginx的依赖性,nginx的模块需要第三方库的支持,检查是否安装下列库:zlib、zlib-devel、openssl、openssl-devel、prce、prce-devel如果没有,则全部装上 # yum install zlib zlib-devel openssl openssl-devel prce prce-devel 2.安装pcre # wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.10.tar.gz # tar -xzvf pcre-8.10.tar.gz -C ../software/ # cd ../software/pcre-8.10/ # ./configure # make && make install 3.安装google-perftools # wget http://mirror.yongbok.net/nongnu/libunwind/libunwind-0.99-alpha.tar.gz # wget http://mirror.yongbok.net/nongnu/libunwind/libunwind-0.99-alpha.tar.gz # tar -xzvf libunwind-0.99-alpha.tar.gz -C ../software/ # tar -xzvf google-perftools-0.98.tar.gz -C ../software/ # cd ../software/libunwind-0.99-alpha/ # ./configure # make # make install # cd ../google-perftools-0.98/ # ./configure # make && make install 4.编译安装NGINX 先建nginx的启动用户 # useradd –s /sbin/nologin nginx # wget http://nginx.org/downl...
xingfei 发布于 3天前 阅读 9

mysql内连接、左连接、右连接、全连接

一、连接分类 内连接和外连接 1、内连接 (inner) join 2、外连接 left (outer) join、right (outer) join、full (outer) join   参考资料: 1、mysql连接内连接、左连接、右连接、全连接
哎小艾 发布于 3天前 阅读 5

如何通过Mysql的二进制日志恢复数据库数据

经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响。所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlog)来恢复数据。 系统环境: 操作系统:CentOS 6.5 X64  (虚拟机); WEB服务:PHP+Mysql+apache; 网站:为方便,直接在本地用蝉知系统搭建一个DEMO站点; 操作步骤: 1.开启binlog功能及基本操作; 2.往站点添加数据; 3.刷新binlog日志; 4.删除数据; 5.binlog日志内容解析; 6.恢复指定数据;   1.开启binlog功能及基本操作 要使用Mysql的binlog日志功能,首先要在Mysql的配置文件中开启该功能,操作很简单。找到Mysql的配置文件,在文件中添加一行”log_bin = mysql-bin”即可。其实在我安装的各种Mysql环境中,该功能通常都是默认开启的。   开启binlog功能后,在mysql的数据库目录下就会有诸如mysql-bin.000001、mysql-bin.000002等文件,这就是mysql的二进制日志文件。每当mysql启动或手动刷新日志后都会新建一个二进制日志文件。 首先我们mysql命令行中,用”show master logs”命令查看已有的binlog文件。   2.往站点添加数据 在网站后台文章模块里,我添加...
it1000001001 发布于 3天前 阅读 4
颖辉小居

mybatis直接使用自定义sql查询数据

dao层,增加SqlMapper.java和 对应的SQLMapper.xml package rg.contacts.mapper; import java.util.LinkedHashMap; import java.util.List; import rg.contacts.vo.SqlVo; public interface SQLMapper { List<LinkedHashMap<String, Object>> selectBysql(SqlVo sqlVo); }   <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="rg.contacts.mapper.SQLMapper"> <!-- ##### 万能SQL原生映射 -zyh ##### --> <select id="selectBysql" parameterType="rg.contacts.vo.SqlVo" resultType="java.util.LinkedHashMap"> ${sql} </select> </mapper> 其中,使用 java.util.LinkedHashMap 作为返回类型,可以保持结果集本来的字段顺序。 为了避免出现 :there no getter sql in java.lang.String 的异常,需要将sql分装到SqlVo.java package rg.contacts.vo; public class SqlVo { private String sql; public String getSql() { return sql; } public void setSql(String sql) { this.sql = sql; } } 如果不用sqlV封装的话...
颖辉小居 发布于 3天前 阅读 6

mongodb服务配置

导读 容器正在彻底改变整个软件生命周期:从最早的技术性实验和概念证明,贯穿了开发、测试、部署和支持。 介绍 想在笔记本电脑上尝试 MongoDB?只需执行一个命令,你就会有一个轻量级的、独立的沙箱。完成后可以删除你所做的所有痕迹。 想在多个环境中使用相同的程序栈application stack副本?构建你自己的容器镜像,让你的开发、测试、运维和支持团队使用相同的环境克隆。 容器正在彻底改变整个软件生命周期:从最早的技术性实验和概念证明,贯穿了开发、测试、部署和支持。 编排工具用来管理如何创建、升级多个容器,并使之高可用。编排还控制容器如何连接,以从多个微服务容器构建复杂的应用程序。 丰富的功能、简单的工具和强大的 API 使容器和编排功能成为 DevOps 团队的首选,将其集成到连续集成(CI) 和连续交付 (CD) 的工作流程中。 这篇文章探讨了在容器中运行和编排 MongoDB 时遇到的额外挑战,并说明了如何克服这些挑战。 MongoDB 的注意事项 使用容器和编排运行 MongoDB 有一些额外的注意事项: MongoDB 数据库节点是有状态的。如果容器发生故障并被重新编排,数据则会丢失(能够从副本集的其他节点恢复,但这需要时间),这是不合需要的。为了解决这个问题...
问题终结者 发布于 3天前 阅读 2

MySQL存储引擎通常有哪3种?各自分别有什么特点?应用场景是哪些?

MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表。 若要修改默认引擎,可以修改配置文件中的default-storage-engine。可以通过:show variables like 'default_storage_engine';查看当前数据库到默认引擎。命令:show engines和show variables like 'have%'可以列出当前数据库所支持到引擎。其中Value显示为disabled的记录表示数据库支持此引擎,而在数据库启动时被禁用。在MySQL5.1以后,INFORMATION_SCHEMA数据库中存在一个ENGINES的表,它提供的信息与show engines;语句完全一样,可以使用下面语句来查询哪些存储引擎支持事物处理:select engine from information_chema.engines where transactions = 'yes'; 可以通过engine关键字在创建或修改数据库时指定所使用到引擎。 主要存储引擎:MyISAM、InnoDB、MEMORY和MERGE介绍: 在创建表到时候通过engine=...或type=...来指定所要使用到引擎。show table status from DBname来查看指定表到引擎。 (一)MyISAM   它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。 每个MyISAM在磁...
南半空 发布于 3天前 阅读 3

谈谈开源(一)

作者 申砾 源码面前,了无秘密 ---- 侯捷 ### 前言 很多人的『开源』是一个比较时髦且有情怀的词汇,不少公司也把开源当做 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 发布于 4天前 阅读 383 评论 2

浅析开源数据库MySQL架构

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

快速了解人工智能结晶之语音转换文字

科技解放生产力,人工智能的应用如今是大热,那么今天就来给各位介绍一下IBM在这方面的一个小的尝试,语音转换文字。咱们来看一看相较于传统的转换,结合Watson的IBM是如何做到让识别率飙升的。
IBM Bluemix

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 发布于 2个月前 阅读 7889 评论 9 点赞 17 打赏 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....
芋艿V 发布于 2个月前 阅读 1730 评论 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. 主流程 当执行...
芋艿V 发布于 3个月前 阅读 1435 评论 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(1) NOT NULL DEFAULT b'1', city varc...
FEINIK 发布于 3个月前 阅读 6319 评论 24 点赞 30 打赏 2

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

通过备份文件新建从库,将binlog跑到指定的gtid位置,可以将数据恢复到指定的时间点。
o翡翠谷o 发布于 3个月前 阅读 1861 评论 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 发布于 3个月前 阅读 1964 评论 4 点赞 4

三篇文章了解 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 发布于 4个月前 阅读 1079 评论 3 点赞 1

Mongodb高可用集群搭建

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

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

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

记一次mysql性能优化过程

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

NoSQL介绍

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

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

通过ssh远程连接linux服务器,上传Oracle11g的安装包,在无图形化界面的情况,安装Oracle服务器端。本例中linux服务器系统为CentOS6.5.
黎嘉诚 发布于 8个月前 阅读 3420 评论 27 点赞 3

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

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

MySQL应用优化

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

用Haproxy来做PostgreSQL的负载均衡

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,可以用来做web或者数据库的负载均衡,在一定范围内读写能力与添加的服务器数量成正比。haproxy用来做mysql负载均衡的文章很多,这里简单介绍下配合postgresql的使用。 一、环境 Centos 6.7 PostgreSQL 9.5.2 Haproxy 1.6 虚机服务列表 haproxy ip 192.168.226.148 (pg agent) datanode1 ip 192.168.226.133 (pg server) datanode2 ip 192.168.226.143 (pg server) 二、软件安装 #yum install gcc gcc-c++ make #groupadd haproxy #useradd haproxy –g haproxy -s /sbin/nologin #wget http://www.haproxy.org/download/1.6/src/haproxy-1.6.4.tar.gz #cd haproxy-1.6.4 #make TARGET=linux2628 PREFIX=/usr/local/haproxy #make install PREFIX=/usr/local/haproxy #mkdir -p /etc/haproxy/ #cp examples/haproxy.init /etc/init.d/haproxy #chmod +x /etc/init.d/haproxy #ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/ 三、软件配置 1.主要配置文件haproxy.cfg [[email protected] ~]# vi /etc/haproxy/haproxy.cfg global log 127.0.0.1 local0 info maxconn 4096 user haproxy group haproxy dae...
kenyon_君羊 发布于 1年前 阅读 5170 评论 25 点赞 10
顶部