开源中国

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

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

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

图数据库与关系数据库的实验对比——意大利商会 InfoCamere 案例

InfoCamere是附属于意大利商会的IT公司,主要设计和开发最新和创新的IT解决方案和服务,它通过一个公众也可以访问的网络连接商会及其数据库。借助InfoCamere,意大利和国外的企业,公共机构,行业协会,专业团体和简单的公民可以轻松获取在意大利注册和运营的所有业务的最新官方信息和经济数据。 意大利商会通过遍布全国的300多个分支机构来服务和促进意大利企业的公共机构信息交流。InfoCamere 是商会的服务系统,帮助他们实现商业利益。在实施意大利数字化议程方面发挥了关键作用,涉及到国家生产系统的数字化转型过程,特别是支持中小企业的数字化。
GermanWifi 发布于 1周前 阅读 80

金融级数据库的未来发展方向

2017年9月,Gartner与巨杉数据库联合发布了《金融级数据库的未来发展方向》报告。报告为业界阐述了当前需求下金融级数据库的技术革新以及未来发展方向的趋势。
巨杉数据库 发布于 1周前 阅读 164

ipcs、ipcrm、sysresv、kernel.shmmax

ipcs、ipcrm、sysresv、kernel.shmmax
小麦苗 发布于 1周前 阅读 32

MySql Binlog事件介绍篇

前言 上一篇文件MySql Binlog初识,对Binlog的参数,格式以及个别事件做了详细介绍,但是Binlog事件数量比较多,上篇文章中没有对所有事件进行介绍;本文将对Binlog的事件进行简单说明,必要的时候通过SQL触发相关的事件,以下基于Mysql5.5,5.0以前的版本不考虑。 Binlog事件 1.UNKNOWN_EVENT 此事件从不会被触发,也不会被写入binlog中;发生在当读取binlog时,不能被识别其他任何事件,那被视为UNKNOWN_EVENT。 2.START_EVENT_V3 每个binlog文件开始的时候写入的事件,此事件被用在MySQL3.23 – 4.1,MYSQL5.0以后已经被FORMAT_DESCRIPTION_EVENT取代。 3.QUERY_EVENT 执行更新语句时会生成此事件,包括:create,insert,update,delete; 手动触发: insert into btest values(1,100,'zhaohui'); | bin-log.000001 | 432 | Query | 1 | 536 | use `test`; insert into btest values(1,100,'zhaohui') | | bin-log.000001 | 536 | Xid | 1 | 563 | COMM...
ksfzhaohui 发布于 2周前 阅读 114

Mysql系列:高可用(HA)

随着项目的发展,为了提高程序的性能,数据库层面或多或少的会用到HA、读写分离、集群等功能,在选型时可以考虑使用现成的云服务,或者一些高可用软件,亦或是利用一些开源软件实现上述功能。此次将针对上述功能分篇幅进行整理,内容涉及HA、读写分离、集群,以期使用时达到快速部署之效果。
晓叹星沉 发布于 2周前 阅读 220 点赞 3

MySql Binlog初识

Mysql日志 MySQL 的日志包括错误日志(ErrorLog),更新日志(Update Log),二进制日志(Binlog),查询日志(Query Log),慢查询日志(Slow Query Log)等; 更新日志是老版本的MySQL 才有的,目前已经被二进制日志替代;在默认情况下,系统仅仅打开错误日志,关闭了其他所有日志,以达到尽可能减少IO损耗提高系统, 性能的目的,但是在一般稍微重要一点的实际应用场景中,都至少需要打开二进制日志,因为这是MySQL很多存储引擎进行增量备份的基础,也是MySQL实现复制的基本条件; 下面介绍的就是二进制日志–Binlog Binlog开启 默认Binlog是关闭的,首先要开启才能记录日志; 1.查看是否开启log_bin mysql> show variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | OFF | +---------------+-------+ 2.开启log_bin 在my.ini中添加配置: log_bin=D:/mysql/bin-log.log 3.重启mysql,再次查看 mysql> show variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | ON | +---------------+-------+ 4.查看Binlog ...
ksfzhaohui 发布于 2周前 阅读 383 点赞 1

读懂MySQL执行计划

无摘要
划不出的界限 发布于 3周前 阅读 1241 评论 4 点赞 4

Otter入门简介

前言:最近接了一个新的需求,需要在伦敦机房做一个数据同步方案,同步到北京。因为之前搭建过公网之间的同步,一是延迟比较大,另一个是因为同步经常会断。临时解决方案就是搭建一个多源复制,隔断时间全量一次数据到北京机房,但是这个传输时间也是个头疼的问题   一、Otter简介 1.1  otter是什么? Ottter是由阿里开源的一个数据同步产品,它的最初的目的是为了解决跨国异地机房双A架构,两边可写的场景,开发时间从2011年7月份一直持续到现在,目前阿里巴巴B2B内部的本地/异地机房的同步需求基本全上了Otter。 Otter基于数据库增量日志解析,支持mysql/oracle数据库进行同步,在最新的v4.2.13已经支持mysql5.7以及阿里云提供的RDS数据库(使用RDS童鞋的福音) 1.2  otter工作原理 db : 数据源以及需要同步到的库 Canal : 用户获取数据库增量日志 manager : 配置同步规则设置数据源同步源等 zookeeper : 协调node进行协调工作 node : 负责任务处理处理接受到的部分同步工作 1.3  otter的特性 使用纯JAVA开发,占时资源比较高 基于Canal获取数据库增量日志,Canal是阿里爸爸另外一个开源产品 使用manager(web管理)+node(工作节点),manager负责配置监控,node负责处理任务 基于...
IT--小哥 发布于 3周前 阅读 721

从MongoDB IPO谈谈企业级数据库市场

10月20日,NoSQL数据库MongoDB在NASDAQ正式 IPO,当日收于 32.07 美元。截至10月27日,MongoDB报收30.89美元,公司市值保持在15亿美元左右,可以说是分布式数据库的“第一股”。   作为同样数据库行业的一员,也是分布式数据库产品厂商,巨杉一直关注MongoDB的发展。基于十多年的行业经验以及我们公司6年以来的一些实际经验,我也来谈谈我们对于MongoDB IPO的一些看法。   数据库市场潜力仍然巨大 MongoDB成功IPO,并且市值维持在较高水平。这一消息对业界各个数据库厂商都是一剂强心针。此前,数据库商业化市场一直被Oracle这样的老牌产品占据主导,一直没有分布式数据库产品能向资本市场展示这个新的市场的真正规模和影响力。    根据Gartner 2017年对于企业级软件市场规模的预测报告(Gartner Enterprise Software Forecast 2017Q1),数据库全球市场规模在2017年将突破370亿美元,并预计在2021年会突破500亿美元的规模。   2017全球数据库市场规模预测   对于中国市场,同样根据报告显示,2017年中国数据库市场预计规模将超过15亿美元。   2017 中国数据库市场规模预测   如此大的市场,加上MongoDB成功IPO,可以是说资本界和软件业界对于数据库整体...
巨杉数据库 发布于 3周前 阅读 197

PostgreSQL数据库日常学习笔记16-触发器函数

PostgreSQL数据库日常学习笔记16-触发器
白豆腐徐长卿 发布于 3周前 阅读 142

怎么用Kafka 实现数据中心到数据中心的复制?

每个公司都需要为所有重要系统制定灾难恢复计划。从单个进程到最大的分布式体系结构的小单元都是这样。特别是对于数据库,这通常涉及容错,冗余,定期备份和应急计划的混合。数据库越大,制定好策略就越困难。 这篇文章概述了ArangoDB向多数据中心支持的第一个进化步骤--数据中心到数据中心的异步复制。
GermanWifi 发布于 4周前 阅读 433 评论 4

MongoDB 入门极简教程

