![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库
数据库相关
赵成默
总结就是提升的过程
展开
-
mysql的分库分表
为什么要分库分表,总体上来说就是为了提高查询速度而进行优化的。原创 2022-07-19 16:12:15 · 166 阅读 · 0 评论 -
数据库多网卡配置方案0.0.0.0(gbase为例)
前言这阶段的工作任务是dba,见识到了各种各样的数据库国产的、国外的基板上都认识了一下(指的是关系型),今天配置的时候出现一个环境,刚好有配置的是gbase 8s这个特殊的数据库环境一个服务器上配置了多个网卡(例如一个是192.168段的,一个是10.30段的)两个网卡的的作用都有一定的区别,安装gbase的时候需要指定本机的ip才能启动实例那么问题来了?一个实例一个端口一个ip,我如何配置才能让这192.168段的和10.30段的客户端都能访问得到数据库呢?然后老员工跟我说,实际上数据库实例原创 2021-11-22 14:47:41 · 1067 阅读 · 0 评论 -
hbase 初识浅析
前言HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。他区别现在现有关系型数据库。因此我在学习的时候经常拿他和mysql进行比较结构存储逻辑结构它有列族。他相当把所有的列进行分类。row_key相当于主键。是必不可少的,可以自己设定。行会进行切分。切分成多个region。(就是偷了尚硅谷老师的图,请不要介意)存储结构上面只是逻辑结构,下面才是hbase的存储结构每一个单元格都是一条数据TimeStamp用来控制版本。如果有修改成新的数据,他会查找到最新的版本,原创 2021-05-28 16:30:03 · 84 阅读 · 3 评论 -
this is incompatible with sql_mode=only_full_group_by(group by的坑)
错误信息SELECT APP_ID,APP_NAME from OA_FAQ_KNOWLEDGE GROUP BY APP_ID> 1055 - Expression > #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'customservice.OA_FAQ_KNOWLEDGE.UNID' > #which is not functionally dependent o原创 2020-12-23 21:00:21 · 127 阅读 · 0 评论 -
对多表进行查询并知道这个数据是哪张表得出的,同时需要对结果集进行排序等操作
前言今天做到一个操作:需要对三张不同类型的问题表进行查询,并且需要得到这个数据是哪种问题,同时需要对时间进行排序这可难倒我了,但是我坚持不懈的去问公司的大佬,它给了我一个解决方法使用union操作SELECT 'a' as type,CREATE_TIME from OA_FAQ_TROUBLEUNIONSELECT 'b' as type,CREATE_TIME from OA_FAQ_POWER但是我想要对他的结果集进行排序麻药怎么办?所以我想到用一个子查询那不是完美了SELEC原创 2020-12-17 11:01:20 · 243 阅读 · 0 评论 -
mysql高级 --- 索引优化案例
准备首先需要一个表:下面的表示以前用的,现在拿过来用查询语句查询 catalogid = 1且 num > 1 的价格最高的书select * from bookwhere book.catalogid = 4 and num >1order by book.price desc limit 1;使用explain注意看他type:ALL所以他是全表扫描,这个肯定不好需要优化优化方式:1、优化sql语句(这个先不论)2、优化索引创建索引一创建语句:c原创 2020-08-28 20:36:01 · 156 阅读 · 0 评论 -
mysql高级 --- explain(执行计划)
前言explain是什么?他有什么用?怎么用?在学习之初都应该先打出三个问号???explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句。在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,此时我们可以用到explain这个命令来查看这些SQL语句的执行计划:有没有使用上了索引、全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还原创 2020-08-26 20:10:28 · 147 阅读 · 0 评论 -
mysql高级 --- 索引初学,先看这里
前言mysql肯定不是只有简简单单的CURD,当然CURD才是数据库的核心功能但是在基础的功能之上,我们能做的就是如何去优化他,而索引就是优化查询的一个重要知识点下面这一句索引无关我觉得下面的图让我很快的理解的jion的使用以及定义7种jion连接什么是索引索引的优缺点...原创 2020-08-24 11:05:11 · 106 阅读 · 0 评论 -
mybatis学习 --- insert和selectKey(插入后返回数据库自动生成的id)
前言insert 插入标签并不难只是为了注意一下,insert还有一些细节目的如果你的数据库支持自动生成主键的字段(比如 MySQL 和 SQL Server),那么你插入时没有设置id的值,返回是如何获取插成功工完整的一行信息呢?如果只判断成功,并把之前的值拿来使用,有缺少一个id的值,那么你还必须查询该值方法一:使用selectKey标签属性看一下官网是怎么说的官网说可以用它来生成主键返回自动生成的IDLAST_INSERT_ID() 函数在mysql中是返回最后一个插入原创 2020-08-20 11:12:37 · 1733 阅读 · 0 评论 -
mybatis学习 --- 高频重点:缓存
前言mybatis拥有自己的缓存,在缓存中他有三个重点:一级缓存(局部缓存)二级缓存(全局缓存)自定义缓存官网内容缓存策略:映射语句文件中的所有 select 语句的结果将会被缓存。映射语句文件中的所有 insert、update 和 delete 语句会刷新缓存。缓存会使用最近最少使用算法(LRU, Least Recently Used)算法来清除不需要的缓存。缓存不会定时进行刷新(也就是说,没有刷新间隔)。缓存会保存列表或对象(无论查询方法返回哪种)的 1024 个引用。原创 2020-08-19 21:29:19 · 126 阅读 · 0 评论 -
mybatis学习 --- 不用看了,mybatis复杂查询要点都在这一篇了
结果集(resultMap)来看看官网的说法:resultMap 元素是 MyBatis 中最重要最强大的元素它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了小结:其他mybatis原创 2020-08-18 20:59:19 · 254 阅读 · 0 评论 -
mybatis学习 --- 构建和作用域(Scope)和生命周期
前言下面理解基本上都是从mybatis官网copy过来的,只是我划了一下重点,就当做做一个笔记吧构建下面是构建一个简单的mybatis//配置文件所在位置String resource = "org/mybatis/example/mybatis-config.xml";//获取配置文件的信息InputStream inputStream = Resources.getResourceAsStream(resource);//通过SqlSessionFactoryBuilder工厂构造器加载原创 2020-08-16 16:24:46 · 128 阅读 · 0 评论 -
mybatis学习 --- 配置信息
前言其实官网上的哦诶之是最全的,所以看得懂得我推荐去官网是哪个理解但是官网上的文档需要费比较大的劲去找重点官网链接所以下面只写一写比较重要的配置文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dt原创 2020-08-15 19:55:19 · 98 阅读 · 0 评论 -
大家都说mybatis会自动回滚事务(如果增删改没有提交事务的话,不会写入到数据库中),为什么我没有?
问题今天复习一下mybatis,看到别人说事务自己也去了解一下他们都说mybatis增删改需要手动提交事务???我看了一下自己的代码?我没有写提交啊?但是我的测试结果?和数据库查看结果都是成功的?有写入到数据库啊!!!那为什么到我这里不需要提交事务?好奇的我想要去了解猜想1既然数据库需要手动提交事务,那肯定有自动提交事务难道是我在这里被设置为自动提交事务了?马上查看代码 private static SqlSessionFactory sqlSessionFactory; st原创 2020-08-14 22:18:34 · 2862 阅读 · 0 评论 -
Redis学习(十二)---缓存穿透、击穿和雪崩
前言缓存问题也是服务器的高可用问题缓存穿透概念缓存穿透指的是去查询一个根本不存在的数据,缓存中没有,持久化数据源中也没有。这将导致不存在的数据每次请求都要到持久层去查询,失去了缓存保护后端持久的意义,也是数据库宕机的可能性大大增加。解决方案1、缓存空对象持久化数据源中也没有的时候回返回一个null值,此时将空值也进行缓存,然后将该key设置一个较短的过期时间不足:null值意味着浪费空间 ,一个有key没有value的存在毫无意义。解决这个问题较好的方法就是设置一个较短的过期时间原创 2020-07-30 21:01:07 · 126 阅读 · 0 评论 -
Redis学习(十一)---哨兵(Sentinel)模式
前言前面的第十章学习(主从复制、集群)就是为了学习哨兵模式的铺垫为什么要使用哨兵模式上一篇讲解比较详细1、解决从机宕机问题:在Redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据2、解决主机宕机问题:这个才是哨兵模式解决的主要问题。在 之前的模式中,如果主机宕机的话,只能通过salveof no one 命令手动的将其他从机变成主机如果主机修复后,还必须将原来的从机重新salveof哨兵(sentinel)定义哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命原创 2020-07-29 15:43:59 · 208 阅读 · 0 评论 -
Redis学习(十)---主从复制、集群搭建(伪)
概念是指将一台redis服务器的数据,复制到其他redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower)数据的复制是单向的,只能从主节点到从节点Master一写为主,Salve以读为主默认一个主节点可以有多个从节点(或者没有),但是一个从节点只能有一个主节点为什么要使用主从复制单机服务器的限制:出现单点故障,会导致服务器不可用在存在高使用的情况下,一个服务器压力大容量瓶颈。redis本身是有容量限制的(256G,一般可用内存20G原创 2020-07-28 20:55:03 · 154 阅读 · 0 评论 -
Redis学习(九)---发布(publish)/ 订阅(subscribe)
前言redis它也有自己的消息发布和订阅功能,这是一个比较轻量级的功能,毕竟他不是专门做这个的。如果你只是需要一个基础的发布订阅功能个而且有redis,那么你就可以使用它,比较我们可以不需要再去配置RabbitMQ这些专门的消息中间件命令命令描述PSUBSCRIBE pattern [pattern …]订阅一个或多个符合给定模式的频道PUBSUB SUBcommand [argument [argument …]]查看订阅与发布的系统状态PUBLSH channe原创 2020-07-28 16:45:40 · 962 阅读 · 0 评论 -
redis学习(八)---持久化(RDB和AOF)
前言redis是内存数据库,如果不将内存中美好的数据库状态保存到磁盘中华,一旦你退出redis,n那么他的数据就会丢失,这也是它和MySql不一样的地方其中的配置操作请参考前面那一篇文章1、RDBrdb操作就是在redis的快照(SNAPSHOTTING)设置中rdb默认保存的文件名是dump.rdbsave num1 num2: 在num1秒内修改了num2个key,那么他就出触发rdb的保存机制运行过程:1、redis调用系统函数fork() ,创建一个子进程,现在就有了父进程和子原创 2020-07-27 10:36:09 · 159 阅读 · 0 评论 -
Redis学习(七)---配置文件(redis.conf)详解
前言redis的使用肯定离不开他的配置,一个工具的使用,首先要学会配置它,name这个工具才能更有效的发挥它的作用配置信息网络配置(NETWORK)通用配置(GENERAL)快照(SNAPSHOTTING)持久化操作主从复制(REPLICATION)安全(SECURITY)设置密码:除了下面这种方式我们还可以直接在客户端用命令设置config get requirepass 获取密码config set requirepass 【密码】设置密码密码auth 【密原创 2020-07-26 21:01:41 · 296 阅读 · 0 评论 -
Redis学习(六)---RedisTemplate序列化、自定义RedisTemplate,RedisTemplate工具
前言本来这个学习也想写在SpringBoot整合Redis但是考虑到篇幅有点多,我还是写在新的一篇博客RedisTemplate序列化前面说到,我们在java中写入数据之后,在redis客户端查看发现一堆乱码?这个原因是因为redis对象需要序列化点击进入RedisTemplate的源码,查看它的序列化,发现默认的RedisTemplate它所使用的是jdk自己的序列化方式Redis写入对象首先我们写一个User对象1、直接传递对象通过下面的的测试,我发现redis是不能直接写入对原创 2020-07-26 16:49:43 · 1229 阅读 · 0 评论 -
Redis学习(五)---SpringBoot整合Redis
创建项目创建一个SpringBoot项目,我就用快速方法建的主要要注意一个点:记得勾选NoSql中的Spring Data Redis简单看一下pom文件Redis主要需要下面的这依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</arti原创 2020-07-25 21:08:10 · 882 阅读 · 0 评论 -
Redis学习(四)---Jedis
Jedis定义Jedis就是Redis官方推荐的Java连接开发工具,相当是数据库在java中的JDBC,里面封装了对Redis操作的方法使用前提下载Jedis工具包,可以去maven官网上找最新的版本 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupI原创 2020-07-25 17:10:48 · 107 阅读 · 0 评论 -
Redis学习(三)---事务、监视
Redis事务本质Redis事务的本质是一组命令的集合事务支持一次性执行多个命令一个事务中的所有概念都会被 序列化在执行过程中,事务会顺序的执行命令,并且不让其他命令影响事务总结:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令特点1、Redis没有事务隔离级别批量操作在发送 EXEC 命令前被放入队列缓存,并不会被实际执行,也就不存在事务内的查询要看到事务里的更新,事务外查询不能看到。2、Redis事务不保证原子性Redis中,单条命令是原子性执行的,但事原创 2020-07-24 20:40:50 · 118 阅读 · 0 评论 -
Redis学习(二)---常用命令、数据类型
set 【key】【value】设置键值get 【key】获取键对应的值dbsize 获取当前数据库已存储的长度(注:Redis有16个数据库,从0开始)select 【index】选择数据库key * 获取当前数据库的所有键keyflushdb 清空当前数据库fiushall 清空所有数据库...原创 2020-07-22 10:51:00 · 320 阅读 · 0 评论 -
Redis学习(一)---了解什么是NoSQL?什么是Redis?为什么需要它?
前言学习之初,首先要认识一个技术的优点,明白他是什么?他能干什么?NoSQLNoSQL最常见的解释是“non-relational”,Not Only SQL也被很多人接受。NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的 ACID。特性易扩展数据之间无关系,这样就非常容易扩展。大数据量、高性能一般MySQL使用Query Cache。NoSQL的Cache是记录级的。性能更优秀。灵活的数据类型NoSQL无须事先为要存储的数据建立字段,随时可以存储原创 2020-07-20 21:31:51 · 283 阅读 · 0 评论 -
关系型数据库
前言先写着非关系型数据库非关系型数据库遵循ACID规则ACID规则事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性:1、A (Atomicity) 原子性原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完原创 2020-07-20 21:07:50 · 115 阅读 · 0 评论 -
简便使用通用Mapper(没有任何sql语句)实现增删改查、分页 、多条件模糊搜索
文章目录前言功能使用(直接贴代码)前言之前,在初学ssm框架的时候,曾经写过增删改查,还有多条件模糊搜索。其用的原理是用同过配置mybatis来实现数据库操作,将数据库语句配置在xml里面。那时候我就在想,这么简单的sql语句都要写,难道就没有人封装吗?现在我就给大家推荐----Mapper 通用接口。他能简化数据库操作,不用让你在配置xml,其操作都已经被封装好了,可直接调用。其包括...原创 2020-03-04 16:07:20 · 1990 阅读 · 1 评论 -
docker使用mysql
如果你的mysql,是安装在docker的话,不要想直接连接。因为,这时候你的数据库相当于是没有启动的因此要在终端上,输入命令docker exec -it mysql /bin/bash进入这时候你才可以使用你的数据库或者用Navicat连接上来...原创 2020-03-02 17:43:20 · 239 阅读 · 0 评论 -
云服务器远程连接MySQL数据库教程和一些出现得错误
远程连接数据库配置过程**出现的问题**配置过程参考博客链接: link上面的链接有完整的过程,亲测有效;但是依旧还会有些问题会发生以下提出出现的问题1、登入时可直接登入(刚开始是root超级用户不用密码)2、设置密码SET PASSWORD = PASSWORD('密码');会出现错误ERROR 1064 (42000): You have an corresponds ...原创 2020-02-02 20:25:51 · 250 阅读 · 0 评论