开源中国

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

深度认识 Sharding-JDBC:做最轻量级的数据库中间层

Sharding-JDBC 采用在 JDBC 协议层扩展分库分表,是一个以 jar 形式提供服务的轻量级组件,其核心思路是小而美地完成最核心的事情。
编辑部的故事 发布于 6小时前 阅读 97 点赞 1

只会增删查改?你还缺个数据库管理工具!

任何web软件和应用程序都需要强大的数据库管理工具,因此开发者选择一款合适的数据库管理工具尤为重要。本文列出了几款好用的数据库管理工具(有些并非开源或免费),以供开发者们参考选择: 1、MySQL管理工具 phpMyAdmin phpMyAdmin是一个非常受欢迎的基于web的MySQL数据库管理工具。它能够创建和删除数据库,创建/删除/修改表格,删除/编辑/新增字段,执行SQL脚本等。 2、数据库管理工具 Navicat Lite  Navicat是一套快速、可靠并价格相宜的资料库管理工具,大可使用来简化资料库的管理及降低系统管理成本。它的设计符合资 料库管理员、开发人员及中小企业的需求。 Navicat是以直觉化的使用者图形介面所而建的,让你可以以安全且简单的方式建立、组织、存取并共用资讯。Navicat 支持的数据库包括 MySQL、Oracle、SQLite、PostgreSQL 和 SQL Server 等。 Navicat 提供商业版 Navicat Premium 和 免费的版本 Navicat Lite 。但目前 Navicat 已不再提供 LITE 版本。 缺点: 免费版本已停止更新。 3、数据库管理工具 DBeaver DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase, Mimer, HSQLDB, Derby, 以及其他兼...
编辑部的故事 发布于 2天前 阅读 4560 评论 36 点赞 7

使用batch-import工具向neo4j中导入海量数据

在开发neo4j的过程中,经常会有同学问如何向neo4j中导入大量的历史数据,而这些数据一般都会存在于关系型数据库中,现在本人就根据自己的导入经历,把导入的过程和一些挖过的坑分享给大家,以便后面的同学少走弯路,废话不多说,直接上干货。 1、batch-import原始项目地址:https://github.com/jexp/batch-import     这个工具是neo4j的作者之一Michael Hunger所编写,是在neo4j自带批量导入工具基础之上做的进一步优化,但是它在导入.gz压缩文件时,会出现关系无法导入的情况,所以如果要使用.gz压缩包进行导入,请使用我修改过的版本:https://github.com/mo9527/batch-import 2、环境准备     jdk:7以上     内存:8G以上,导入数据多的话会非常消耗内存,我自己导入的是将近1.5亿节点,3亿关系,用的是32G内存 3、导入步骤     a)从github上clone下代码,并使用maven进行打包,打完包后的jar文件,与项目本身的依赖jar一起放到lib文件夹下,batch.properties文件和执行导入的脚本放在lib同级目录下,最后的目录结构如下图:          ps:file文件夹是我自己将要导入的csv文件和.gz压缩包。     b)组装csv文件         说起这一步,可能需要你们...
T_SevenS 发布于 1周前 阅读 170

Oracle用户密码过期和用户被锁解决方法

今天在工作中碰到的问题及解决办法!
不忘初心得始终 发布于 2周前 阅读 177 评论 1

Mysql5.7忘记root密码及mysql5.7修改root密码的方法

关闭正在运行的 MySQL : 1 [root@www.woai.it ~]# service mysql stop 运行 1 [root@www.woai.it ~]# mysqld_safe --skip-grant-tables & 为了安全可以这样禁止远程连接: 1 [root@www.woai.it ~]# mysqld_safe --skip-grant-tables --skip-networking & 使用mysql连接server: 1 [root@www.woai.it ~]# mysql -p 更改密码: 1 mysql> update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost'; *特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有Password字段了 而是将加密后的用户密码存储于authentication_string字段 1 2 mysql> flush privileges; mysql> quit; 修改完毕。重启 1 [root@localhost ~]# service mysql restart 然后mysql就可以连接了 但此时操作似乎功能不完全,还要alter user… 1 mysql> alter user 'root'@'localhost' identified by '123'; 这样也可以: 1 mysql> set password for 'root'@'localhost'=password('123'); 重点给大家介绍下mysql 5.7 root密码修改 MySQL管理者密码设置或修改: 依据官方说明5.6以后版本,第一次启动时会在root目录下生产一个随机密码,文件名.mysql_...
豆花饭烧土豆 发布于 2周前 阅读 394 评论 1

oracle 基于数据挖掘的不完全恢复

基于时间点,scn的不完全恢复
wzl_up 发布于 2周前 阅读 170

你的MySQL密码过期了吗?

故障现场:登陆到MySQL服务器,不管你执行什么命令都报这个错 mysql> show databases; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. mysql> use test; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. ... ... 怎么会这样呢?难道我进的是假服务器?   原因分析:这个主要是由一个参数控制的 default_password_lifetime,看看官方的解释 仔细看哈,Note信息有时候比上面的信息有用(英文的note我一般都是忽略的,有可能你忽略掉的那部分对性能也有帮助哦)   问题解决:在开源的世界里,我们不怕报错,有报错才有解决思路。下面来看下自己环境里的 mysql> select version(); +--------------+ | version() | +--------------+ | 5.7.10-3-log | +--------------+ 1 row in set (0.01 sec) mysql> show variables like 'default_password_lifetime'; +---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | default_password_lifetime | 360 | +------------...
IT--小哥 发布于 1个月前 阅读 317

【方法】Oracle用户密码含特殊字符时的登陆问题

【方法】Oracle用户密码含特殊字符时的登陆问题
小麦苗 发布于 1个月前 阅读 167

腾讯云数据库团队:SQL Server 数据加密功能解析

数据加密是数据库被破解、物理介质被盗、备份被窃取的最后一道防线,数据加密,一方面解决数据被窃取安全问题,另一方面有关法律要求强制加密数据。SQL Server 的数据加密相较于其他数据库,功能相对完善,加密方法较多。通常来讲,数据加密分为对称加密和非对称加密。对称加密:加密与解密使用同一密钥,密钥需要传输,安全性较弱,但性能较非对称要好。非对称加密:加密与解密使用不同密钥(公钥和私钥),较对称密钥安全性较好,但是算法较复杂,带来性能上的损失。因此,折中的方法是使用对称密钥加密数据,使用非对称密钥加密对称密钥。这样既保证高性能,又提高密钥的可靠性。
腾讯云技术社区 发布于 1个月前 阅读 240

腾讯云:MySQL数据库的高可用性分析

MySQL数据库是目前开源应用最大的关系型数据库,有海量的应用将数据存储在MySQL数据库中。存储数据的安全性和可靠性是生产数据库的关注重点。本文分析了目前采用较多的保障MySQL可用性方案。
腾讯云技术社区 发布于 1个月前 阅读 552 评论 2

腾讯云技术分享:MySQL AHI 实现解析

"查询语句使用AHI 的时候有以下优点: •可以直接通过从查询条件直接定位到叶子结点,减少一次定位所需要的时间; •在 buffer pool 不足的情况下,可以只针对热点数据页建立缓存,从而避免数据页频繁的 LRU;如何用好?本文带你了解"
腾讯云技术社区 发布于 1个月前 阅读 297 评论 2

腾讯云技术大牛教你,MySQL内核深度优化