本教程学习时间为 1 小时。 本教程面向的受众是那些想通过简单易学的步骤来学习 MongoDB 数据库的学者。本教程能帮助你更好地理解 MongoDB 的相关概念。学完本教程后,你将达到中级水平,继而能够自学更高阶段的内容。
kangvcar 发布于 4周前 阅读 954 评论 5 点赞 9

[勾勒一个自己的搜索引擎]ES3索引映射

# 概述 搜索引擎应该同时支持精确搜索与全文搜索两种模式。精确搜索是指当文档指定字段的内容与关键字完全相等时,才会将文档作为结果返回;全文搜索的意思是只要文档中的内容包含关键字或近似于关键字的含义,这些文档都会按照与关键字的相关程度排序进行输出。 ES的全文搜索和精确搜索都是通过对索引设置不同的映射和分析来完成的,当我们创建一个索引时,同时应该制定这个索引相关的映射字段属性与分析方法。如果同一个索引的映射与分析的方式不同,执行搜索的结果可能大相径庭。 # 说明 ## 请求说明 本系列文章对ES的REST请求都使用如下例的格式进行描述: PUT http://ubuntu:9200/page { "mappings":{ "books": { "properties": { "name":{ "type":"string" } } } } } PUT代表请求方法,http://ubuntu:9200/page是请求地址,``之后的内容代表HTTP请求体。对于带有请求体的请求,请求头信息中`Content-Type`属性的值都是`application/json`,另外编码方式统一采用UTF-8。 ## 响应说明 本系列文章对REST响应信息都是用如下例的格式进行描述: 200 ok {"page":{"aliases":{}, "mappings":{"books":{"properties":{"name":{"type": "text"…} ``后是本次请求的状态码 如2...
为为02 发布于 1个月前 阅读 137

elasticsearch5.4的mapping使用

在ES中,mapping相当于表结构,主要功能是告诉ES的每一个filed的数据类型,同时也告诉ES如何索引数据以及数据是否能被搜索到。   导入数据前要定义mapping表   ES有一个特点:可以不提前设置index的mapping,直接可以导入数据,然后ES会自动生成mapping表,指明每个filed的类型以及索引方式,这个特点对于初学者非常友好,可以直接将数据导入,然后快速检索,但是自动生成的类型未必使我们希望使用的类型,所以不设定mapping表就导入数据是一个非常不推荐的做法,很有可能导致重新导入数据。   mapping的修改   mapping表一旦创建,只能追加,不能修改,如果要修改,需要删掉整个文档,所以新建index和type的时候,需要清晰的知道表结构。   ES不同版本下的mapping设置有区别   ES的版本更新较快,不同的版本的特性有一定的差异,对于elasticsearch5.4,没有String这样的数据类型,取而代之的是text和keyword,所以在用mapping的时候,最好阅读最新的官方文档 https://www.elastic.co/guide。   mapping表的创建方式   首先,强烈不推荐不设定mapping表,让ES自动识别。   可以通过curl或者kibana或者java API等各种方式导入mapping表(以在kibana下为例...
枫林飘影 发布于 1个月前 阅读 93

MySQL Schema与数据类型的优化

选择优化的数据类型: 1、 更小的通常更好: 一般情况下,应该尽量使用可以正确存储数据的最小数据类型。更小的数据类型通常更快,因为他们占用更少的磁盘,内存和cpu缓存,并且处理时需要的cpu周期也更少。 2、 简单就好 简单的数据类型操作通常需要更少的cpu周期。例如,整型比字符操作代价更低,因为字符集和校对规则(排序规则)使字符比较比整型更加复杂。注:应使用mysql内建的类型存储时间和日期,而不是字符串。 3、 尽量避免null 如果查询中包含可为null的列,对Mysql来说更难优化,因为可为null的列使得索引、索引统计和值都比较复杂。可为null的列会使用更多的存储空间,在mysql中也需要特别处理。当可为null的列被索引时,每个索引记录需要一个额外的字节。 通常把可为null的列改为not null带来的性能提升比较小。在调优时,没有必要首先在现有的shema中查找并修改掉这个情况,除非确定这会导致问题。但是如果列上建索引,就应尽量避免设计成可为null的列。   整数类型: 整数类型有TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT。分别使用8,16,24,32,64位存储空间。他们可以存储的值的范围从-2的(n-1)次方到2的(n-1)次方-1,其中n是存储空间的位数。 ...
扬花落尽丶 发布于 1个月前 阅读 580 评论 2 点赞 4

对MySQL复制中断的处理

前言 ———— 在复制中,有时会因为复制报错,而中断复制。通常是因为一个SQL语句在主库执行时是正常的,但同步到从库时,因为各种原因,找不到对应的数据,造成执行SQL失败,报出复制错误。下面主要写了几个常见的错误。   复制中断的情况和处理 ——————————————— 复制中断的情况: 1062错误:在写入数据使,从库已存在了。多出现自增长ID已存在。 1032错误:从库出现少数据,update、delete时,找不到相应的记录。 其他:DDL操作时报错 对这些情况的处理: 遇到该问题,要想到要怎样满足复制,而不是跳过该事务;不建议跳过错误,遇到错误应该修正过来,再连接主库复制,否则从库的数据会越来越不一致! 手工修复操作有些慢,可以针对1062和1032错误,写一个自动化监控改正脚本。 注意:若经常数据不一致,选择业务低峰期,检验一次数据(pt-table-checksum),查看是否数据一致,若检查出太多的数据不一致,该从库就不可再用了,再创建一个从库!   常见的复制错误 ——————————— 【错误码-1062】 处理操作: 处理这种情况,需要和业务协商,或在公司内形成一个规定,遇到这种情况要怎样做(在从库将这条重复数据删除还是补充到主库)。 通常...
star_glm 发布于 1个月前 阅读 188 评论 2 点赞 1

MongoDB Aggregation Match

MongoDB聚合查询之match
AlioveYu 发布于 1个月前 阅读 235 点赞 1

MySQL5.7主主复制配置

MySQL5.7主主复制配置 主机1IP:172.16.1.206 主机2IP:172.16.1.226 一、首先安装MySQL 5.7 1、卸载两台主机系统中已经有的mysql相关软件包 rpm -qa | grep -i mysql yum remove mysql(相关软件包名称) -y 2、分别在两台主机系统中执行以下命令 在http://dev.mysql.com/downloads/repo/yum/站点下载mysql57-community-release-el6-8.noarch rpm -ivh mysql57-community-release-el6-8.noarch.rpm  yum -y install mysql.x86_64 mysql-server.x86_64 mysql-devel.x86_64 3、分别在两台主机上执行以下语句,初始化 mkdir /home/mysql mysqld --initialize-insecure --user=mysql --datadir=/home/mysql 备注:     如果你用 --initialize 初始化data目录,请用如下命令登录服务     mysql -u root -p     执行上面命令,会提示输入密码,输入随机生成的密码即可。     如果你不知道这个随机密码,请查看error log文件查找这个随机密码。              如果用 --initialize-insecure 初始化data目录,请用root用登录,并不需要输入密码就可以登录,如下命令:     mysql -u root --skip-password      Mysql5.7忘记root密码及mysql5.7修改root密...
MrMyj 发布于 1个月前 阅读 514 评论 2 点赞 3

MySQL5.7.19 解压版安装详细教程(附送纯净破解中文版SQLYog)

MySQL5.7.19 解压版安装详细教程(附送纯净破解中文版SQLYog) Mysql5.7.19版本是今年新推出的版本,最近几个版本的MySQL都不再是安装版,都是解压版了,这就给同志们带来了很多麻烦,挖了很多坑,单单从用户使用的易用性来讲,这么做着实有点反人类啊! 笔者也是反反复复的折腾了快一个小时才成功搞定,过程中也网搜了很多的教程,可惜很多也都是,索性自己记录一下,免得下次再重复入坑。 另: MySQL的图形化工具有很多种,笔者自我感觉SQLYog比较好用,纯属个人感觉,不喜勿喷!附送破解版SQLYog。   笔者使用环境: win10 x64   1. 下载安装包 访问MySQL官网https://www.mysql.com/ 按照如下顺序下载:   2. 解压到自定义目录 解压后如下:   3. 编辑my.ini  如上图所示解压后并没有my.ini文件,需要自己编写。 内容如下,直接新建my.ini文档后把下面内容复制保存即可: [Client] #设置3306端口 port = 3306   [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=%MYSQL_HOME% # 设置mysql数据库的数据的存放目录 datadir=%MYSQL_HOME%\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 char...
寂地时湮灭 发布于 2个月前 阅读 1413 评论 14 点赞 1

