数据库
CrazySnail_x
这个作者很懒,什么都没留下…
展开
-
UncategorizedMongoDbException: Exception authenticating MongoCredential解决办法
今天通过springboot连接MongoDB的时候,出现了以下的报错:从报错来看,是因为认证没有通过,检查了配置,是没有问题的,那么会不会是账号本身的问题呢?于是到MongoDB的客户端看了下,原来我的账号建在了别的db下面,我连接的db下并没有我需要的账号,所以解决办法就是,在用到的db下面建立对应的账号就行了:然后再去springboot项目里面使用果然没有问题了。...原创 2020-08-11 16:59:34 · 10135 阅读 · 0 评论 -
数据库版本管理-Flyway
1.Flyway简介我们在公司做开发时,由于项目需求的变化,或者前期设计缺陷,导致在后期需要修改数据库,这应该是一个比较常见的事情,如果项目还没上线,你可能把表删除了重新创建,但是如果项目已经上线了,就不能这样简单粗暴了,我们需要通过 SQL 脚本在已有数据表的基础上进行升级。Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway可以像Git管理不同人的代码那样,管理不同版本的sql脚本,从而做到数据库同步。2.Flyway使用Flyway不限原创 2020-07-31 22:03:03 · 2061 阅读 · 0 评论 -
postgresql 建立索引
背景今天六一儿童节,早上一来,还没开始过节呢,就被support同事抓着解决问题,难忘。。。事情是这样的,我们的项目流量不是很大,在最初创建数据库的时候,有三张表加了物理外键,后来考虑到写入时性能的问题,就把外键个删掉了。本来用着一直没问题的,直到今天,用户报有个页面加载不出来数据。找了一圈,最后打印出了SQL,看它的执行时间发现了问题所在。我们用的JPA,加载这个页面需要连三张表去查询,hibernate因为是先查一个表的数据再去下一个表查,于是就发出了几十条的SQL,而每个SQL耗时都很长,原创 2020-06-01 17:42:23 · 2529 阅读 · 0 评论 -
spring JPA集成MongoDB
mongodb作为nosql数据库的一种,在javaee开发中也越来越受到重视,这里介绍springboot+jpa+mongodb开发过程。什么是MongoDB ?MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JS原创 2020-05-08 18:34:14 · 2996 阅读 · 0 评论 -
mysql的优化总结:
mysql的优化总结1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from table where num is null 可以在num上设置默认值0,确保表中num列没有null值...原创 2020-03-23 10:29:32 · 80 阅读 · 0 评论 -
如何使用ssh连接远程postgres
背景今年因为冠状病毒侵袭,为了使疫情不会越来越严重,公司响应国家号召,假期延长,同时从外地过来上班的人员需要在家隔离两周,因为,我只能好好在家呆着办公,为国家做贡献啦。但是问题来了,在家虽然可以使用公司的VPN,但是却不能连上公司的数据库,平时在公司我都是使用Navicat来连接数据库的,但是在家不好使。解决问题于是,我就找到了我们的pass team,得知,我们可以使用ssh工具...原创 2020-02-12 17:01:12 · 4076 阅读 · 0 评论 -
关于JPA级联查询n+1问题
因为在设计一个树形结构的实体中用到了多对一,一对多的映射关系,在加载其关联对象的时候,为了性能考虑,很自然的想到了懒加载。也由此遇到了N+1的典型问题 :通常1的这方,通过1条SQL查找得到1个对象,而JPA基于Hibernate,fetch策略默认为select(并非联表查询),由于关联的存在 ,又需要将这个对象关联的集合取出,集合数量是N,则要发出N条SQL,于是本来的1条联表查询SQL...原创 2019-11-26 10:57:04 · 2544 阅读 · 0 评论 -
JPA 使用 Specification 动态构建多表查询、复杂查询及排序实现
之前做项目都是用的mybatis,刚开始接触jpa的时候,觉得使用起来非常的简单方便,根本不用自己写什么,都jpa都给封装好了。但是随着业务、表结构和表关系越来越复杂,发现仅仅是简单的应用JpaRepository已经无法满足业务需求了。学习了一下,发现Specification提供了灵活的查询方式,特此记录。我们其中一个业务场景需要三个表:ship_order_info,ship_ord...原创 2019-11-08 14:59:51 · 2875 阅读 · 0 评论 -
JPA中@OneToOne 与 @OneToMany 的用法
Spring工程中,创建实体对象时,可以通过JPA的@Entity标识实体与数据库表的对应关系,@Column标识数据库字段。其中还有标识两个实体间关系的注解:@OneToOne、@OneToMany、@ManyToOne和@ManyToMany,分别标识一对一、一对多、多对一和多对多。在此,简单记录下@OneToOne和@OneToMany的使用。其中还会涉及注解@JoinColumn,其修饰的...原创 2019-11-08 11:49:40 · 2283 阅读 · 0 评论 -
postgreSQL的外键级联删除
背景描述:最近在做一个新的项目,其中的order模块,有一个order_records表和order_logs表,order_records表中的id是order_logs表的外键。我们有一个功能是删除order_records表中的数据,并删除关联的order_logs表中的数据。问题描述:然而我们再测试环境测得是正常的,在生产上就不行啦。问题分析:代码都是一样的,为啥生...原创 2019-10-23 15:35:51 · 6405 阅读 · 0 评论 -
mybatis是如何防止SQL注入的
1、首先看一下下面两个sql语句的区别:<select id="selectByNameAndPassword" parameterType="java.util.Map" resultMap="BaseResultMap">select id, username, password, rolefrom userwhere username = #{username,jdb...转载 2019-05-07 17:29:08 · 226 阅读 · 0 评论 -
SpringBoot之事务处理:隔离级别与传播行为
在Spring中,数据库事务是通过AOP技术来提供服务的。对于声明式事务,是使用@Transactional进行标注的。在@Transactional允许配置许多事物的属性,如事务的隔离级别与传播行为。1. 隔离级别(isolation)数据库标准提出了4种isolation事务隔离级别,分别为:未提交读、读写提交、可重复读和串行化。源码如下:/*** * 隔离级别数字数字配置含义...转载 2019-05-07 16:28:26 · 3497 阅读 · 1 评论 -
浅谈MySQL优化
MySQL是一款开源免费的数据库,也是我们最常用的数据库.在开发的路上,总会碰到一些老系统,越用越慢."慢"的原因也有很多. 博主觉得 数据库的设计和sql语句写的好对系统效率的影响是最直接的.最显而易见的,特别是当数据量多的时候.学习一下sql语句的优化还是很重要的.mysql的优化主要分三个层面的:1. sql语句2. m...转载 2019-04-25 11:59:34 · 406 阅读 · 0 评论 -
MySQL 的存储引擎
在 MySQL 中有两个存储引擎 MyISAM 和 InnoDB,每个引擎都有利有弊。酷壳以前文章《MySQL: InnoDB 还是 MyISAM?》讨论和这个事情。MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成。另外,MyISAM 对于 SELECT COUN...原创 2019-04-25 11:41:36 · 82 阅读 · 0 评论