腾讯云CDB团队针对用户的需求,重点围绕内核性能、内核功能和外围OSS系统三个维度对CDB for MySQL分支进行展开优化,本文详细介绍了相关技术细节.
腾讯云技术社区 发布于 1个月前 阅读 757 评论 5 点赞 2

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

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

高性能服务器架构思路(一)——缓冲策略

在服务器端程序开发领域,性能问题一直是备受关注的重点。然而,服务器端程序在性能问题上应该有何种基本思路,这个却很少被这些项目的文档提及。本文正式希望介绍服务器端解决性能问题的基本策略和经典实践。
腾讯云技术社区 发布于 2个月前 阅读 180

TokuDB性能测试报告,一手实测TokuDB性能

TokuDB作为MySQL的大数据(Big Data)存储引擎受到人们的普遍关注。TokuDB拥有很高的压缩比(官方称最大可达25倍),可以在很大的数据上创建大量的索引,并保持性能不下降。我们来实测一下其真实性能如何?
腾讯云技术社区 发布于 2个月前 阅读 61

mysql配置文件my.cnf说明

  #由于mysql各个版本的升级,可能参数名称会有略微调整,根据实际情况而定 # 以下选项会被MySQL客户端应用读取。 # 注意只有MySQL附带的客户端应用程序保证可以读取这段内容。 # 如果你想你自己的MySQL应用程序获取这些值。 # 需要在MySQL客户端库初始化的时候指定这些选项。 # [client] #password = [your_password] port = @MYSQL_TCP_PORT@ socket = @MYSQL_UNIX_ADDR@   # *** 应用定制选项 ***   # # MySQL 服务端 # [mysqld]   # 一般配置选项 port = @MYSQL_TCP_PORT@ socket = @MYSQL_UNIX_ADDR@   # back_log 是操作系统在监听队列中所能保持的连接数, # 队列保存了在 MySQL 连接管理器线程处理之前的连接. # 如果你有非常高的连接率并且出现 “connection refused” 报错, # 你就应该增加此处的值. # 检查你的操作系统文档来获取这个变量的最大值. # 如果将back_log设定到比你操作系统限制更高的值,将会没有效果 back_log = 300   # 不在 TCP/IP 端口上进行监听. # 如果所有的进程都是在同一台服务器连接到本地的 mysqld, # 这样设置将是增强安全的方法 # 所有 mysqld 的连接都是通过 Unix Sockets 或者命名管道进行的. # 注意在 Windows下如果没有打开命...
蓝狐乐队 发布于 2个月前 阅读 404 点赞 1

PLSQL Developer软件使用大全

PLSQL Developer软件使用大全
小麦苗 发布于 2个月前 阅读 428 评论 1

记一次mysql性能优化过程

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

Atlas-mysql中间件配置应用

Atlas是基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。解决mysql在读写效率上的瓶颈。
夜魅三角湾-牛魔王 发布于 2个月前 阅读 206 评论 2

HBase1.2.3架构剖析(二)之 组件详解

Master与RegionServer的讲解。 Master的接口与流程。RegionServer接口、流程、Cache以及RegionServer拆分的实现。
lzhaoqiang 发布于 2个月前 阅读 257

基于日志的Mysql主从复制的两种方案 -- ( 基于mysqldump & 基于innobackupex )

本篇讲述我学习mysql基于二进制日志的复制,主要内容是 : 1. 方案一 : 基于 mysqldump 的主从 2. 方案二 : 基于 innobackupex 的主从( 推荐 ) 3. 主从切换 最近把博客迁移到github pages上面了, 地址是 [mysql主从的两种方案](https://340starobserver.github.io/2016/11/21/Mysql-Repliset/)
340StarObserver 发布于 3个月前 阅读 18

多对多查询一对一SQL

oracle的with语法,group by having语法。
无知有趣 发布于 2年前 阅读 368

本机使用VMWare部署Redis

学习redis,将redis部署在本机电脑的red hat环境中,下面介绍一下部署的步骤和可能遇到的问题与解决方法。 1.下载安装redis,使用官网提供的方法: a).进入一个目录后输入命令: $ wget http://download.redis.io/releases/redis-3.2.8.tar.gz $ tar xzf redis-3.2.8.tar.gz $ cd redis-3.2.8 $ make b).启动redis服务端 $ src/redis-server c).启动redis客户端输入命令调试 $ src/redis-cli 2.在red hat中找到System Preferences,在filter中搜索fire,找到防火墙打开。 在弹出的窗口中输入密码进行授权 在Other Ports中选择Add,再选择UserDefined,下面输入Redis的端口6379,点击确认。则本机就可以访问虚拟机的redis端口了。   3.设置完虚拟机端口后,需要为redis授权在本机以外的机器上也能执行命令。使用redis客户端输入如下命令即可。   config set protected-mode no 上述完成后就能在自己本机模拟部署在其他设备上的redis服务了。...
youcaihuacube 发布于 3周前 阅读 2

ODBC对象 - Connection

ODBC connection属性说明
先进哥 发布于 3年前 阅读 581

问卷调查法使用小结

问卷调查(questionnaire)是用户研究或市场研究中非常常用的一种方法,这种方法可在短期内收集大量回复,而且借助网络传播调研成本也比较低,所以得到广泛的使用,但是似乎有些人认为商业智能产品问卷调查就是设计若干问题然后发给用户填写就行了,但其实越是简单的调查方法越是有需要注意的地方,这样才能真正发挥该方法的优势,下面就结合自己近期的项目实践对这种方法进行总结,意在总结流程,所以具体的题目此处不做呈现。 一 问卷调查的基本定义 1问卷调查与量表      其实问卷调查本人更倾向于称之为调查表(questionnaire或者survey),它与心理学上常见的量表(scale)还是有很大差异的  总的来说,问卷调查更多的用于了解目标对象对某些事情的态度,认知等,而量表是用来描述目标对象的某种心理特质在群体中的相对位置,如智力量表等,在企业的实际工作中,问卷调查法使用频率更高。 2问卷调查的用途  正是由于问卷调查的基本形式是设计问题,提供选项供用户填写,所以问卷调查更适合收集用户对现有产品的态度、基本习惯信息和人口统计学特征等,不太适合用于探索发现新需求新问题(无法提供选项,而用户自己填写意见/建议的比率也非常低),而且其具有投放...
数据分析师 发布于 2年前 阅读 22

MyISAM和InnoDB的行格式ROW_FORMAT

MyISAM行存储 MyISAM有3种行存储格式:fixed/dynamic/compressed; 其中fixed为默认格式,只有当表不包含变长字段(varchar/varbinary/blob/text)时使用,该每行都是固定的,所以很容易获取行在页上的具体位置,存取效率比较高,但是占用磁盘空间较多; dynamic 每行都有一个行头部,包含bitmap,用以记录那些列为空(NULL列不算为空); 相比于fixed,其有如下特性: 所有字符串列都是动态存储的,除非长度小于4; 字符类型若长度为0/数字类型为0都会不占用存储空间,由bitmap标注,NULL值不包含在内; 如果要update行,其扩展后很容易导致行链接既而产生碎片,一旦crash若link丢失则比较难恢复,fixed模式update不会产生碎片;   compressed只能通过myisampack创建且为只读;   MyISAM的索引文件包含一个flag记录基表是否正常关闭,如果mysqld启动时指定了--myisam-recover-options,则在打开表时检测并自动修复表       InnoDB行存储 Innodb plugin新引入Barracuda梭子鱼,其包含compressed/dynamic两种行格式,而之前的compact/redundant统属于antelope羚羊;   Barracuda VS antelope 由innodb_file_format(动态)参数决定,目前可选值由Antelope和Barracuda,默认为...
mdoo 发布于 2年前 阅读 784