谈谈开源(一)

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

数据库

数据库基础操作1
王尼尼 发布于 4小时前 阅读 3

一个文件夹复制到多个文件里面

@echo off setlocal enabledelayedexpansion for /l %%i in (1 1 4) do ( set aa=D:\L00 set  mm=!aa!%%i xcopy /s /e /h  C:\565656 !mm! ) pause   
oo_o 发布于 5小时前 阅读 2

MySQL分组查询

  GROUP BY字句语法 select column,group_function(column) from table [where condition] [group by group_by_expression] [order by column] 特点: 1、和分组函数一同查询的字段必须是group by后出现的字段 2、筛选分为两类:分组前筛选和分组后筛选          针对的表             位置       连接的关键字 分组前筛选     原始表                 group by前    where      分组后筛选    group by后的结果集       group by后     having 一般来讲,能用分组前筛选的,尽量使用分组前筛选,提高效率 3、分组可以按单个字段也可以按多个字段 4、可以搭配着排序使用   #引入:查询每个部门的员工个数 SELECT COUNT(*) FROM employees WHERE department_id=90; #1.简单的分组 #案例1:查询每个工种的员工平均工资 SELECT AVG(salary),job_id FROM employees GROUP BY job_id; #案例2:查询每个位置的部门个数 SELECT COUNT(*),location_id FROM departments GROUP BY location_id; #2、可以实现分组前的筛选 #案例1:查询邮箱中包含a字符的 每个部门的最高工资 SELECT MAX(salary),departm...
小衰哥有点帅 发布于 14小时前 阅读 1

干货!Oracle解密“零丢失”的数据保护

导读 Oracle(甲骨文)零数据丢失恢复一体机是一个突破性的数据保护解决方案,通过紧密集成 Oracle数据库直接满足这些需求。该设备可消除数据丢失风险并大幅降低数据保护对生产服务器带来的开销。此外,它还可以通过扩展保护数以千计的数据库、确保端到端的数据验证并实现全生命周期保护,包括磁盘备份、磁带 备份和远程复制。。 据统计,到2020年绝大多数企业的数据量预计将增长50倍,如此庞大的数据集将导致极高的数据丢失风险。目前用于保护业务数据的解决方案无法满足关键任务企业数据库的需求。这些解决方案每次执行恢复时有可能会丢失多达一天的业务数据,在备份期间还会给生产服务器带来沉重负担,并且无法确保数据库级别的可恢复性,也无法通过扩展满足不断增长的数据库需求。从根本上说,它们将数据库作为一组分散的文件来复制,而不是具备特定完整性和性能需求的事务系统。 Oracle(甲骨文)零数据丢失恢复一体机是一个突破性的数据保护解决方案,通过紧密集成 Oracle数据库直接满足这些需求。该设备可消除数据丢失风险并大幅降低数据保护对生产服务器带来的开销。此外,它还可以通过扩展保护数以千计的数据库、确保端到端的数据验证并实现全生命周期保护,包括磁...
问题终结者 发布于 5小时前 阅读 1

千万级MySQL大表要怎么优化?

第一优化你的sql和索引; 第二加缓存,memcached,redis; 第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护; 第四如果以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这个,对你的应用是透明的,无需更改代码,但是sql语句是需要针对分区表做优化的,sql条件中要带上分区条件的列,从而使查询定位到少量的分区上,否则就会扫描全部分区,另外分区表还有一些坑,在这里就不多说了; 第五如果以上都做了,那就先做垂直拆分,其实就是根据你模块的耦合度,将一个大的系统分为多个小的系统,也就是分布式系统; 第六才是水平切分,针对数据量大的表,这一步最麻烦,最能考验技术水平,要选择一个合理的sharding key,为了有好的查询效率,表结构也要改动,做一定的冗余,应用也要改,sql中尽量带sharding key,将数据定位到限定的表上去查,而不是扫描全部的表; 有人又会问:如何设计或优化千万级别的大表?对于一个存储设计,必须考虑业务特点,收集信息如下: 1.数据的容量:1-3年内会大概多少条数据,每条数据大概多少字节; 2.数据项:是...
MS集边缘化 发布于 12小时前 阅读 66

MySql Binlog初识

Mysql日志 MySQL 的日志包括错误日志(ErrorLog),更新日志(Update Log),二进制日志(Binlog),查询日志(Query Log),慢查询日志(Slow Query Log)等; 更新日志是老版本的MySQL 才有的,目前已经被二进制日志替代;在默认情况下,系统仅仅打开错误日志,关闭了其他所有日志,以达到尽可能减少IO损耗提高系统, 性能的目的,但是在一般稍微重要一点的实际应用场景中,都至少需要打开二进制日志,因为这是MySQL很多存储引擎进行增量备份的基础,也是MySQL实现复制的基本条件; 下面介绍的就是二进制日志–Binlog Binlog开启 默认Binlog是关闭的,首先要开启才能记录日志; 1.查看是否开启log_bin mysql> show variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | OFF | +---------------+-------+ 2.开启log_bin 在my.ini中添加配置: log_bin=D:/mysql/bin-log.log 3.重启mysql,再次查看 mysql> show variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | ON | +---------------+-------+ 4.查看Binlog ...
ksfzhaohui 发布于 2周前 阅读 383 点赞 1

读懂MySQL执行计划

无摘要
划不出的界限 发布于 3周前 阅读 1241 评论 4 点赞 4

Mysql系列:高可用(HA)

随着项目的发展,为了提高程序的性能,数据库层面或多或少的会用到HA、读写分离、集群等功能,在选型时可以考虑使用现成的云服务,或者一些高可用软件,亦或是利用一些开源软件实现上述功能。此次将针对上述功能分篇幅进行整理,内容涉及HA、读写分离、集群,以期使用时达到快速部署之效果。
晓叹星沉 发布于 2周前 阅读 220 点赞 3

高性能 Java 持久化的 14 个技巧

一个高性能的数据访问层需要大量关于数据库内部、JDBC、JPA、Hibernate的知识,本文总结了一些可用来优化企业应用程序的重要的技术。
编辑部的故事 发布于 2周前 阅读 3508 评论 4 点赞 3

MySQL的基础操作

### 一 DDL 数据库定义语言 ![2](https://static.oschina.net/uploads/img/201711/24142211_ndre.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201711/24142327_Dr7t.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201711/24142348_QYNd.png "在这里输入图片标题") ![5](https://static.oschina.net/uploads/img/201711/24142359_EO4L.png "在这里输入图片标题") ![6](https://static.oschina.net/uploads/img/201711/24142414_cmnX.png "在这里输入图片标题") ![7](https://static.oschina.net/uploads/img/201711/24142424_6Sch.png "在这里输入图片标题") ![8](https://static.oschina.net/uploads/img/201711/24142435_rJbT.png "在这里输入图片标题") ![9](https://static.oschina.net/uploads/img/201711/24142446_QBmE.png "在这里输入图片标题") ![10](https://static.oschina.net/uploads/img/201711/24142502_7jws.png "在这里输入图片标题") ![11](https://static.oschina.net/uploads/img/201711/24142517_XgxF.png "在这里输入图片标题") ![12](https://static.oschina.net/upl...
小小小施爷 发布于 14小时前 阅读 6

MySql Binlog事件介绍篇

