数据库
文章平均质量分 71
数据库
猴子哥哥1024
用技术改变生活,程序猿可以改变世界!!!
展开
-
MongoDB简介
MongoDB是一个基于分布式文件存储的NoSQL型数据库,底层数据结构为BSON(Binary JSON) 1、分布式文件存储,数据库文件会被存储到多台机器上,并进行一定冗余,伸缩性强,理论上无存储容量上限,且天然具备灾备功能 2、MongoDB使用的是内存映射存储引擎,它会把磁盘IO操作转换成内存操作,如果是读操作,内存中的数据起到缓存的作用,如果是写操作,内存还可以把随机的写操作转换成顺...原创 2018-04-09 15:14:48 · 228 阅读 · 0 评论 -
MongoDB单个集合的备份与还原命令
一、集合备份mongoexport -h 集合所在服务器地址 -d 数据库 -c 集合 -o 本地文件存储位置注:文件格式可选json、cvs等官方参数说明:mongoexport --help二、集合还原mongoimport --host 目标IP --port 目标端口 --db 目标数据库 --collection 目标集合 --file 备份文件所在位置官原创 2016-07-25 17:44:42 · 4756 阅读 · 0 评论 -
分布式事务:两阶段提交、一阶段提交、事务补偿机制
1.XAXA是由X/Open组织提出的分布式事务的规范。XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口。XA接口是双向的系统接口,在事务管理器(Transaction Manager)以及一个或多个资源管理器(Resource Manager)之间形成通信桥梁。XA之所以需要引入事转载 2017-11-13 17:26:47 · 5928 阅读 · 0 评论 -
JDBC实现连接池
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util原创 2017-06-19 22:01:30 · 551 阅读 · 0 评论 -
解决缓存与数据库一致性问题
1、引用缓存的好处 1)提高性能;2)减缓数据库压力;3)提高系统并发处理能力2、引用缓存的问题 1)处理逻辑变得复杂;2)使用不当,容易引起缓存和数据库数据不一致的问题3、数据不一致的原因 缓存操作与数据库操作不是原子操作,当一方操作成功、另一方操作失败时就会造成数据不一致问题4、不同情况下常用处理方法原创 2017-02-21 11:18:01 · 7587 阅读 · 0 评论 -
linux下安装mysql
下载地址:http://mirrors.sohu.com/mysql/我用的是MySQL-5.6.33-1.rhel5.i386.rpm-bundle安装步骤:1)解压压缩包,上传MySQL-server-5.6.33-1.rhel5.i386.rpm和MySQL-client-5.6.33-1.rhel5.i386.rpm到linux服务器2)安装mysql-server:rpm原创 2016-11-19 15:49:51 · 738 阅读 · 0 评论 -
MySQL order by和limit混用的坑
在Mysql中我们常常用order by来进行排序,使用limit来进行分页,当需要先排序后分页时我们往往使用类似的写法select * from 表名 order by 排序字段 limt M,N。但是这种写法却隐藏着较深的使用陷阱。在排序字段有数据重复的情况下,会很容易出现排序结果与预期不一致的问题。官方文档:https://dev.mysql.com/doc/refman/5.7/en/l...转载 2019-01-23 23:28:24 · 1913 阅读 · 0 评论 -
关系型数据库 非关系型数据库 区别、使用场景
非关系型数据库的优势: 1、性能 NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高 2、可扩展性 同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。 3、使用场景:日志、埋点、论坛、博客等关系型数据库的优势: 1、 复杂查询 可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询 2、事务支持 ...原创 2018-04-09 09:24:47 · 5078 阅读 · 0 评论 -
Explain详解
MySQL 查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行。最终目标是提交 SELECT 语句查找数据行,而不是排除数据行。优化器试图排除数据行的原因在于它排除数据行的速度越快,那么找到与条件匹配的数据行也就越快。如果能够首先进行最严格的测试,查询就可以执行地更快。 EXPLAIN 的每个输出行提供一个表的相关信息,并且每个行包括下面的列...转载 2018-04-08 10:24:00 · 472 阅读 · 0 评论 -
B-Tree与B+Tree
B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这些树逐步优化而来。二叉查找树二叉树具有以下性质:左子树的键值小于根的键值,右子树转载 2018-04-07 10:27:49 · 437 阅读 · 0 评论 -
MySQL索引
一、索引作用1、快速定位,目录的作用 2、唯一索引进行唯一约束二、索引分类1、普通索引:一般的索引,没有什么特殊 2、唯一索引:唯一性约束,不允许其中任何两行具有相同索引值的索引,一个表可有多个唯一索引 3、主键索引:唯一性约束,主键,一个表只有一个主键索引 4、组合索引:多个字段组合而成的索引三、索引实现1、B-Tree:平衡多路查找树,每个节点上都有一个或多...原创 2018-04-07 10:17:37 · 195 阅读 · 0 评论 -
mysql 触发器
MySQL 触发器原创 2017-04-19 19:09:55 · 1460 阅读 · 0 评论 -
INSERT INTO … SELECT 锁表问题
情景一:insert into table1 ...select * from table2:table1锁表,table2逐步锁(扫描一个锁一个)情景二:insert into table1 ...select * from table2 order by 主键:table1锁表,table2逐步锁(扫描一个锁一个)情景三:insert into table1 ...select原创 2017-04-18 17:41:51 · 15818 阅读 · 3 评论 -
mysql-replay-module
tcpcopy-module mysql-replay-module翻译 2016-11-05 00:06:15 · 1730 阅读 · 0 评论 -
MySQL存储引擎介绍
MysQL采用插件式存储引擎结构,也就是说支持热插拔,更改底层存储引擎时不用停止服务就可以完成,MySQL作为一个开源数据库,除自带的MyISAM还有很多其他存储引擎可供替换,本文主要对这些存储引擎做一个简单的介绍。1、MyISAM存储引擎 1)MyISAM支持三种类型的索引:B-Tree索引、R-Tree索引、Full-text索引 注:B-Tree索引中原创 2016-09-05 23:45:51 · 539 阅读 · 0 评论 -
MySQL逻辑模块组成
MySQL可以看成是两层架构,第一层SQL Layer,在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断、Query解析、执行计划优化、query cache的处理等;第二层是存储引擎层,即底层数据存取操作实现部分,由多种存储引擎共同组成。 本篇主要介绍SQL Layer层,即逻辑模块的组成。1)初始化模块:对整个系统做各种各样的初始化操作2)核心原创 2016-09-05 23:17:36 · 1060 阅读 · 0 评论 -
MySQL物理文件组成
(一)日志文件1、错误日志 错误日志记录了MySQL Server运行过程中所有较为严重的警告和错误信息,以及MySQL Server每次启动和关闭的详细信息。在默认情况下是关闭的,若要开启该功能需要在启动时开启log-error选项,默认存放在数据目录下,以hostname.err命名,可在配置中(以下不说明均指my.cnf)加入:log-error=“D:\mysql.err”,原创 2016-09-03 11:56:50 · 619 阅读 · 0 评论 -
数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案
作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段。简单地说,Sharding就是将原来单一数据库按照一定的规则进行切分,把数据分散到多台物理机(我们称之为Shard)上存储,从而突破单机限制,使系统能以Scale-Out的方式应对不断上涨的海量数据,但是这种切分对上层应用来说是透明的,多个转载 2016-08-31 21:12:36 · 559 阅读 · 0 评论 -
数据库分库分表(sharding)系列(四) 多数据源的事务处理
分布式事务这是最为人们所熟知的多数据源事务处理机制。本文并不打算对分布式事务做过多介绍,读者可参考此文:关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究 。在这里只想对分布式事务的利弊作一下分析。优势:1. 基于两阶段提交,最大限度地保证了跨数据库操作的“原子性”,是分布式系统下最严格的事务实现方式。2. 实现简单,工转载 2016-08-31 21:10:50 · 436 阅读 · 0 评论 -
数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量
一、sharding逻辑的实现层面从一个系统的程序架构层面来看,sharding逻辑可以在DAO层、JDBC API层、介于DAO与JDBC之间的Spring数据访问封装层(各种spring的template)以及介于应用服务器与数据库之间的sharding代理服务器四个层面上实现。图1. Sharding实现层面与相关框架/产品转载 2016-08-31 21:09:47 · 652 阅读 · 0 评论 -
数据库分库分表(sharding)系列(二) 全局主键生成策略
第一部分:一些常见的主键生成策略一旦数据库被切分到多个物理结点上,我们将不能再依赖数据库自身的主键生成机制。一方面,某个分区数据库自生成的ID无法保证在全局上是唯一的;另一方面,应用程序在插入数据之前需要先获得ID,以便进行SQL路由。目前几种可行的主键生成策略有:1. UUID:使用UUID作主键是最简单的方案,但是缺点也是非常明显的。由于UUID非常的长,除占用大量存储转载 2016-08-31 21:08:16 · 441 阅读 · 0 评论 -
数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示
第一部分:实施策略图1.数据库分库分表(sharding)实施策略图解(点击查看大图)1.准备阶段对数据库进行分库分表(Sharding化)前,需要开发人员充分了解系统业务逻辑和数据库schema.一个好的建议是绘制一张数据库ER图或领域模型图,以这类图为基础划分shard,直观易行,可以确保开发人员始终保持清醒思路。对于是选择数据库转载 2016-08-31 21:05:52 · 438 阅读 · 0 评论 -
关于垂直切分Vertical Sharding的粒度
垂直切分的粒度指的是在做垂直切分时允许几级的关联表放在一个shard里.这个问题对应用程序和sharding实现有着很大的影响.关联打断地越多,则受影响的join操作越多,应用程序为此做出的妥协就越大,但单表的路由会越简单,与业务的关联性会越小,就越容易使用统一机制处理.在此方向上的极端方案是:打断所有连接,每张表都配有路由规则,可以使用统一机制或框架自动处理.比如amoeba转载 2016-08-31 21:03:44 · 328 阅读 · 0 评论 -
数据库Sharding的基本思想和切分策略
本文着重介绍sharding的基本思想和理论上的切分策略一、基本思想 Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上。如果表并不多,但每张表转载 2016-08-31 12:43:33 · 342 阅读 · 0 评论 -
MyISAM和InnoDB区别
MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。 .frm文件存储表定义。 数据文件的扩展名为.MYD (MYData)。 索引文件的扩展名是.MYI (MYIndex)。 基于磁盘的资源是InnoDB表空间数据文件和它的转载 2016-08-23 15:47:27 · 327 阅读 · 0 评论 -
MySQL性能优化的最佳21条经验
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。1.为查转载 2016-06-14 16:07:04 · 600 阅读 · 0 评论 -
MySQL实现分页,SQLServer实现分页
MySQL实现分页select * from 表名 where id>90 order by id limit 10十条一页,查询第91-100条数据,其中数字用变量代替limit灵活运用可有多种实现方式推荐使用select * from table a, (select id from table where... limit 10,10) t where a.id = t.idSQLSe...原创 2015-11-23 15:56:15 · 661 阅读 · 0 评论 -
数据不一致的原因,数据库三范式,事务特性,事务的四个隔离级别,数据库锁
数据不一致的原因数据冗余、并发控制不当、故障和错误。数据库三范式1)第一范式:确保每列保持原子性2)第二范式:确保表中的每列都和主键相关3)第三范式:确保每列都和主键直接相关,而不是间接相关事务特性事务是并发控制的单位,是用户定义的一个操作序列,以begin transaction开始以commit或rollback结束,其特性:1)原子性:事务中的操作要么全做,要么全不做2)一致性:事务的执行结...原创 2015-11-23 11:36:56 · 3701 阅读 · 0 评论 -
spring中配置mongoDB
spring中配置MongoDB有两种方式:注解方式和配置文件方式1、注解方式配置类要继承AbstractMongoConfiguration类,重写mongo()和mongoTemplate()方法import org.springframework.context.annotation.Bean; import org.springframework.context.an原创 2016-06-08 19:57:46 · 11519 阅读 · 0 评论 -
java实现分页组件
package com.face.common;import lombok.Getter;import lombok.Setter;import java.util.ArrayList;import java.util.List;@Getter@Setterpublic class Page { private int pageIndex; private in原创 2018-02-01 14:46:32 · 810 阅读 · 0 评论 -
Mybatis中javaType和jdbcType对应关系
Mybatis中javaType和jdbcType对应和CRUD例子Xml代码 resultMap type="java.util.Map" id="resultjcm"> result property="FLD_NUMBER" column="FLD_NUMBER" javaType="double" jdbcType="NUMERIC"/>转载 2017-09-27 21:14:29 · 836 阅读 · 0 评论 -
java中使用MongoDB
MongoDB是一个基于分布式文件存储的数据库,属于NoSQL型数据库,采用BSON数据格式(一种类JSON的二进制形式存储格式)进行存储。java中MongoDB的基本操作代码如下:首先安装MongoDB本地服务器,并启动(或手动配置到本地服务)然后编写java代码import com.mongodb.BasicDBObject;import com.mongodb.DB;原创 2016-04-03 14:42:36 · 765 阅读 · 0 评论