mybatis SqlCommandType 的深入了解

在一次开发中,意外发现mybatis的中的update元素下写着delete的sql语句(如下图),却能正常运行,为了搞清楚,特意了解下mysql的动态解析。 <update id="delete" parameterType="java.lang.Long"> DELETE FROM yqt_cxy WHERE id = #{value} </update> mybatis底层是如何构造这段sql的? 1.读入配置文件 @Test public void shouldSuccessfullyLoadXMLConfigFile() throws Exception { String resource = "org/apache/ibatis/builder/CustomizedSettingsMapperConfig.xml"; // 读入配置文件 InputStream inputStream = Resources.getResourceAsStream(resource); Properties props = new Properties(); props.put("prop2", "cccc"); XMLConfigBuilder builder = new XMLConfigBuilder(inputStream, null, props); // 开始解析配置文件 Configuration config = builder.parse(); } 2.XMLConfigBuilder 解析mybatis中configLocation属性中的全局xml文件,内部会使用XMLMapperBuilder解析各个xml文件。 public Configuration parse() { if (parsed) { throw new BuilderException("Each XMLConfigBuilder can ...
AlexCxy 发布于 11个月前 阅读 35

mysql不停服务迁移数据库,部分备份+主从同步

小公司为节省成本,项目初期在一台服务器上放了N个项目+数据库,现在其中一个项目压力大了,需要转移到独立服务器上,那么问题来了,如何在不停原来服务的基础上将项目无缝切换到新服务器上呢?为此我不由陷入了沉思..
吾爱 发布于 9个月前 阅读 268

使用OpenFiler来模拟存储配置RAC中ASM共享盘及多路径(multipath)的测试

使用OpenFiler来模拟存储配置RAC中ASM共享盘及多路径(multipath)的测试
小麦苗 发布于 3个月前 阅读 102

只会增删查改?你还缺个数据库管理工具!

任何web软件和应用程序都需要强大的数据库管理工具,因此开发者选择一款合适的数据库管理工具尤为重要。本文列出了几款好用的数据库管理工具(有些并非开源或免费),以供开发者们参考选择: 1、MySQL管理工具 phpMyAdmin phpMyAdmin是一个非常受欢迎的基于web的MySQL数据库管理工具。它能够创建和删除数据库,创建/删除/修改表格,删除/编辑/新增字段,执行SQL脚本等。 2、数据库管理工具 Navicat Lite  Navicat是一套快速、可靠并价格相宜的资料库管理工具,大可使用来简化资料库的管理及降低系统管理成本。它的设计符合资 料库管理员、开发人员及中小企业的需求。 Navicat是以直觉化的使用者图形介面所而建的,让你可以以安全且简单的方式建立、组织、存取并共用资讯。Navicat 支持的数据库包括 MySQL、Oracle、SQLite、PostgreSQL 和 SQL Server 等。 Navicat 提供商业版 Navicat Premium 和 免费的版本 Navicat Lite 。但目前 Navicat 已不再提供 LITE 版本。 缺点: 免费版本已停止更新。 3、数据库管理工具 DBeaver DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase, Mimer, HSQLDB, Derby, 以及其他兼...
编辑部的故事 发布于 2天前 阅读 4560 评论 36 点赞 7

MySQL INSERT插入条件判断:如果不存在则插入

我们经常需要进行sql的批量插入,要求:该条记录不存在则插入,存在则不插入。如果使用一条INSERT语句实现呢?
山哥 发布于 3年前 阅读 33669 评论 9 点赞 7

Mysql分库分表方案

Mysql分库分表方案 1.为什么要分表: 当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。 mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行操作。 2. mysql proxy:amoeba 做mysql集群,利用amoeba。 从上层的java程序来讲,不需要知道主服务器和从服务器的来源,即主从数据库服务器对于上层来讲是透明的。可以通过amoeba来配置。  3.大数据量并且访问频繁的表,将其分为若干个表 比如对于某网站平台的数据库表-公司表,数据量很大,这种能预估出来的大数据量表,我们就事先分出个N个表,这个N是多少,根据实际情况而定。      某网站现在的数据量至多是5000万条,可以设计每张表容纳的数据量是500万条,也就是拆分成10张表, 那么如何判断某张表的数据是否容量已满呢?可以在程序段对于要新增数据的表,在插入前先做统计表记录数量的操作,当<500万条数据,就直接插入,当已经到达阀值,可以在程序段新...
凯文加内特 发布于 3年前 阅读 43669 评论 8 点赞 10

深度认识 Sharding-JDBC:做最轻量级的数据库中间层

Sharding-JDBC 采用在 JDBC 协议层扩展分库分表,是一个以 jar 形式提供服务的轻量级组件,其核心思路是小而美地完成最核心的事情。
编辑部的故事 发布于 6小时前 阅读 97 点赞 1

浅谈数据仓库的基本架构

  数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support)。其实数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而不叫“工厂”的原因。因此数据仓库的基本架构主要包含的是数据流入流出的过程,可以分为三层——源数据、数据仓库、数据应用:   从图中可以看出数据仓库的数据来源于不同的源数据,并提供多样的数据应用,数据自上而下流入数据仓库后向上层开放应用,而数据仓库只是中间集成化数据管理的一个平台,对应上图的层次结构如下: 源数据层(ODS):此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放; 细节层(DW):主题明细宽表、轻度汇总、跨主题域关联汇总、业务模型Cube;在此层看做口径的统一和沉淀,在此层之上可考虑建设信息中心(指标池) 应用层(DA):前端应用直接读取的数据源;根据报表、专题分析需求而计算生成的数据。   数据仓库从各数据源获取数据及在数据仓库内的数据转换和流动都可以认为是ETL(抽取Extra, 转化Transfer, 装载Load)的过程,ETL是数据仓库的流水线,也可以认为是数据仓库的血...
xrzs 发布于 3年前 阅读 24594 点赞 6

@OneToMany、@ManyToOne以及@ManyToMany讲解(五)