前言 上一篇文件MySql Binlog初识,对Binlog的参数,格式以及个别事件做了详细介绍,但是Binlog事件数量比较多,上篇文章中没有对所有事件进行介绍;本文将对Binlog的事件进行简单说明,必要的时候通过SQL触发相关的事件,以下基于Mysql5.5,5.0以前的版本不考虑。 Binlog事件 1.UNKNOWN_EVENT 此事件从不会被触发,也不会被写入binlog中;发生在当读取binlog时,不能被识别其他任何事件,那被视为UNKNOWN_EVENT。 2.START_EVENT_V3 每个binlog文件开始的时候写入的事件,此事件被用在MySQL3.23 – 4.1,MYSQL5.0以后已经被FORMAT_DESCRIPTION_EVENT取代。 3.QUERY_EVENT 执行更新语句时会生成此事件,包括:create,insert,update,delete; 手动触发: insert into btest values(1,100,'zhaohui'); | bin-log.000001 | 432 | Query | 1 | 536 | use `test`; insert into btest values(1,100,'zhaohui') | | bin-log.000001 | 536 | Xid | 1 | 563 | COMM...
ksfzhaohui 发布于 2周前 阅读 114

MySQL5.7.19 解压版安装详细教程(附送纯净破解中文版SQLYog)

MySQL5.7.19 解压版安装详细教程(附送纯净破解中文版SQLYog) Mysql5.7.19版本是今年新推出的版本,最近几个版本的MySQL都不再是安装版,都是解压版了,这就给同志们带来了很多麻烦,挖了很多坑,单单从用户使用的易用性来讲,这么做着实有点反人类啊! 笔者也是反反复复的折腾了快一个小时才成功搞定,过程中也网搜了很多的教程,可惜很多也都是,索性自己记录一下,免得下次再重复入坑。 另: MySQL的图形化工具有很多种,笔者自我感觉SQLYog比较好用,纯属个人感觉,不喜勿喷!附送破解版SQLYog。   笔者使用环境: win10 x64   1. 下载安装包 访问MySQL官网https://www.mysql.com/ 按照如下顺序下载:   2. 解压到自定义目录 解压后如下:   3. 编辑my.ini  如上图所示解压后并没有my.ini文件,需要自己编写。 内容如下,直接新建my.ini文档后把下面内容复制保存即可: [Client] #设置3306端口 port = 3306   [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=%MYSQL_HOME% # 设置mysql数据库的数据的存放目录 datadir=%MYSQL_HOME%\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 char...
寂地时湮灭 发布于 2个月前 阅读 1413 评论 14 点赞 1

金融级数据库的未来发展方向

2017年9月,Gartner与巨杉数据库联合发布了《金融级数据库的未来发展方向》报告。报告为业界阐述了当前需求下金融级数据库的技术革新以及未来发展方向的趋势。
巨杉数据库 发布于 1周前 阅读 164

HBASE安装

HBASE
傅里叶级数 发布于 1个月前 阅读 9

浅析开源数据库MySQL架构

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

【深度】分布式数据库数据一致性原理说明与实现

前言 分布式数据库的数据一致性管理是其最重要的内核技术之一,也是保证分布式数据库满足数据库最基本的 ACID特性中的 “一致性”(Consistency)的保障。在分布式技术发展下,数据一致性的解决方法和技术也在不断的演进,本文就以作者实际研发的分布式数据库作为案例,介绍分布式数据库数据一致性的原理以及实际实现。 1. 数据一致性 1.1 数据一致性是什么 大部份使用传统关系型数据库的DBA在看到“数据一致性”时,第一反应可能都是数据在跨表事务中的数据一致性场景。但是本文介绍的“数据一致性”,指的是“数据在多份副本中存储时,如何保障数据的一致性”场景。 由于在大数据领域,数据的安全不再由硬件来保证,而是通过软件手段,通过同时将数据写入到多个副本中,来确保数据的安全。数据库在同时向多个副本写入记录时,如何确保每个副本数据一致,称为“数据一致性”。 1.2 关系型数据库如何保障数据一致性 传统的关系型数据库对于运行环境--硬件要求都比较高,例如Oracle会建议用户使用小型机+共享存储作为数据库的运行环境,DB2 DPF也同样建议用户采用更好的服务器+高端存储来搭建数据库的运行环境。所以在数据存储安全的技术要求下,传统关系型数据库更多...
巨杉数据库 发布于 1个月前 阅读 736

扒一扒那些年我们遇到的奇葩代码

### 前言 **本文首发于公众号【一名打字员】** 在工作中,我们通常会遇到传说中的“祖传”代码,有些是否让我们感到哭笑不得,今天本猿整理一下自己以及网络上出现过的奇葩代码。来源于互联网的均会标明出处。 ### TOP1 当仁不让的当然是传说中的“睡排序”,/手动捂脸 ```c++ #include #include #include #include int main(int argc, char* argv[]) { std::vector threads; for (int i = 1; i < argc; ++i) { threads.emplace_back([i, &argv]() { int arg = std::stoi(argv[i]); std::this_thread::sleep_for(std::chrono::seconds(arg)); std::cout << argv[i] << std::endl; }); } for (auto& thread : threads) { thread.join(); } } ``` 当然他输出的结果是 ``` ./a.out 8 15 14 9 17 20 16 24 6 24 21 23 19 23 19 6 8 9 14 15 16 17 19 19 20 21 23 23 24 24 ``` 本猿觉得,其实除了名称奇葩以外,其它还是很正常的。(逃 from [WIKI][1] ### TOP2 拼写容错,在知乎上看到的,23333... ```c++ #define ture true #define flase false #define viod void ``` from [B乎][2] ### TOP3 变量命名是个体力活,常年混迹GITHUB(复制粘贴代码)的本猿,看过太多各种各样的...
拯救世界的小安安 发布于 4天前 阅读 14

MongoDB 入门极简教程

本教程学习时间为 1 小时。 本教程面向的受众是那些想通过简单易学的步骤来学习 MongoDB 数据库的学者。本教程能帮助你更好地理解 MongoDB 的相关概念。学完本教程后,你将达到中级水平,继而能够自学更高阶段的内容。
kangvcar 发布于 4周前 阅读 954 评论 5 点赞 9

TokuDB性能测试报告

TokuDB性能测试报告
mickelfeng 发布于 4天前 阅读 82

最常用的四种大数据分析方法

本文主要讲述数据挖掘分析领域中,最常用的四种数据分析方法:描述型分析、诊断型分析、预测型分析和指令型分析。 当刚涉足数据挖掘分析领域的分析师被问及,数据挖掘分析人员最重要的能力是什么时,他们给出了五花八门的答案。 其实我想告诉他们的是,数据挖掘分析领域最重要的能力是:能够将数据转化为非专业人士也能够清楚理解的有意义的见解。 使用一些工具来帮助大家更好的理解数据分析在挖掘数据价值方面的重要性,是十分有必要的。其中的一个工具,叫做四维分析法。 简单地来说,分析可被划分为4种关键方法。 下面会详细介绍这四种方法。   1. 描述型分析:发生了什么? 这是最常见的分析方法。在业务中,这种方法向数据分析师提供了重要指标和业务的衡量方法。 例如,每月的营收和损失账单。数据分析师可以通过这些账单,获取大量的客户数据。了解客户的地理信息,就是“描述型分析”方法之一。利用可视化工具,能够有效的增强描述型分析所提供的信息。   2. 诊断型分析:为什么会发生? 描述性数据分析的下一步就是诊断型数据分析。通过评估描述型数据,诊断分析工具能够让数据分析师深入地分析数据,钻取到数据的核心。 良好设计的BI dashboard能够整合:按照...
葡萄城控件技术团队 发布于 2个月前 阅读 28

TokuDB性能测试报告

TokuDB性能测试报告
mickelfeng 发布于 4天前 阅读 82

高性能 Java 持久化的 14 个技巧

