![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 80
ReadThroughLife
计算机硕士,世界50强企业Python数字化培训讲师,前世界100强企业软件开发工程师
展开
-
【已解决】MySQL 事务回滚机制失效之误用 truncate 删除表数据
🎉在工作场景中遇到这样一个需求,对表中的数据进行更新,更新的步骤是:首先,删除表中所有的数据记录;之后,再将更新过后的数据插入到表中。由于系统业务逻辑相关的原因,在数据插入时可能会出现异常,因此当出现异常而终止插入过程,需要能够将事务进行回滚,恢复之前删除的数据。首先,检查是否使用了支持事务的存储引擎,确认 MySQL 数据库使用了 InnoDB 引擎并开启了事务机制。✨这时便回忆起,为了保证事务的原子性,InnoDB 引擎在实际进行记录的增删改操作时,都需要先把 undo 日志记下来,便于之后进行回滚。原创 2022-09-25 10:18:10 · 2841 阅读 · 0 评论 -
【已解决】Mybatis 批量动态更新数据时出现异常:java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax
记录一个在应用场景下遇到的问题,给出的需求是批量对用户表进行更新操作。需要说明的是,使用的数据库为 MySQL,ORM 框架为 Mybatis.需求本身并不难实现,很容易地便可以写出批量更新语句,代码如下:从上面的代码可以看出,这里使用了 对传入的列表进行遍历更新。其中, 表示传入的参数是列表类型, 其中的 是自定义的名称(你也可以指定 这样的形式),表示单个更新的形参对象(Java 对象 User 有很多属性和表的字段对应), 表示指定分隔符,对于批量更新操作而言分隔符参数必须是,固定格式不能改变。原创 2022-06-15 19:54:42 · 3258 阅读 · 1 评论 -
MongoDB 索引的使用
索引支持在 MongoDB 中高效地执行查询,避免 MongoDB 执行全集合扫描来选择与查询语句匹配的文档,这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询要花费几十秒甚至几分钟,严重影响网站的整体性能。如果查询存在适当的索引,MongoDB 可以使用该索引限制必须检查的文档数。索引是特殊的数据结构,以易于遍历的形式存储集合数据集的一小部分,索引存储特定字段或一组字段的值,按字段值排序,索引项的排序支持有效的相等匹配和基于范围的查询操作,MongoDB 可以使用索引中的排序返回排序结果,M原创 2022-06-13 11:09:22 · 1042 阅读 · 0 评论 -
MongoDB 常用基本命令
存放文章评论的数据存放到 MongoDB 中,数据结构如下:选择和创建数据库的语法格式:如果数据库不存在则自动创建,例如,以下语句创建 数据库查询有权限查看的所有数据库的命令需要注意的是,在 MongoDB 中数据库只有插入内容才会真正创建,持久化到磁盘上,如果没有插入内容的话, 是不会显示刚刚创建的数据库的!查看当前正在使用的数据库,命令如下需要注意的是,数据库名可以是满足以下条件的任意 UTF-8 字符串有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库:MongoDB 删除数据库的语原创 2022-06-06 23:45:00 · 1008 阅读 · 1 评论 -
MongoDB 简介
随着当前数据量的急剧增长,传统的关系型数据库(Oracle、MySQL)在数据操作的“三高”需求以及在应对 Web2.0 的网站需求方面,已经显得力不从心。这里的 “三高”需求是指:然而,作为分布式文档型的数据库 MongoDB 可以应对以上的“三高”需求。MongoDB 作为分布式文档型数据库的代表,它的具体的应用场景如下:以上的具体应用场景中,数据操作方面的共同特点是:对于这样的数据,更适合使用 MongoDB 来实现数据存储。在架构选型上,除了上述的三个特点外,如果还需要考虑以下问题:如果上述有一个符原创 2022-06-01 23:45:00 · 673 阅读 · 0 评论 -
【已解决】数据库常见场景应用计算次日留存率
记录一个数据库中常见的应用场景,需要计算用户次日留存率(次留分析),查询出计算的用户留存率。结合这个应用背景,牛客网站上的 SQL29 计算用户的平均次日留存率 非常适合拿来练习,下面就以牛客上的这道题目作为示例。题目描述:现在运营想要查看用户在某天刷题后第二天还会再来刷题的平均概率,请你取出相应数据。示例:question_practice_detailiddevice_Idquest_idresultdate12138111wrong2021-05-232原创 2022-05-20 11:26:24 · 2276 阅读 · 0 评论 -
【已解决】Error querying database. Cause: java.sql.SQLDataException: ORA-01861: 文字与格式字符串不匹配
在工作场景中遇到这样一个需求,需要统计指定时间段内网站的访客数据,例如,统计从 2022 年 4 月 1 号至 2022 年 4 月 30 号内网站的所有访客记录,之后生成一个统计报表。需要注意的是,这里的时间范围是指从 2022 年 4 月 1 号凌晨 0 点 0 分 0 秒 至 2022 年 4 月 30 号 23 点 59 分 59 秒,单位必须精确到秒!对于这样的一个需求,解决思路其实很简单,无非就是对后台数据库进行时间范围的查询操作,编写 SQL 语句,肯定要用到 between and,表示指原创 2022-05-09 12:37:54 · 8409 阅读 · 0 评论 -
【已解决】MongoDB 中根据指定字段筛选出具有重复值的记录
在业务场景中遇到这样一个问题,根据某个字段进行条件查询出来的记录总数与后端 MongoDB 数据库中记录总数出现不一致的情形,经过分析之后发现是因为数据库中某个唯一字段的值重现重复的情况,导致了有多条重复的记录存在。因此,解决方法就是先筛选出指定字段有重复值的记录,再进行删除操作。因为使用的是 MongoDB 数据库,因此需要用到 MongoDB 相关的执行命令,这与 MySQL 中相关操作语句有较大差别,针对本问题的解决方法的执行命令如下:db.getCollection('host').aggreg原创 2022-04-19 13:17:03 · 6436 阅读 · 0 评论 -
Windows 系统安装并启动 MongoDB 数据库
Windows 系统安装并启动 MongoDB 数据库1. 下载安装包2. 解压安装3. 启动服务3.1 命令行参数方式启动服务3.2 配置文件方式启动服务1. 下载安装包下载 MongoDB 压缩包,选择对应的版本和操作系统平台。MongoDB 分为商业版本和社区版本,对于个人学习使用以及简单的开发没有高级的需求来说,选择社区版即可。这里我选择的是 Windows 平台的压缩包。2. 解压安装因为下载的是 ZIP 压缩包,MongoDB Server 直接解压即可,绿色安装非常方便。3. 启原创 2022-03-26 21:42:48 · 2661 阅读 · 0 评论 -
远程访问 Linux 服务器中的 MongoDB 数据库(腾讯云服务器 CentOS 8.0)
远程访问 Linux 服务器中的 MongoDB 数据库(腾讯云服务器 CentOS 8.0)1. 开放腾讯云服务器防火墙端口2. 修改 mongod.conf 文件配置3. 设置服务器防火墙状态4. 测试连接1. 开放腾讯云服务器防火墙端口首先需要在腾讯云服务器的管理中,为防火墙添加规则,自定义开放 27017端口,这样外部可以访问到服务器的 27017 这个端口。切记,这一步非常重要,一定要弄,如果只是在服务器通过命令行方式开放了 27017 端口,最后外部主机依然不能通过远程方式连接 mongod原创 2022-03-26 20:50:21 · 2479 阅读 · 0 评论 -
基于 Linux 环境安装并配置启动 MongoDB 服务并使用远程客户端工具连接
下载 MongoDB 压缩包,选择对应的版本和平台。MongoDB 分为商业版本和社区版本,对于个人学习使用以及简单的开发没有高级的需求来说,选择社区版即可。下载完成之后,可以通过文件传输软件上传压缩包到服务器平台。例如,我这里上传到了服务器下面的 目录下。进入到存放压缩包的位置,并解压文件,分别使用如下命令:然后,移动解压后的文件夹到指定的目录中:那么,到这里 mongodb 的安装工作也就完成了,就要开始对 mongodb 进行配置了。首先,创建目录分别用来存储数据和日志:之后,进入到原创 2022-03-26 16:25:13 · 3519 阅读 · 0 评论 -
RedisTemplate 的两种序列化方式
RedisTemplate 的两种序列化方式1. 自定义 RedisTemplate 进行序列化2. 使用 StringRedisTemplate 进行序列化RedisTemplate 可以接收任意的 Object 作为值写入 Redis,只不过写入前会把 Object 序列化为字节形式,默认采用 JDK 序列化。但是这种方式有两个缺点:可读性差。对键值对进行了序列化,中文字符串序列化后的内容表示为 16 进制表示的数据,可读性差。内存空间占用大。存储了额外的对象的类型信息,占用了内存空间。因此原创 2022-03-16 17:34:36 · 9470 阅读 · 0 评论 -
Spring 集成 Redis 模块的使用教程
为了方便 Java 对 Redis 进行操作,Spring 对 Redis 也进行了集成,集成的模块称为 SpringDataRedis,主要包括以下功能作用:提供了对不同 Redis 客户端的整合(Lettuce 和 Jedis)。提供了对 RedisTemplate 统一 API 来操作 Redis.支持 Redis 的发布订阅模型。支持 Redis 哨兵和 Redis 集群。支持基于 Lettuce 的响应式编程。支持基于 JDK、JSON、字符串、Spring 对象的数据序列化和反序列原创 2022-03-16 15:10:33 · 1417 阅读 · 0 评论 -
远程访问 Linux 服务器中的 redis 数据库(腾讯云服务器 CentOS 8.0)
远程访问 Linux 服务器中的 redis 数据库(腾讯云服务器 CentOS 8.0)1. 开放腾讯云服务器防火墙端口2. 修改 redis.conf 文件3. 服务器防火墙状态设置4. 测试连接1. 开放腾讯云服务器防火墙端口首先需要在腾讯云服务器的管理中,为防火墙添加规则,自定义开放 6379 端口,这样外部可以访问到服务器的 6379 这个端口。切记,这一步非常重要,一定要弄,如果只是在服务器通过命令行方式开放了 6379 端口,最后外部主机依然不能通过远程方式连接 redis 数据库。原创 2022-03-15 18:17:37 · 2515 阅读 · 0 评论 -
《Java 后端面试经》数据库篇
Java 后端常见面试题 day 0449. Mybatis 的优缺点50. Mybatis 与 Hibernate 对比51. #{} 和 ${} 的区别是什么52. 简述 Mybatis 的插件运行原理,如何编写一个插件52. 索引的基本原理53. Mysql 聚簇和非聚簇索引的区别55. MySQL 索引的数据结构,各自优劣?56. 索引设计的原则57. Mysql 锁的类型有哪些?58. MySQL 执行计划怎么看59. 事务的基本特性和隔离级别61. 关心过业务系统里面的 SQL 耗时嘛?统计过慢原创 2022-02-16 10:16:41 · 2749 阅读 · 2 评论 -
Mybatis 分页插件 PageHelper 使用教程
Mybatis 分页插件 PageHelper 使用教程1. 引入 maven 依赖2. 在 Mybatis 配置 xml 中配置拦截器插件3. 在 Spring 配置文件中配置拦截器插件4. 在代码中使用1. 引入 maven 依赖<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <v原创 2021-11-16 11:10:43 · 6078 阅读 · 0 评论 -
Redis 缓存相关问题
Redis 缓存相关问题1 缓存穿透2 缓存雪崩3 缓存击穿1 缓存穿透定义: 缓存穿透,是指查询一个数据库中一定不存在的数据。查询流程:正常的使用 Redis 缓存的流程:1、数据查询首先进行缓存查询2、如果数据存在,则直接返回数据3、如果数据不存在,则对数据库进行查询,并把查询到的数据放进缓存中4、如果数据库查询为空,则不放进缓存举例:假设数据表中主键是自增产生的,所有的主键值都大于0。此时如果用户传入的参数为 -1,会是怎么样?这个 -1,就是一定不存在的对象。程序就会每次都去查询原创 2021-10-23 13:57:06 · 1463 阅读 · 1 评论 -
基于Linux环境安装 Redis 保姆级教程
CentOS 8.0 系统下安装 Redis 4.0.01. 下载安装包2. 解压3. 编译4. 安装5. 启动 redis-server6. 启动 redis-cli6. 启动客户端7. 测试1. 下载安装包wget http://download.redis.io/releases/redis-4.0.0.tar.gz2. 解压tar -xvf redis-4.0.0.tar.gz解压后得到文件夹 redis-4.0.0, 因此再切换到该目录下cd redis-4.0.03. 编译原创 2021-08-25 09:50:58 · 5438 阅读 · 0 评论 -
Linux 环境下指定配置启动 Redis 并设置开机自启
创建两个文件夹 data 和 conf, 分别用来存放日志文件和配置文件。mkdir /root/redis-4.0.0/datamkdir /root/redis-4.0.0/conf切换到目录 /root/redis-4.0.0 下。cd /root/redis-4.0.0拷贝一份配置文件。cat redis.conf | grep -v "#" | grep -v "^$" > redis-6379.conf编辑配置文件 redis-6379.conf, 删除不必要内容,只保原创 2021-08-25 11:04:30 · 10049 阅读 · 0 评论