一、一对多(@OneToMany) 1、单向一对多模型 假设通过一个客户实体可以获得多个地址信息。 对于一对多的实体关系而言,表结构有两种设计策略,分别是外键关联和表关联。 (1) 映射策略---外键关联 在数据库中表customer和表结构address定义,如下: create table customer ( id int(20) not null auto_increment, name varchar(100), primary key(id) ) create table address ( id int(20) not null auto_increment, province varchar(50), city varchar(50), postcode varchar(50), detail varchar(50), customer_id int(20), primary key (id) ) 注意此时外键定义在多的一方,也就是address表中。  此时,表customer映射为实体CustomerEO,代码如下: @Entity @Table(name="customer") public class CustomerEO implements java.io.Serializable { @OneToMany(cascade={ CascadeType.ALL }) @JoinColumn(name="customer_id") private Collection<AddressEO> addresses = new ArrayList<AddressEO>(); ... } 注释@OneToMany的定义代码如下: @Target({METHOD, FIELD}) @Retention(RUNTIME) public @interface OneToMany { Class targetEnt...
半夏alvin 发布于 4年前 阅读 28294 评论 2 点赞 4

记一次处理MySql锁等待(Lock wait timeout exceeded)

最近项目部署到新环境中,新环境中总报 Lock wait timeout exceeded 。
-蒋全忠- 发布于 3年前 阅读 21204 点赞 3

为什么数据库读写分离可以提高性能

虽然知道处理大数据量时,数据库要做读写分离,但是为什么读写分离可以提高性能呢? 下面是搜来的一些解释,看看再说! 一 什么是读写分离        MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中 的从数据库。 当然,主服务器也可以提供查询服务。使用读写分离最大的作用无非是环境服务器压力。可以看下这张图:   二 读写分离的好处 1.增加冗余 2.增加了机器的处理能力 3.对于读操作为主的应用,使用读写分离是最好的场景,因为可以确保写的服务器压力更小,而读又可以接受点时间上的延迟。   三 读写分离提高性能之原因   1.物理服务器增加,负荷增加 2.主从只负责各自的写和读,极大程度的缓解X锁和S锁争用 3.从库可配置myisam引擎,提升查询性能以及节约系统开销 4.从库同步主库的数据和主库直接写还是有区别的,通过主库发送来的binlog恢复数据,但是,最重要区别在于主库向从库发送binlog是异步的,从库恢复数据也是异步的 5.读写分离适用与读远大于写的场景,如果只有一台服务器,当select很多时,update和...
candies 发布于 3年前 阅读 16914 评论 2 点赞 4

SQL的WHERE子句中包含多个AND和OR

SQL的WHERE子句中包含多个AND和OR
xxggy 发布于 3年前 阅读 13069 评论 2

经典SQL问题: 行转列

学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当作列。数据库grade里面数据如下图,假定每个人姓名都不一样,作为主键。本文以MySQL为基础,其他数据库会有些许语法不同。 数据库数据: 处理后效果: 下面介绍三种方法: 方法一: SELECTDISTINCT a.name, (SELECTscoreFROMgrade bWHEREa.name=b.nameANDb.course='语文')AS'语文', (SELECTscoreFROMgrade bWHEREa.name=b.nameANDb.course='数学')AS'数学', (SELECTscoreFROMgrade bWHEREa.name=b.nameANDb.course='英语')AS'英语' FROMgrade a 方法二: SELECTname, SUM(CASE courseWHEN '语文'THENscoreEND)AS'语文', SUM(CASE courseWHEN '数学'THENscoreEND)AS'数学', SUM(CASE courseWHEN '英语'THENscoreEND)AS'英语' FROMgradeGROUPBYname 方法三: DELIMITER && CREATE PROCEDURE sp_count() BEGIN #课程名称 DECLARE course_n VARCHAR(20); #所有课程数量 DECLARE count INT; #计数器 DECLARE i INT DEFAULT 0; #拼接SQL字符串 SET @s = 'SELECT name'; SET count = (SELECT COUNT(distinct course) FROM grade); WHILE i < count DO SET course_n = (SELECT course FROM grade...
闪电 发布于 2年前 阅读 21526

Mybatis之批量更新操作

更新单条记录 UPDATE course SET name = 'course1' WHERE id = 'id1'; 更新多条记录的同一个字段为同一个值 UPDATE course SET name = 'course1' WHERE id in ('id1', 'id2', 'id3); 更新多条记录为多个字段为不同的值 比较普通的写法,是通过循环,依次执行update语句。 Mybatis写法如下: <update id="updateBatch"  parameterType="java.util.List">       <foreach collection="list" item="item" index="index" open="" close="" separator=";">         update course         <set>             name=${item.name}         </set>         where id = ${item.id}     </foreach>       </update> 一条记录update一次,性能比较差,容易造成阻塞。 MySQL没有提供直接的方法来实现批量更新,但可以使用case when语法来实现这个功能。 UPDATE course     SET name = CASE id          WHEN 1 THEN 'name1'         WHEN 2 THEN 'name2'         WHEN 3 THEN 'name3'     END,      title = CASE id      ...
陈佳庆 发布于 2年前 阅读 31165 评论 7 点赞 8

postgreSQL(3) | databse、schema、数据类型

说明 内容未完成待补充。 零、database和schema 参看“postgreSQL(2)| 数据库管理” 一、数据类型 1、PostgreSQL支持: 数值、字符串、日期(时间)、布尔值、数组、带时区日期、区间、JSON、用户自定义、其他 1.1、数值类型 名称 描述 存储大小 范围 smallint 存储整数,小范围 2字节 -32768 至 +32767 integer 存储整数。使用这个类型可存储典型的整数 4字节 -2147483648 至 +2147483647 bigint 存储整数,大范围。 8字节 -9223372036854775808 至 9223372036854775807 decimal 用户指定的精度,精确 变量 小数点前最多为131072个数字; 小数点后最多为16383个数字。 numeric 用户指定的精度,精确 变量 小数点前最多为131072个数字; 小数点后最多为16383个数字。 real 可变精度,不精确 4字节 6位数字精度 double 可变精度,不精确 8字节 15位数字精度 serial 自动递增整数 4字节 1 至 2147483647 bigserial 大的自动递增整数 8字节 1 至 9223372036854775807 1.2、字符和字符串 数据类型 描述 char(size) 固定长度字符串。右边的空格填充到相等大小的字符。 character(size) 固定长度字符串。 右边的空格填充到相等大小的字符。 varchar(size) 变长度字符串。 charac...
猫咪要感冒 发布于 2天前 阅读 59

记一次mysql性能优化过程

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

order by

sql order by
Aeroever 发布于 3天前 阅读 49

武汉源创会现场漂亮小姐姐那么多,千里堵车也要来相会

有美食有美女的武汉站,就算千里堵车也要来相会,随着武汉站落幕,4月源创会行程圆满结束,武汉站所有分享PPT下载链接可在文末查看。
开源中国源创会

ORACLE 索引原理

ORACLE 索引
李狗蛋丶 发布于 3天前 阅读 45

NFS4中小企业存储实战

NFS简介: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21  NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。     NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。   RPC和NFS的关系:N...
乐搏学院 发布于 2天前 阅读 49

PostgreSQL_如何实现批量更新、删除、插入

标签 PostgreSQL , 批量 , batch , insert , update , delete , copy 背景 如何一次插入多条记录? 如何一次更新多条记录? 如何一次批量删除多条记录? 批量操作可以减少数据库与应用程序的交互次数,提高数据处理的吞吐量。 批量插入 批量插入1 使用insert into ... select的方法 postgres=# insert into tbl1 (id, info ,crt_time) select generate_series(1,10000),'test',now(); INSERT 0 10000 postgres=# select count(*) from tbl1; count ------- 10001 (1 row) 批量插入2 使用values(),(),...();的方法 postgres=# insert into tbl1 (id,info,crt_time) values (1,'test',now()), (2,'test2',now()), (3,'test3',now()); INSERT 0 3 批量插入3 BEGIN; ...多条insert...; END; 严格来说,这应该不属于批量,但是可以减少事务提交时的同步等待。同样有性能提升的效果。 postgres=# begin; BEGIN postgres=# insert into tbl1 (id,info,crt_time) values (1,'test',now()); INSERT 0 1 postgres=# insert into tbl1 (id,info,crt_time) values (2,'test2',now()); INSERT 0 1 postgres=# insert...
_夜枫 发布于 2天前 阅读 55

MySQL性能优化系列-02突破IO

来源:http://blog.csdn.net/yinwenjie 基础硬件条件 如果存储MySQL数据的底层硬件介质就只是一块机械磁盘,那么无论怎样优化MySQL的其它各参数,MySQL实际对磁盘的顺序I/O速度理论上也只有100MB/S左右。这还是不计算硬件层校验、不计算不同文件系统处理耗时等等时间,所以实际I/O速度只会更慢。 另外如果采用单块机械磁盘存储MySQL的数据,那么磁盘空间的扩容也是一个问题。目前市场上能买到的容量最大的单块机械磁盘,它的存储空间也只有10TB。当这部分容量使用完后想要进行扩容就基本上是就一个不可能完成的任务了。最后这种存储方式还有安全性的问题,单块机械磁盘在持续的高I/O环境下是很容易损坏的,只要是有一定资金支持的公司,机械磁盘本身就看做耗材。 所以即使是初创型公司的线上生产环境,本文也不推荐使用单块机械磁盘存储任何需要持久保存的业务数据。如果是因为资金问题,则推荐使用一些云服务商提供的现成PaaS环境,原因是这些PaaS环境本身就支持数据恢复功能,且利用云服务商已经建设好的价格不菲的硬件/软件环境,MySQL数据库的I/O性能和计算性能暂时还不会成为业务系统的瓶颈。...
Black_Lands 发布于 2天前 阅读 45

Navicat连接oracle,出现Only compatible with oci version 8.1 and higher. your version:0.0.0.0.0

1.今天突然遇到这个问题,前几天都能正常使用 2.期间我只做了一件事,安装了mysql数据库 3.问题就在装mysql数据库上,于是我去看了环境变量,发现客户端早path里不见了 ---------------------以下是环境变量的设置------------------------------ 1.查看TNS_ADMIN 2.查看NLS_LANG 3.查看PATH 很明显少了TNS_ADMIN 中客户端的路径 4.新建一个Oracle客户端路径 5.点击确认,保存 6.重启Navicat测试 7.链接成功,如果没有成功,请再次查看环境变量是否正确,如果正确,确认是否重启Navicat 8.如果还是没有成功链接Oracle,说明这个方法对你无效,请在尝试其他办法吧
寻尘KI 发布于 3个月前 阅读 771

惠侨sql培训题

20170423,离职后的第一个周六,去公司听了sql的培训课。做了一下题目。对答案作了一下上机测试。整理如下,仅供参考
我只是一只小小鸟 发布于 4天前 阅读 26

使用batch-import工具向neo4j中导入海量数据

在开发neo4j的过程中,经常会有同学问如何向neo4j中导入大量的历史数据,而这些数据一般都会存在于关系型数据库中,现在本人就根据自己的导入经历,把导入的过程和一些挖过的坑分享给大家,以便后面的同学少走弯路,废话不多说,直接上干货。 1、batch-import原始项目地址:https://github.com/jexp/batch-import     这个工具是neo4j的作者之一Michael Hunger所编写,是在neo4j自带批量导入工具基础之上做的进一步优化,但是它在导入.gz压缩文件时,会出现关系无法导入的情况,所以如果要使用.gz压缩包进行导入,请使用我修改过的版本:https://github.com/mo9527/batch-import 2、环境准备     jdk:7以上     内存:8G以上,导入数据多的话会非常消耗内存,我自己导入的是将近1.5亿节点,3亿关系,用的是32G内存 3、导入步骤     a)从github上clone下代码,并使用maven进行打包,打完包后的jar文件,与项目本身的依赖jar一起放到lib文件夹下,batch.properties文件和执行导入的脚本放在lib同级目录下,最后的目录结构如下图:          ps:file文件夹是我自己将要导入的csv文件和.gz压缩包。     b)组装csv文件         说起这一步,可能需要你们...
T_SevenS 发布于 1周前 阅读 170

PHP商城 商品模块 数据库 表设计

表关系: 分类表 <= 商品表 <= SKU表(库存表) 分类表 <= 属性名 <= 属性值 商品表 <= 商品和属性关系表 => 属性名|属性值 业务逻辑: 1.同一商品不同SKU库存和售价不同. 2.不同类型的商品具有不同的属性名和属性值(如汽车和服饰),所以属性需要支持后期添加和维护. 3.在某个商品分类下通过属性筛选商品. 4.商家某件商品的销量统计,该件商品内几个不同SKU的销量统计. 5.更多... 分类表: (商品分类编号, 分类名称, 父分类编号) (1, 男装, 0) (2, 裤子, 1) (3, 外套, 1) (4, 内裤, 1) (5, 袜子, 1) 商品表: (商品编号, 商品名称, 商品分类编号, 卖家编号, SPU销量, 评论数) (1, '裤子名', 2, 1, 0) (2, '外套名', 3, 1, 0) (3, '内裤名', 4, 1, 0) (4, '袜子名', 5, 1, 0) SKU表(库存表): (SKU编号, 商品编号, SKU属性, 价格, 库存, SKU销量) (1, 1, [1:1,2:3], 99, 400, 0) 其中 [1:1,2:3] 表示 "颜色为黑色,尺码为X" (2, 1, [1:1,2:4], 99, 200, 0) 其中 [1:1,2:4] 表示 "颜色为黑色,尺码为XL" (3, 1, [1:2,2:3], 99, 300, 0) 其中 [1:2,2:3] 表示 "颜色为白色,尺码为X" (4, 1, [1:2,2:4], 99, 100, 0) 其中 [1:2,2:4] 表示 "颜色为白色,尺码为XL" 上面只列出商品1这个分类的...
eechen 发布于 1个月前 阅读 269 评论 25

postgreSQL(1)|安装(Ubuntu)、配置

说明 待补充 PostgreSQL安装参考 《一天学会PostgreSQL应用开发与管理》阿里云社区 PostgreSQL角色和权限 PostgreSQL中database、table、schema三者关系 PostgreSQL模式(架构) PostgreSQL中的schema 一、安装 1、安装 使用如下命令,会自动安装最新版,这里为9.5 sudo apt-get install postgresql 安装完成后,默认会: (1)创建名为"postgres"的Linux用户 (2)创建名为"postgres"、不带密码的默认数据库账号作为数据库管理员 (3)创建名为"postgres"的表 安装完成后的一些默认信息如下: config        /etc/postgresql/9.5/main  data           /var/lib/postgresql/9.5/main  locale        en_US.UTF-8  socket       /var/run/postgresql  port            5432 2、生成的默认数据库 3、psql命令 安装完后会有PostgreSQL的客户端psql,通过 sudo -u postgres psql 进入,提示符变成: postgres=#   在这里可用执行SQL语句和psql的基本命令。可用的基本命令如下: \password:设置密码 \q:退出 \h:查看SQL命令的解释,比如\h select。 \?:查看psql命令列表。 \l:--list databases \c [database_name]:连接其他数据库。 \d...
猫咪要感冒 发布于 3天前 阅读 17

redis 高可用(HA)集群方案

redis ha 集群
善若水_道酬勤 发布于 4天前 阅读 14

SQL LIKE 操作符

SQL LIKE 操作符 LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 下面的 SQL 语句选取 name 以字母 "G" 开始的所有客户: 实例 SELECT * FROM Websites WHERE name LIKE 'G%'; 执行输出结果: 提示:"%" 符号用于在模式的前后定义通配符(缺省字母)。您将在下一章中学习更多有关通配符的知识。 下面的 SQL 语句选取 name 以字母 "k" 结尾的所有客户: 实例 SELECT * FROM Websites WHERE name LIKE '%k'; 执行输出结果: 下面的 SQL 语句选取 name 包含模式 "oo" 的所有客户: 实例 SELECT * FROM Websites WHERE name LIKE '%oo%'; 执行输出结果: 通过使用 NOT 关键字,您可以选取不匹配模式的记录。 下面的 SQL 语句选取 name 不包含模式 "oo" 的所有客户: 实例 SELECT * FROM Websites WHERE name NOT LIKE '%oo%'; 执行输出结果:    
梦梦阁 发布于 3天前 阅读 13

5步搞定CentOS6.7上MongoDB副本集搭建

如果只有一个节点或者使用Master-Slave模式,存在主机挂掉后“单点失效”的问题。通过使用Mongo DB副本集,可以提高容错性和可用性~~ 
王孟君 发布于 2个月前 阅读 427

聊聊MongoDB(一)MongoDB3.4基础介绍

介绍其3.2版本以后MongoDB的特性
lzhaoqiang 发布于 2个月前 阅读 112 点赞 1

数据库学习建议之提高数据库速度的十条建议

很多网站的重要信息都是保存在数据库中的,用户通过提交访问数据库来获取用户信息。如果数据库速度非常的快,有助于节省服务器的资源,在这篇文章中,我收集了十个优化数据库速度的技巧。 0. 小心设计数据库 第一个技巧也许看来理所当然,但事实上大部分数据库的问题都来自于设计不好的数据库结构。 譬如我曾经遇见过将客户端信息和支付信息储存在同一个数据库列中的例子。对于系统和用数据库的开发者来说,这很糟糕。 新建数据库时,应当将信息储存在不同的表里,采用标准的命名方式,并采用主键。 来源: http://www.simple-talk.com/sql/database-administration/ten-common-database-design-mistakes/ 1. 清楚你需要优化的地方 如果你想优化某个查询语句,清楚的知道这个语句的结果是非常有帮助的。采用EXPLAIN语句,你将获得很多有用的信息,下面来看个例子: 1 EXPLAIN SELECT * FROM ref_table,other_table WHERE ref_table.key_column=other_table.column; 来源: http://dev.mysql.com/doc/refman/5.0/en/using-explain.html 2. 最快的查询语句…是那些你没发送的语句 每次你向数据库发送一条语句,你都会用掉很多服务器资源。所以在很高流量的网站中,最好的方法...
slagga 发布于 3天前 阅读 10

用PHP+MySQL实现12306购票和退票以及余票查询逻辑

车票表: (车次, 区间, 已售) (1024, [1,2], 0) (1024, [1,2,3], 0) (1024, [1,2,3,4], 0) (1024, [2,3], 0) (1024, [2,3,4], 0) (1024, [3,4], 0) 主键是自增字段,给"车次"字段添加索引. 优化并发时,可以考虑根据"车次"进行分表分库. 区间[1,2,3]的含义是:从车站1上车,经过车站2,到车站3下车. 购票逻辑: 例如用户购买区间[2,3,4]的票时, 程序找出包含[2,3,4]的区间如[1,2,3,4]已售的票, 以及[2,3,4]包含的子区间如[2,3]和[3,4]已售的票, 如果三者的票合计小于500(这里假设列车满载为500人), 则用户能够购票,即[2,3,4]这个区间已售的票数+1. SQL购票逻辑如下(以MySQL为例): SET AUTOCOMMIT=0; BEGIN WORK; --开启事务 select 已售 from 车票表 where 车次=1024 and 区间 in ('2,3,4', '2,3', '3,4', '1,2,3,4') for update; update 车票表 set 已售=(已售+1) where 车次=1024 and 区间='2,3,4'; COMMIT WORK; --提交事务 SET AUTOCOMMIT=1; 其中 select for update 的作用是读上锁(对读出的行上写锁),依赖事务. 上述购票逻辑,关键在于找到where条件in中的区间,步骤如下: 1.找出包含一个区间如[2,3,4]的其他区间: select 区间 from 车票表 where 车次=10...
eechen 发布于 1个月前 阅读 479 评论 22 点赞 2

mysql 5.7 配置多实例 — 独立配置文件方式

各实例使用独立配置文件
big_cat 发布于 4周前 阅读 55 点赞 1

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

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

七、mysql explain

version:5.5
图样图森破 发布于 57分钟前 阅读 6

七、mysql online DDL

version:5.6
图样图森破 发布于 2小时前 阅读 1

postgreSQL(4)|表、约束、索引

参看链接 PG创建表 零、表 PG提供:普通表、临时表、无日志表、继承表、基于复合类型表、外部表 1. 创建表     CREATE TABLE tb_products (         id integer,         name text,         price numeric     ); 1.1 创建带有缺省值的表     CREATE TABLE tb_products (         id integer,         name text,         price numeric DEFAULT 9.99 --DEFAULT关键字,9.99是字段price的默认值。     );          CREATE TABLE tb_products (         id SERIAL,   --SERIAL自增字段, autonumber         name text,         price numeric DEFAULT 9.99     ); 2. 删除表     DROP TABLE tb_products; 3. 约束 约束类型:外键约束、唯一性约束、检查约束、排他性约束 3.1检查约束      字段里的数值必须满足一个布尔表达式。此外,也可以声明表级别的检查约束。     CREATE TABLE tb_products (         id integer,         name text,         --price字段的值必须大于0,否则插入或修改该字段值,将引发错误。         --匿名约束,PostgreSQL将会根据当前的表名、字段名和约束类...
猫咪要感冒 发布于 2小时前 阅读 37

六、mysql 事务

version:5.5
图样图森破 发布于 3小时前 阅读 1

postgreSQL(2)| 数据库管理

数据库管理 1、Role login role:拥有数据库的登录权限 member role:一个role继承其他role的权限,从而成为member role group role:拥有member role的role ###问题:角色不存在 1.1  创建、删除、查询 创建可login role 创建group role 删除role 查询role \du 1.2  Role属性  一个数据库角色可以有一系列属性,这些属性定义他的权限,以及与客户认证系统的交互。     1. 登录权限:     只有具有LOGIN属性的角色才可以用于数据库连接,具有该属性的角色视为登录用户,创建方法:     CREATE    ROLE       name      LOGIN      PASSWORD    '123456';     CREATE    USER       name      PASSWORD   '123456';         2. 超级用户:    和创建普通用户不同,创建超级用户必须是以超级用户的身份执行以下命令:     CREATE     ROLE      name     SUPERUSER;         3. 创建数据库:     角色要想创建数据库,必须明确赋予创建数据库的属性,见如下命令:     CREATE    ROLE       name     CREATEDB;         4. 创建角色:     一个角色要想创建更多角色,必须明确给予创建角色的属性,...
猫咪要感冒 发布于 4小时前 阅读 3

深度认识 Sharding-JDBC:做最轻量级的数据库中间层

Sharding-JDBC 采用在 JDBC 协议层扩展分库分表,是一个以 jar 形式提供服务的轻量级组件,其核心思路是小而美地完成最核心的事情。
编辑部的故事 发布于 6小时前 阅读 97 点赞 1

Postgresql中Kill掉正在执行的SQL语句

查看哪些SQL语句正在执行,语句如下: SELECT datname,procpid,query_start, current_query,waiting,client_addr FROM pg_stat_activity WHERE waiting='t'; 说明: datname表示数据库名 procpid表示当前的SQL对应的PID query_start表示SQL执行开始时间 current_query表示当前执行的SQL语句 waiting表示是否正在执行,t表示正在执行,f表示已经执行完成 client_addr表示客户端IP地址 kill有两种方式,第一种是: SELECT pg_cancel_backend(PID); 这种方式只能kill select查询,对update、delete 及DML不生效) 第二种是: SELECT pg_terminate_backend(PID); 这种可以kill掉各种操作(select、update、delete、drop等)操作
诺诺 发布于 7小时前 阅读 5

OSChina 的留言表设计说明和OSChina 用户动态设计

OSChina 的留言表 osc_msgs ,表结构如下: 字段说明: id : 留言主键字段,自增长 user : 留言的主人 friend : 对方的ID sender : 留言发送者 receiver : 留言接收者 type : 留言类型(普通消息、系统消息) content : 留言内容 send_time : 发送时间 read_time : 阅读时间 status : 留言状态 其中 user 和 friend 稍显特殊,其他的字段意义已非常明确不再说明。 当 A 给 B 发送一条留言时,会往 osc_msgs 表中插入两条相同的记录,唯一不同的是 user 和 friend 这两个字段的值是对调的,当然 id 因为是自增长的所以也不同。 为什么要这么做? 1. 一条留言保存两条记录:因为每个人都有收到的留言和已发送留言,当发送人删除了已发送留言,不会影响到接收人查看收到的留言 2. user/friend/sender/receiver 这四个字段是不是多余? 关键的问题就在于此,你还记得 osc 的留言箱吗?进入留言箱里显示的是你最近的留言往来,包含你接收到的和你发出的,它们是按照时间进行排序的。 假设只有 sender/receiver 这两个字段,那么要将接收和发送的留言放在一起,就必须用 UNION 来合并两个查询结果,然后再做排序,而且你还必须有个字段来标注到底是接收到的留言还是发出的留言。这...
一贱书生 发布于 9小时前 阅读 1

MySQL 线程池内幕

摘要 在MySQL中,线程池指的是用来管理处理MySQL客户端连接任务的线程的一种机制,我厂用的percona版本已经是集成了线程池,只需要通过如下参数开启即可。 thread_handling=pool-of-threads 1 thread_handling=pool-of-threads 本文在介绍MySQL线程池核心参数的基础之上对线程池内部实现机制进行进一步介绍。 线程池导读 线程池概论 在继续了解MySQL线程池之前,我们首先要了解为什么线程池的引入可以帮助MySQL提升性能,除了性能之外线程池还有哪些作用?如果把线程看做系统资源那么线程池本质上是对系统资源的管理,对于操作系统来说线程的创建和销毁是比较消耗系统资源的,频繁的创建与销毁线程必然给系统带来不必要的资源浪费,特别是在负载高的情况下这部分开销严重影响系统的资源使用效率从而影响系统的性能与吞吐量,另一方面过多的线程创建又会造成系统资源的过载消耗,同时带来相对频繁的线程之间上下文切换问题。系统资源是宝贵的,我认为性能与资源的利用率是紧密相关的: 资源利用率与性能的同向性 他们往往向着一个方向发展,好的资源利用与通常可以带来较优的性能,线程池技术一方面可以减少线程重复创建与销毁这部分开销,从而更好地利用已经创建的线程资源...
一贱书生 发布于 9小时前 阅读 1

MySQL 主从复制搭建,基于日志(binlog)

什么是MySQL主从复制 简单来说,就是保证主SQL(Master)和从SQL(Slave)的数据是一致性的,向Master插入数据后,Slave会自动从Master把修改的数据同步过来(有一定的延迟),通过这种方式来保证数据的一致性,就是主从复制。 MySQL主从能解决什么问题 一、高可用 因为数据都是相同的,所以当Master挂掉后,可以指定一台Slave充当Master继续保证服务运行,因为数据是一致性的(如果当插入Master就挂掉,可能不一致,因为同步也需要时间),当然这种配置不是简单的把一台Slave充当Master,毕竟还要考虑后续的Salve同步Master,当然本文并不是将高可用的配置,所以这里就不多讲了。 二、负载均衡 因为读写分离也算是负载均衡的一种,所以就不单独写了,因为一般都是有多台Slave的,所以可以将读操作指定到Slave服务器上(需要代码控制),然后再用负载均衡来选择那台Slave来提供服务,同时也可以吧一些大量计算的查询指定到某台Slave,这样就不会影响Master的写入以及其他查询 三、数据备份 一般我们都会做数据备份,可能是写定时任务,一些特殊行业可能还需要手动备份,有些行业要求备份和原数据不能在同一个地方,所以主从就能很好的解决这个问题,不仅备份及时,而且还可...
一贱书生 发布于 9小时前 阅读 1

oracle

获得uuid(32位)  :  select sys_guid() from dual 会产生一个跟MAC地址、生成时间相关的一个32位16进制的随机数。   同一张表中复制树形结构: --复制表数据 create table ETMT_SUBJECT_CP as select * from ETMT_SUBJECT; -- 新增一个uuid字段 alter table ETMT_SUBJECT_CP add uuid VARCHAR2(50); -- 为每条记录生成一个uuid UPDATE ETMT_SUBJECT_CP t SET t.uuid = sys_guid(); --获取复制的树的结构,新的id为uuid,新的parent_id为puuid SELECT tt.id,tt.parent_id,tt.subject_name,tt.uuid,tt2.uuid puuid FROM etmt_subject_cp tt LEFT JOIN etmt_subject_cp tt2 ON tt2.id = tt.parent_id; --将上述结果集插入原来的表中 INSERT INTO etmt_subject SELECT tt.uuid,tt2.uuid puuid,tt.subject_name,t.~~~ FROM etmt_subject_cp tt LEFT JOIN etmt_subject_cp tt2 ON tt2.id = tt.parent_id; ---删除临时过渡表 DROP ETMT_SUBJECT_CP;  ...
行走AZ间 发布于 9小时前 阅读 2

Oracle 修改数据库编码

数据无价,操作前请先备份。
fengzhi714 发布于 10小时前 阅读 3

Java嵌入式数据库H2学习总结

这两篇总结的不错 Java嵌入式数据库H2学习总结(一)——H2数据库入门 http://www.cnblogs.com/xdp-gacl/p/4171024.html Java嵌入式数据库H2学习总结(二)——在Web应用程序中使用H2数据库 http://www.cnblogs.com/xdp-gacl/p/4171278.html
foodon 发布于 12小时前 阅读 8

mysqldump 失败

mysqldump 失败 背景交代 mysql版本:mysql Ver 14.14 Distrib 5.7.11, for Linux (x86_64) using EditLine wrapper os:Linux version 3.13.0-24-generic (buildd@panlong) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #46-Ubuntu SMP   问题: 在备份数据库时报如下问题 command:   root@localhost:/home/ls# mysqldump -u root -p test > test.sql problem:   mysqldump: Couldn't execute 'SHOW VARIABLES LIKE 'gtid\_mode'': Table 'performance_schema.session_variables' doesn't exist (1146) 网上锁了好多解决办法,什么使用“--set-gtid-grupe=off”参数等。试了都没有起到任何作用。 最后在万能的stackoverflow上找到了答案   http://stackoverflow.com/questions/33270703/error-1142-select-command-denied-on-session-variables-table-with-mysqldump   具体的解决办法:     1)mysql_upgrade -u root -p --force #更新         2)service mysql restart  #restart mysql service     3)mysqldump -u root -p test > test.sql #重新备份数据 找到了解决办法,肯定要知道是什么原因导致的该问题,要不然出去吹牛都不知道怎...
元禛慎独 发布于 13小时前 阅读 1

解决javaweb项目--中文汉字存入mysql5.5中变成乱码的方法

mysql乱码
YK_IT 发布于 14小时前 阅读 3

sql 交集 差集

sql中获取两个表的并集和差集
李阳-kevin 发布于 14小时前 阅读 2

五、mysql 常用函数

version:5.5
图样图森破 发布于 1天前 阅读 21

四、mysql 查询

version:5.5
图样图森破 发布于 1天前 阅读 2

mysql5.5忘记密码重置方法

在mysql的bin目录下进行操作 1.在进程中关闭 mysqld.exe   2.在bin目录下> mysql  -nt  --skip-grant-tables 3.    新开一个dos命令窗口     在bin目录下> mysql  -u  root 4. 修改密码 USE mysql; SELECT * FROM USER; UPDATE  USER SET  PASSWORD=PASSWORD('你的密码')  WHERE  USER='root'; 修改成功!    重启mysql 控制面板 ---> 系统和安全  --->  管理工具  ---> 服务 ---> mysql 重新启动      
YK_IT 发布于 1天前 阅读 2

Mysql5.5安装未响应解决方法

 
YK_IT 发布于 1天前 阅读 21

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

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

记一次mysql性能优化过程

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

NoSQL介绍

对nosql出现背景、nosql类型做介绍,并解答nosql相关问题
lzhaoqiang 发布于 2个月前 阅读 1429 评论 1 点赞 4

武汉源创会现场漂亮小姐姐那么多,千里堵车也要来相会

有美食有美女的武汉站,就算千里堵车也要来相会,随着武汉站落幕,4月源创会行程圆满结束,武汉站所有分享PPT下载链接可在文末查看。
开源中国源创会

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

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

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

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

MySQL应用优化

本文从MySQL语句优化、引擎选择、数据库设计三个方面介绍如何进行MySQL应用优化
lonelydawn 发布于 10个月前 阅读 4000 评论 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_君羊 发布于 1年前 阅读 4725 评论 25 点赞 10

Couchbase 中的分布式储存

Couchbase 是一个具有高性能、可扩展性和可 用性强的数据库引擎。它可以让开发人员通过 NoSQL 的键值存储(二进制或者JSON)或者使用 N1QL 的形式对数据进行操作(N1QL 是非常类似于 SQL 的一种语法操作 JSON 数据的方式)。以现在整体架构来看,Couchbase 是往分布式数据库的方向发展下去。
极光推送 发布于 1年前 阅读 1741 评论 2 点赞 8

postgresql利用pg_upgrade大版本升级(8.4到9.5)

本文利用pg_upgrade实现将8.4.18版本升级到9.5.0版本,8.4.18版本为RedHat系统自带pg数据库版本。
Splace 发布于 1年前 阅读 2285 评论 8 点赞 8

SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用

SQLite是一个开源的嵌入式关系数据库,其小巧简洁快速的特性十分易于应用于移动应用数据管理中。
珲少 发布于 1年前 阅读 5668 评论 6 点赞 8

利用pgpool实现PostgreSQL的高可用

这里利用pgpool-ii实现PG的高可用。
PGSmith 发布于 1年前 阅读 3616 评论 8 点赞 12

MySQL 分区表

今天统计数据的时候发现一张表使用了表分区,借此机会记录一下。 ### 1. 什么是表分区? 表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分。从逻辑上看,只有一张表,但是底层却是由多个物理分区组成。 ### 2. 表分区与分表的区别 分表:指的是通过一定规则,将一张表分解成多张不同的表。比如将用户订单记录根据时间成多个表。 分表与分区的区别在于:分区从逻辑上来讲只有一张表,而分表则是将一张表分解成多张表。 ### 3. 表分区有什么好处? 1)分区表的数据可以分布在不同的物理设备上,从而高效地利用多个硬件设备。 2)和单个磁盘或者文件系统相比,可以存储更多数据 3)优化查询。在where语句中包含分区条件时,可以只扫描一个或多个分区表来提高查询效率;涉及sum和count语句时,也可以在多个分区上并行处理,最后汇总结果。 4)分区表更容易维护。例如:想批量删除大量数据可以清除整个分区。 5)可以使用分区表来避免某些特殊的瓶颈,例如InnoDB的单个索引的互斥访问,ext3问价你系统的inode锁竞争等。 ### 4. 分区表的限制因素 1)一个表最多只能有1024个分区 2) MySQL5.1中,分区表达式必须是整数,或者返回整数的表达式。在M...
一条大河波浪宽 发布于 1年前 阅读 12035 评论 19 点赞 29

利用系统缓存提高PostgreSQL操作效率

近期,试用pgfincore,对此做一个实验记录。pgfincore是将数据库对象提前加载到OS cache中,加快操作效率。当有一顶的物理更改时,pgfincore也会将其加载到缓存中。主要是提高查询效率的,当有频繁的缓存交换时,有可能会被挤出缓存。
PGSmith 发布于 1年前 阅读 3689 点赞 7

Oracle迁移PostgreSQL经验总结(SQL部分,未完待续)

Oracle迁移PostgreSQL数据库经验总结(SQL部分,未完待续),本文只包括了我工作中接触到或者用到的技术点,其实两个数据库设计上的差异是很大的,但是Oracle数据库有的功能,PostgreSQL大体上也都能实现
李玉珏 发布于 1年前 阅读 5774 评论 14 点赞 18

Postgres-X2部署步骤

利用pgxc_ctl部署Postgres-X2步骤。
PGSmith 发布于 1年前 阅读 2707 评论 4 点赞 5

[用事实说明两个凡是]一个由mysql事务隔离级别造成的问题分析

# 背景 最近要做一个批跑服务, 基本逻辑就是定时扫描数据库的记录, 有满足条件的就进行处理(一条记录代表一个任务,以下任务与记录含义相同). 要求支持多机部署批跑服务. # 批跑支持多机部署实现方案 要实现多机部署, 只要保证每个批跑服务实例每次只获取一条记录, 处理完再获取下一条即可. 其中最种要的是避免不同的实例获取到同一条记录,即所谓抢任务. 先看表结构设计: ~~~sql create database if not exists ae; create table ae.task ( id int primary key, status int); -- status为0说明任务可处理,其它不可处理 ~~~ 以上是简化的表结构,但足以说明本文试图说明的问题. 要避免抢任务, oracle的做法, 直接 ~~~sql update ae.task set status=1 where status=0 and rownum = 1 returning id ~~~ 即可. mysql的要啰嗦一点: ~~~sql select id from ae.task where status=0; -- 得到ID update ae.task where id = ${id} and status=0; ~~~ 这两个sql,第一个sql用于获取符合条件的任务, 第二个sql用户将任务锁定. 在并发的场景下, 有可能不同的批跑实例的第一个SQL会返回相同的记录, 但第二个sql只有一个会更新成功, 通过判断`affected rows`即可知道哪个锁定成功. 锁定成功...
周翼翼 发布于 1年前 阅读 3659 评论 44 点赞 4

Cassandra研究报告

场景:cassandra技能Get
啊莫 发布于 1年前 阅读 2577 评论 8 点赞 7
顶部