一个高性能的数据访问层需要大量关于数据库内部、JDBC、JPA、Hibernate的知识,本文总结了一些可用来优化企业应用程序的重要的技术。
编辑部的故事 发布于 2周前 阅读 3508 评论 4 点赞 3

读懂MySQL执行计划

无摘要
划不出的界限 发布于 3周前 阅读 1241 评论 4 点赞 4

MySQL事务隔离级别

本文首发于个人微信公众号《andyqian》,期待你的关注! 前言 我们在上一篇《MySQL之初识事务》中介绍了事务的基本概念,以及查看当前事务属性。如何手动开启,提交,回滚事务。其实事务中还有一个非常重要的概念----事务隔离级别。那我们今天就一起来聊聊MySQL事务隔离级别! 什么是隔离级别? 官方文档中这么描述: The isolation level is the setting that fine-tunes the balance between performance and reliability, consistency, and reproducibility of results when multiple transactions are making changes and performing queries at the same time 隔离级别是在多个事务同时进行更改和执行查询时,对结果的性能和可靠性,一致性和可重复性之间的平衡进行微调的设置。 也就是说,数据一致性与性能和可靠性成反比,我们根据业务需求,来选择合适的隔离级别。 所有脱离业务需求,来选择隔离级别的都是耍流氓!!! 隔离级别 在MySQL InnoDB引擎中提供了SQL标准中定义的四个隔离级别,分别是: READ UNCOMMITTED(未提交读)。 READ COMMITTED(提交读)。 REPEATABLE READ(可重复读)。 SERIALIZABLE(可串行化)。 下面分别介绍这四类隔离级别的作用,以及场景。 READ...
划不出的界限 发布于 3天前 阅读 23

postgresql登录后常见命令

postgresql登陆完成。可以列出很多命令,下面介绍一些常见命令。输入\?可以看到 ``` test=# \? 一般性 \copyright 显示PostgreSQL的使用和发行许可条款 \crosstabview [COLUMNS] 执行查询并且以交叉表显示结果 \errverbose 以最冗长的形式显示最近的错误消息 \g [文件] or; 执行查询 (并把结果写入文件或 |管道) \gexec 执行策略,然后执行其结果中的每个值 \gset [PREFIX] 执行查询并把结果存到psql变量中 \gx [FILE] as \g, but forces expanded output mode \q 退出 psql \watch [SEC] 每隔SEC秒执行一次查询 帮助 \? [commands] 显示反斜线命令的帮助 \? options 显示 psql 命令行选项的帮助 \? variables 显示特殊变量的帮助 \h [名称] SQL命令语法上的说明,用*显示全部命令的语法说明 查询缓存区 \e [FILE] [LINE] 使用外部编辑器编辑查询缓存区(或文件) \ef [FUNCNAME [LINE]] 使用外部编辑器编辑函数定义 \ev [VIEWNAME [LINE]] 用外部编辑器编辑视图定义 \p 显示查询缓存区的内容 \r 重置(清除)查询缓存区 \s [文件] 显示历史记录或将历史记录保存在文件中 \w 文件 将查询缓存区的内容写入文件 输入/输出 \copy ... 执行 SQL COPY,将数据流发送到客户端主机 \e...
白豆腐徐长卿 发布于 5天前 阅读 21

MongoDB 入门极简教程

本教程学习时间为 1 小时。 本教程面向的受众是那些想通过简单易学的步骤来学习 MongoDB 数据库的学者。本教程能帮助你更好地理解 MongoDB 的相关概念。学完本教程后,你将达到中级水平,继而能够自学更高阶段的内容。
kangvcar 发布于 4周前 阅读 954 评论 5 点赞 9

Mysql系列:高可用(HA)

随着项目的发展,为了提高程序的性能,数据库层面或多或少的会用到HA、读写分离、集群等功能,在选型时可以考虑使用现成的云服务,或者一些高可用软件,亦或是利用一些开源软件实现上述功能。此次将针对上述功能分篇幅进行整理,内容涉及HA、读写分离、集群,以期使用时达到快速部署之效果。
晓叹星沉 发布于 2周前 阅读 220 点赞 3

金融级数据库的未来发展方向

2017年9月,Gartner与巨杉数据库联合发布了《金融级数据库的未来发展方向》报告。报告为业界阐述了当前需求下金融级数据库的技术革新以及未来发展方向的趋势。
巨杉数据库 发布于 1周前 阅读 164

Otter入门简介

前言:最近接了一个新的需求,需要在伦敦机房做一个数据同步方案,同步到北京。因为之前搭建过公网之间的同步,一是延迟比较大,另一个是因为同步经常会断。临时解决方案就是搭建一个多源复制,隔断时间全量一次数据到北京机房,但是这个传输时间也是个头疼的问题   一、Otter简介 1.1  otter是什么? Ottter是由阿里开源的一个数据同步产品,它的最初的目的是为了解决跨国异地机房双A架构,两边可写的场景,开发时间从2011年7月份一直持续到现在,目前阿里巴巴B2B内部的本地/异地机房的同步需求基本全上了Otter。 Otter基于数据库增量日志解析,支持mysql/oracle数据库进行同步,在最新的v4.2.13已经支持mysql5.7以及阿里云提供的RDS数据库(使用RDS童鞋的福音) 1.2  otter工作原理 db : 数据源以及需要同步到的库 Canal : 用户获取数据库增量日志 manager : 配置同步规则设置数据源同步源等 zookeeper : 协调node进行协调工作 node : 负责任务处理处理接受到的部分同步工作 1.3  otter的特性 使用纯JAVA开发,占时资源比较高 基于Canal获取数据库增量日志,Canal是阿里爸爸另外一个开源产品 使用manager(web管理)+node(工作节点),manager负责配置监控,node负责处理任务 基于...
IT--小哥 发布于 3周前 阅读 721

MySql Binlog事件介绍篇

前言 上一篇文件MySql Binlog初识,对Binlog的参数,格式以及个别事件做了详细介绍,但是Binlog事件数量比较多,上篇文章中没有对所有事件进行介绍;本文将对Binlog的事件进行简单说明,必要的时候通过SQL触发相关的事件,以下基于Mysql5.5,5.0以前的版本不考虑。 Binlog事件 1.UNKNOWN_EVENT 此事件从不会被触发,也不会被写入binlog中;发生在当读取binlog时,不能被识别其他任何事件,那被视为UNKNOWN_EVENT。 2.START_EVENT_V3 每个binlog文件开始的时候写入的事件,此事件被用在MySQL3.23 – 4.1,MYSQL5.0以后已经被FORMAT_DESCRIPTION_EVENT取代。 3.QUERY_EVENT 执行更新语句时会生成此事件,包括:create,insert,update,delete; 手动触发: insert into btest values(1,100,'zhaohui'); | bin-log.000001 | 432 | Query | 1 | 536 | use `test`; insert into btest values(1,100,'zhaohui') | | bin-log.000001 | 536 | Xid | 1 | 563 | COMM...
ksfzhaohui 发布于 2周前 阅读 114

MySql Binlog初识

Mysql日志 MySQL 的日志包括错误日志(ErrorLog),更新日志(Update Log),二进制日志(Binlog),查询日志(Query Log),慢查询日志(Slow Query Log)等; 更新日志是老版本的MySQL 才有的,目前已经被二进制日志替代;在默认情况下,系统仅仅打开错误日志,关闭了其他所有日志,以达到尽可能减少IO损耗提高系统, 性能的目的,但是在一般稍微重要一点的实际应用场景中,都至少需要打开二进制日志,因为这是MySQL很多存储引擎进行增量备份的基础,也是MySQL实现复制的基本条件; 下面介绍的就是二进制日志–Binlog Binlog开启 默认Binlog是关闭的,首先要开启才能记录日志; 1.查看是否开启log_bin mysql> show variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | OFF | +---------------+-------+ 2.开启log_bin 在my.ini中添加配置: log_bin=D:/mysql/bin-log.log 3.重启mysql,再次查看 mysql> show variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | ON | +---------------+-------+ 4.查看Binlog ...
ksfzhaohui 发布于 2周前 阅读 383 点赞 1

浅析开源数据库MySQL架构

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

MySQL5.7.19 解压版安装详细教程(附送纯净破解中文版SQLYog)

MySQL5.7.19 解压版安装详细教程(附送纯净破解中文版SQLYog) Mysql5.7.19版本是今年新推出的版本,最近几个版本的MySQL都不再是安装版,都是解压版了,这就给同志们带来了很多麻烦,挖了很多坑,单单从用户使用的易用性来讲,这么做着实有点反人类啊! 笔者也是反反复复的折腾了快一个小时才成功搞定,过程中也网搜了很多的教程,可惜很多也都是,索性自己记录一下,免得下次再重复入坑。 另: MySQL的图形化工具有很多种,笔者自我感觉SQLYog比较好用,纯属个人感觉,不喜勿喷!附送破解版SQLYog。   笔者使用环境: win10 x64   1. 下载安装包 访问MySQL官网https://www.mysql.com/ 按照如下顺序下载:   2. 解压到自定义目录 解压后如下:   3. 编辑my.ini  如上图所示解压后并没有my.ini文件,需要自己编写。 内容如下,直接新建my.ini文档后把下面内容复制保存即可: [Client] #设置3306端口 port = 3306   [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=%MYSQL_HOME% # 设置mysql数据库的数据的存放目录 datadir=%MYSQL_HOME%\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 char...
寂地时湮灭 发布于 2个月前 阅读 1413 评论 14 点赞 1

MySQL 执行load data infile时同步原理及注意事项

1、在客户端也可以向远程MySQL服务器执行 ‘load data‘ 命令 比如,客户端IP: 192.168.204.132 服务器IP: 192.168.204.131 可以在192.168.204.132上, 执行命令: mysql -h 192.168.204.131 -utest -ptest test -e'load local data infile "/opt/xxxxx.txt" into table loadtest;' 条件: 如果使用源码编译的MySQL,在configure的时候,需要添加参数:--enable-local-infile  客户端和服务器端都需要,否则不能使用local参数 2、load data infile 和 load local data infile 在 innodb和MyISAM 同步方面的区别  对MyISAM引擎: (1)对master服务器进行 ‘load’ 操作 (2)在master上所操作的load.txt文件,会同步传输到slave上,并在tmp_dir 目录下生成 load.txt文件 master服务器插入了多少,就传给slave多少 (3)当master上的load操作完成后,传给slave的文件也结束时 即:在slave上生成完整的 load.txt文件 此时,slave才开始从 load.txt 读取数据,并将数据插入到本地的表中  对innodb引擎: (1)主数据库进行 ‘Load’ 操作 (2)主数据库操作完成后,才开始向slave传输 load.txt文件, slave接受文件,并在 tmp_dir 目录下生成 load.txt 文件 接受并生成完整的l...
MS集边缘化 发布于 4天前 阅读 9

扒一扒那些年我们遇到的奇葩代码

### 前言 **本文首发于公众号【一名打字员】** 在工作中,我们通常会遇到传说中的“祖传”代码,有些是否让我们感到哭笑不得,今天本猿整理一下自己以及网络上出现过的奇葩代码。来源于互联网的均会标明出处。 ### TOP1 当仁不让的当然是传说中的“睡排序”,/手动捂脸 ```c++ #include #include #include #include int main(int argc, char* argv[]) { std::vector threads; for (int i = 1; i < argc; ++i) { threads.emplace_back([i, &argv]() { int arg = std::stoi(argv[i]); std::this_thread::sleep_for(std::chrono::seconds(arg)); std::cout << argv[i] << std::endl; }); } for (auto& thread : threads) { thread.join(); } } ``` 当然他输出的结果是 ``` ./a.out 8 15 14 9 17 20 16 24 6 24 21 23 19 23 19 6 8 9 14 15 16 17 19 19 20 21 23 23 24 24 ``` 本猿觉得,其实除了名称奇葩以外,其它还是很正常的。(逃 from [WIKI][1] ### TOP2 拼写容错,在知乎上看到的,23333... ```c++ #define ture true #define flase false #define viod void ``` from [B乎][2] ### TOP3 变量命名是个体力活,常年混迹GITHUB(复制粘贴代码)的本猿,看过太多各种各样的...
拯救世界的小安安 发布于 4天前 阅读 14

postgresql表和列注释(描述)

postgresql表和列注释添加和删除
白豆腐徐长卿 发布于 5天前 阅读 8

sql优化方案,总结的比较全面

对sql优化和网上的一些优化经验进行了实验和提出了实际处理方案
我的代码不生虫 发布于 2天前 阅读 15

图数据库与关系数据库的实验对比——意大利商会 InfoCamere 案例

InfoCamere是附属于意大利商会的IT公司,主要设计和开发最新和创新的IT解决方案和服务,它通过一个公众也可以访问的网络连接商会及其数据库。借助InfoCamere,意大利和国外的企业,公共机构,行业协会,专业团体和简单的公民可以轻松获取在意大利注册和运营的所有业务的最新官方信息和经济数据。 意大利商会通过遍布全国的300多个分支机构来服务和促进意大利企业的公共机构信息交流。InfoCamere 是商会的服务系统,帮助他们实现商业利益。在实施意大利数字化议程方面发挥了关键作用,涉及到国家生产系统的数字化转型过程,特别是支持中小企业的数字化。
GermanWifi 发布于 1周前 阅读 80

mysql 和 postgresql 使用对比

两个数据库介绍略过............ 整体结构如下(postgresql): 因为用的是阿里云的  postgresql忽略 安装过程 postgresql  可存储的类型 比MySQL多的是  按需取用 1.PostgreSQL有着丰富的内置数据类型可用。 用户还可以使用CREATE TYPE命令增加新的数 据类型。显示了所有内置的泛用数据类型。 在“别名”列里列出的大多数可选名字都是因历史原 因在PostgreSQL 内部使用。另外,还有一些内部使用的或者废弃的类型也是可用的, 但没 有在这里列出。 类型如下:  名字 别名 描述 bigint int8 有符号 8 字节整数 bigserial serial8 自增 8 字节整数 bit [ (n) ]   定长位串 bit varying [ (n) ] varbit 变长位串 boolean bool 逻辑布尔值(真/假) box   平面中的矩形 bytea   二进制数据("字节数组") character varying [ (n) ] varchar [ (n) ] 变长字符串 character [ (n) ] char [ (n) ] 定长字符串 cidr   IPv4 或 IPv6 网络地址 circle   平面中的圆 date   日历日期(年, 月, 日) double precision float8 双精度浮点数字 inet   IPv4 或 IPv6 网络地址 integer int, int4 有符号 4 字节整数 interval [ (p) ]   时间间隔 line   平面中的无限长直线 lseg  ...
wanghahah 发布于 4天前 阅读 10

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

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

数据库

数据库基础操作1
王尼尼 发布于 4小时前 阅读 3

一个文件夹复制到多个文件里面

@echo off setlocal enabledelayedexpansion for /l %%i in (1 1 4) do ( set aa=D:\L00 set  mm=!aa!%%i xcopy /s /e /h  C:\565656 !mm! ) pause   
oo_o 发布于 5小时前 阅读 2

干货!Oracle解密“零丢失”的数据保护

导读 Oracle(甲骨文)零数据丢失恢复一体机是一个突破性的数据保护解决方案,通过紧密集成 Oracle数据库直接满足这些需求。该设备可消除数据丢失风险并大幅降低数据保护对生产服务器带来的开销。此外,它还可以通过扩展保护数以千计的数据库、确保端到端的数据验证并实现全生命周期保护,包括磁盘备份、磁带 备份和远程复制。。 据统计,到2020年绝大多数企业的数据量预计将增长50倍,如此庞大的数据集将导致极高的数据丢失风险。目前用于保护业务数据的解决方案无法满足关键任务企业数据库的需求。这些解决方案每次执行恢复时有可能会丢失多达一天的业务数据,在备份期间还会给生产服务器带来沉重负担,并且无法确保数据库级别的可恢复性,也无法通过扩展满足不断增长的数据库需求。从根本上说,它们将数据库作为一组分散的文件来复制,而不是具备特定完整性和性能需求的事务系统。 Oracle(甲骨文)零数据丢失恢复一体机是一个突破性的数据保护解决方案,通过紧密集成 Oracle数据库直接满足这些需求。该设备可消除数据丢失风险并大幅降低数据保护对生产服务器带来的开销。此外,它还可以通过扩展保护数以千计的数据库、确保端到端的数据验证并实现全生命周期保护,包括磁...
问题终结者 发布于 5小时前 阅读 1

《数据库系统概念》7-函数、存储过程、触发器

一、函数和存储过程 a)通过函数和存储过程可以将业务逻辑保存在数据库,在需要的时候调用。比如学生在一个学期可以修的最大课程数、导师的最小授课数等,这些判断具有比较复杂的逻辑,虽然在数据库外也可以实现这样的控制,但用函数或存储过程在数据库的入口来把关,可以与应用程序独立开来,便于维护。但感觉将业务逻辑独立写在存储过程也不一定就能便于维护。 b)SQL标准规定的函数定义方法为: create function dept count(dept_name varchar(20)) returns integer begin declare d_count integer; select count(*) into d_count from instructor where instructor.dept_name= dept_name return d count; end 函数定义好后,可以在查询语句中调用,就像内置函数一样: select dept name, budget from instructor where dept count(dept name) > 12; c)函数还可以返回表,称为表函数(table functions),这相当于带参数的视图 create function instructors of (dept_name varchar(20)) returns table ( ID varchar (5), name varchar (20), dept_name varchar (20), salary numeric (8,2)) return table (select ID, name, dept_name, salary from instructor where instruc...
zhixin9001 发布于 7小时前 阅读 1

​《数据库系统概念》5-连接、视图和事务

一、连接 a)inner join中,on,可以用where替代,但用on来专门指定join条件,其它条件写在where中可读性更好。 b)outer join 对于连接字段为空的元祖,使用inner join时不会列出,outer join却不一样,left /right join会保留左(右)侧的连接字段为空的元祖。left join的过程可以理解为先执行inner join,然后再向结果集中添加左侧关系中剩余的元祖。 在outer join中,on和where就不能互换了 c)在SQL server中left outer join也是可以写的,但一般会省略inner、outer 二、视图 a)前面学习过程中接触的表都是在数据库中实际存在的,但有时用户并不需要一张表的全部信息;甚至有时候不想让用户拿到额外的信息,比如有时只允许用户查阅instructor表的id, name;或者有一些复杂的查询我们不希望每次都去重复写一遍。这时可以使用虚拟的表(virtual relation),即视图(view),视图不属于数据库的表,但可以被用户访问到。 b)视图的定义 写法为create view v as <query expression>;其中query expression可以是任何查询语句。比如之前的instructor视图可以这样定义: create view faculty as select ID, name from instructor; 然后只为用户提供访问faculty视图的权限,就可以达成...
zhixin9001 发布于 7小时前

Mysql 中ORDER BY 是否能够增加执行效率

同样的sql语句,只是缺少order by 。这里的排序最好是主键或者索引
季书歌 发布于 7小时前 阅读 2

mysql 检测从库状态

先将show slave status的结果转换成字典,再取key对应的值去判断相关属性的状态 #!/bin/bash HOSTNAME="XXXX" PORT="3306" USERNAME="XXXX" PASSWORD="XXXXX" DBNAME="mysql" use_db_sql="use ${DBNAME}" mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e "${use_db_sql}" select_sql="show slave status\G;" state=`mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"` ret=${state//: /:} ####echo $ret ####下面是将字符串分割成数组 OLD_IFS="$IFS" IFS=" " arr=($ret) IFS="$OLD_IFS" ####字典必须先声明 declare -A dic OLD_IFS="$IFS" IFS=":" for s in ${arr[@]} do     arr2=($s)     ##echo  ${#arr2[@]} ":count"     if [ ${#arr2[@]} -eq 2 ];then       dic[${arr2[0]}]=${arr2[1]}     else      dic[${arr2[0]}]=""     fi done IFS="$OLD_IFS" io_run=${dic["Slave_IO_Running"]} sql_run=${dic["Slave_SQL_Running"]} str="Yes" if [ "$io_run" != "$str" ] || [ "$sql_run" != "$str" ];then     ####发送邮件通知     sh sendmail.sh fi #####sendmail.sh #!/bin/bash /us...
二师弟的大师兄 发布于 10小时前 阅读 2

wampserver mysql 无法启动解决办法

mysql无法启动
zxcgzq 发布于 11小时前

MySQL某列插入递增值

代码如下: SET @i := 100; UPDATE auge_item_classification SET c_code=(@i:=(@i+1));
晚天吹凉风 发布于 11小时前 阅读 2

千万级MySQL大表要怎么优化?

第一优化你的sql和索引; 第二加缓存,memcached,redis; 第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护; 第四如果以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这个,对你的应用是透明的,无需更改代码,但是sql语句是需要针对分区表做优化的,sql条件中要带上分区条件的列,从而使查询定位到少量的分区上,否则就会扫描全部分区,另外分区表还有一些坑,在这里就不多说了; 第五如果以上都做了,那就先做垂直拆分,其实就是根据你模块的耦合度,将一个大的系统分为多个小的系统,也就是分布式系统; 第六才是水平切分,针对数据量大的表,这一步最麻烦,最能考验技术水平,要选择一个合理的sharding key,为了有好的查询效率,表结构也要改动,做一定的冗余,应用也要改,sql中尽量带sharding key,将数据定位到限定的表上去查,而不是扫描全部的表; 有人又会问:如何设计或优化千万级别的大表?对于一个存储设计,必须考虑业务特点,收集信息如下: 1.数据的容量:1-3年内会大概多少条数据,每条数据大概多少字节; 2.数据项:是...
MS集边缘化 发布于 12小时前 阅读 66

关于mysql的用户管理

 1、创建新用户   通过root用户登录之后创建   >> grant all privileges on *.* to testuser@localhost identified by "123456" ;   //  创建新用户,用户名为testuser,密码为123456 ;   >> grant all privileges on *.* to testuser@localhost identified by "123456" ;   //  设置用户testuser,可以在本地访问mysql   >> grant all privileges on *.* to testuser@"%" identified by "123456" ;    //  设置用户testuser,可以在远程访问mysql   >> flush privileges ;   //  mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问,还有一种方法,就是重新启动mysql服务器,来使新设置生效      2、设置用户访问数据库权限   >> grant all privileges on test_db.* to testuser@localhost identified by "123456" ;   //  设置用户testuser,只能访问数据库test_db,其他数据库均不能访问 ;   >> grant all privileges on *.* to testuser@localhost identified by "123456" ;   //  设置用户testuser,可以访问mysql上的所有数据库 ;   >> gra...
沉默的云 发布于 13小时前 阅读 2

MySQL存储引擎

  1、查看当前数据库支持的存储引擎show engines; mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO ...
小衰哥有点帅 发布于 13小时前 阅读 2

MySQL连接查询

含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询 分类:     按年代分类:     sql92标准:仅仅支持内连接     sql99标准【推荐】:支持内连接+外连接(左外和右外)+交叉连接          按功能分类:         内连接:等值连接 ,非等值连接, 自连接         外连接:左外连接, 右外连接, 全外连接         交叉连接 笛卡尔乘积 现象:表1 有m行,表2有n行,结果=m*n行 发生原因:没有有效的连接条件 如何避免:添加有效的连接条件 一、sql92标准 1、等值连接 ① 多表等值连接的结果为多表的交集部分 ②n表连接,至少需要n-1个连接条件 ③ 多表的顺序没有要求 ④一般需要为表起别名 ⑤可以搭配前面介绍的所有子句使用,比如排序、分组、筛选 #案例1:查询女神名和对应的男神名 SELECT NAME,boyName  FROM boys,beauty WHERE beauty.boyfriend_id= boys.id; #案例2:查询员工名和对应的部门名 SELECT last_name,department_name FROM employees,departments WHERE employees.`department_id`=departments.`department_id`; #2、为表起别名 ①提高语句的简洁度 ②区分多个重名的字段 注意:如果为表起了别名,则...
小衰哥有点帅 发布于 13小时前 阅读 2

MySQL的基础操作

### 一 DDL 数据库定义语言 ![2](https://static.oschina.net/uploads/img/201711/24142211_ndre.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201711/24142327_Dr7t.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201711/24142348_QYNd.png "在这里输入图片标题") ![5](https://static.oschina.net/uploads/img/201711/24142359_EO4L.png "在这里输入图片标题") ![6](https://static.oschina.net/uploads/img/201711/24142414_cmnX.png "在这里输入图片标题") ![7](https://static.oschina.net/uploads/img/201711/24142424_6Sch.png "在这里输入图片标题") ![8](https://static.oschina.net/uploads/img/201711/24142435_rJbT.png "在这里输入图片标题") ![9](https://static.oschina.net/uploads/img/201711/24142446_QBmE.png "在这里输入图片标题") ![10](https://static.oschina.net/uploads/img/201711/24142502_7jws.png "在这里输入图片标题") ![11](https://static.oschina.net/uploads/img/201711/24142517_XgxF.png "在这里输入图片标题") ![12](https://static.oschina.net/upl...
小小小施爷 发布于 14小时前 阅读 6

MySQL分组查询

  GROUP BY字句语法 select column,group_function(column) from table [where condition] [group by group_by_expression] [order by column] 特点: 1、和分组函数一同查询的字段必须是group by后出现的字段 2、筛选分为两类:分组前筛选和分组后筛选          针对的表             位置       连接的关键字 分组前筛选     原始表                 group by前    where      分组后筛选    group by后的结果集       group by后     having 一般来讲,能用分组前筛选的,尽量使用分组前筛选,提高效率 3、分组可以按单个字段也可以按多个字段 4、可以搭配着排序使用   #引入:查询每个部门的员工个数 SELECT COUNT(*) FROM employees WHERE department_id=90; #1.简单的分组 #案例1:查询每个工种的员工平均工资 SELECT AVG(salary),job_id FROM employees GROUP BY job_id; #案例2:查询每个位置的部门个数 SELECT COUNT(*),location_id FROM departments GROUP BY location_id; #2、可以实现分组前的筛选 #案例1:查询邮箱中包含a字符的 每个部门的最高工资 SELECT MAX(salary),departm...
小衰哥有点帅 发布于 14小时前 阅读 1

什么影响了数据库的性能?

老师曾经从业过的一家电商公司, 如果主服务器出现故障; 由于从服务器比较多,切换从服务器最少需要半个小时的时间;而且这种从服务器很多的架构,当访问量很大的时候,对服务器的网卡也是很大的挑战,容易引起故障; 我们可以从监控信息来判断影响服务器 性能的原因 磁盘IO用的是fashion IO 凌晨,读的峰值很大(可能说明服务器性能急剧下降),检查后,因为是数据库备份远程同步计划任务造成的。 并发量:同一时间处理的请求的数量 TPS - Transactions Per Second(每秒传输的事物处理个数),这是指服务器每秒处理的事务数,支持事务的存储引擎如InnoDB等特有的一个性能指标。 计算方法: TPS = (COM_COMMIT + COM_ROLLBACK)/UPTIME use information_schema; select VARIABLE_VALUE into @num_com from GLOBAL_STATUS where VARIABLE_NAME ='COM_COMMIT'; select VARIABLE_VALUE into @num_roll from GLOBAL_STATUS where VARIABLE_NAME ='COM_ROLLBACK'; select VARIABLE_VALUE into @uptime from GLOBAL_STATUS where VARIABLE_NAME ='UPTIME'; select (@num_com+@num_roll)/@uptime; 1 2 3 4 5 QPS - Queries Per Second(每秒查询处理量)同时适用与InnoD...
麦可叔叔 发布于 15小时前 阅读 2

【演讲实录】金融级数据库技术与实践

近期,巨杉数据库 受邀在第七届数据技术嘉年华中做了“金融级数据库技术与实践”为主题的演讲,分享了巨杉数据库有关金融行业数据库管理以及金融级数据库技术与应用的一些实践及思考。
巨杉数据库 发布于 17小时前 阅读 3

Mysql-slowlog

MySQL慢查询日志是MySQL提供的一种日志记录,用来记录执行时长超过指定时长的查询语句,具体指运行时间超过 long_query_time 值的 SQL 语句,则会被记录到慢查询日志中。 long_query_time 默认值是 10 ,单位是 s,即默认是 10秒 。默认情况下,MySQL数据库并不会开启慢查询日志,需要手动设置这个参数。 通过慢查询日志,可以查找出哪些查询语句的执行效率很低,以便进行优化。一般建议开启,它对服务器性能的影响微乎其微,但是可以记录MySQL服务器上执行了很长时间的查询语句。慢查询日志可以帮助我们定位mysql性能问题所在。 MySQL慢查询日志 慢查询日志相关参数 slow_query_log : 是否启用慢查询日志,[1 | 0] 或者 [ON | OFF] slow_query_log_file : MySQL数据库(5.6及以上版本)慢查询日志存储路径。 可以不设置该参数,系统则会默认给一个缺省的文件 HOST_NAME-slow.log long_query_time : 慢查询的阈值,当查询时间超过设定的阈值时,记录该SQL语句到慢查询日志。 log_queries_not_using_indexes :设置为 ON ,可以捕获到所有未使用索引的SQL语句(不建议启用) log_output : 日志存储方式。 log_output='FILE',表示将日志存...
军旗123 发布于 17小时前 阅读 1

FireDAC之TFDStoredProc

TFDStoredProc用来执行存储过程。
业余码农 发布于 18小时前 阅读 1

数据库中视图的更新限制

1. 若视图是由两个以上基本表导出的,则此视图不允许更新。 2. 若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作。 3. 若视图的字段来自集函数,则此视图不允许更新。 4. 若视图定义中含有GROUP BY子句,则此视图不允许更新。 5. 若视图定义中含有DISTINCT短语,则此视图不允许更新。 6. 若视图定义中有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表,则此视图不允许更新。例如将成绩在平均成绩之上的元组定义成一个视图GOOD_SC: CREATE VIEW GOOD_SC AS SELECT Sno, Cno, Grade FROM SC WHERE Grade > (SELECT AVG(Grade) FROM SC);   导出视图GOOD_SC的基本表是SC,内层查询中涉及的表也是SC,所以视图GOOD_SC是不允许更新的。 7. 一个不允许更新的视图上定义的视图也不允许更新。
登愿- 发布于 1天前 阅读 3

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

科技解放生产力,人工智能的应用如今是大热,那么今天就来给各位介绍一下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 发布于 2个月前 阅读 1286 评论 7 点赞 2

浅析开源数据库MySQL架构

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

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

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

Mongodb高可用集群搭建

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

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

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

记一次mysql性能优化过程

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

NoSQL介绍

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

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

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

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

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

MySQL应用优化

本文从MySQL语句优化、引擎选择、数据库设计三个方面介绍如何进行MySQL应用优化
lonelydawn 发布于 1年前 阅读 4095 评论 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 [root@localhost ~]# vi /etc/haproxy/haproxy.cfg global log 127.0.0.1 local0 info maxconn 4096 user haproxy group haproxy dae...
kenyon_君羊 发布于 2年前 阅读 5312 评论 25 点赞 10
顶部