![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 84
氵何章怀晓 。
阿尔卡拉大学企业管理硕士
北亚利桑那大学计算机信息技术硕士
展开
-
分库分表Sharding-Sphere
宝子们,之前工作弄过分库分表,正巧最近有点时间,就简单回顾整理一下,版本更新虽然快,但本质不变,简单整理下Sharding-sphere。分库分表主要解决数据量大带来的性能问题,分为垂直/水平两维度,每个都可运用在分库分表上。1.垂直,结构不同1. 垂直分表如以表字段拆分,本质还是两个独立的表,只是在业务中是一类,如商品,可分为商品基本表+详情两表场景很多,如电商商品表可分为若干表,首页是商品名称等基本信息,此时只需查询基本信息表即可满足用户浏览,如点击详情后,在继续查询详情信息,本质都是商品相原创 2022-04-30 23:16:48 · 814 阅读 · 2 评论 -
sql优化
慢sql原因: 1.索引失效 2.内存不足 3.网速慢 4.数据量太大 分页 5.返回不必要的行列 6.关联太多 子查询关联太多 7.服务器参数设置不恰当SQL语句过程: 1.跑一天,设置慢查询日志阙值,超过指定时间的抓取出来 2.explain+慢sql分析 3.show profile 查询sql在服务器中执行的细节和生命周期 4.服务器参数调优(DBA)注...原创 2020-02-15 12:38:07 · 162 阅读 · 0 评论 -
mysql锁
行锁:单个记录上的锁间隙锁:可重复读比读已提交多了间隙锁。读已提交:主键索引查询和唯一索引查询只锁本行,普通索引,凡是本次查询行后有写锁语句,均加写锁,但是此时在添加和普通索引相同的某一列数据,也可以添加成功。可重复读:范围锁,查询后会在查询范围的前后加间隙锁,这样插入相同列的值便插不进来,确保了可重复读,插入被阻塞,事务结束后才能插入成功。注意:锁一定是在事务里的,锁分为读锁...原创 2020-02-15 11:53:47 · 138 阅读 · 0 评论 -
mysql事务和并发版本链
事务的四个特性: 原子性:要么成功要么失败,A给B转账,要么成功,要么失败。 隔离性:互不影响的操作,A给B转账,A给C转账。 一致性:数据的合理变化,A给B转账,A的钱少了,B的钱多了。 持久性:转账记录的保存。注意:mysql的事务自动开启,在我们执行sql的时候,默认开启事务,完毕后默认提交。事务的隔离级别事务的隔离级别有四种,分别是1.读未提交2.读已提交3.可重复...原创 2020-02-15 11:33:38 · 352 阅读 · 0 评论 -
mysql架构和两种存储引擎
mysql一共分为四层,分别是连接层,业务层,引擎层,存储层。1.mysql会对命令进行处理,查询缓存(在mysql的my.ini文件里开启),2.如果没有进入命令解析器,3.mysql的sql语句解析顺序为 from, left join where ,group by ,select, order by ,limit4.根据不同的命令分发到不同的位置上...原创 2020-02-14 18:12:54 · 103 阅读 · 0 评论 -
缓存穿透
我们都知道,redis作为缓存是为了降低数据库的访问压力,从而更快速的从缓存中 获取数据返回到客户端。当然,这些都是最理想的状态。缓存击穿假如我们查询的数据不存在呢?你肯定会说,那肯定去查询数据库啊,没错,在高并发的情况下,N个请求同时去访问数据库,并且是扫描全表,数据库压力过大,宕机。怎么解决这个问题呢?那也就是说,我们在查询的时候先要看一下,数据是否存在,如果不存在,我们在做一系列操作返...原创 2020-01-30 09:55:23 · 168 阅读 · 0 评论 -
今天遇到的小问题
最近开发过程中遇到了写小问题,在这里做一简单总结。一.在不修改数据库状态的基础上按照自己后指定的顺序排序查询。数据库spread_status 推广状态 0未推广 1推广中 2 已结束 3 已取消 4未开始 5暂停中’,页面要求按照145230的顺序排序,有的小伙伴会说,调整一下状态对应的数字然后排序多简单,但是项目运行4年,数据量大得惊人,改数据是不可能的,那只能重新排序处理。之前了解过c...原创 2019-10-23 20:15:15 · 167 阅读 · 0 评论 -
数据库时间格式转换
最近操作数据库的时候对时间的操作进行了简单的总结:1.首先数据库时间类型date和datetime的区别:date:日期datetime日期+时分秒2.获取:数据库的值显示在前台页面上,默认是毫秒值,肯定不是我们希望的到的结果,所以需要在查询的时候做转换操作。2.1首先在执行sql的xml文件中resultmap格式映射指定格式:jdbcType="TIMESTAMP2.2sql语句...原创 2019-07-08 14:15:40 · 8802 阅读 · 0 评论 -
数据库主从复制
1.引入:有了主从复制,读写分离才有意义,值得注意的是,mysql数据库自带主从复制功能,该功能和mycat没有关系!基于log文件的主从复制,只是主从复制中的一种方式2.基本流程:主库进行dml,会产生一个二进制文件,文件中记录了操作信息,从库获取文件在本地运行,达到主从复制效果。注意:slave拷贝master的log文件是一个异步的过程slave从master拷贝log文件需要mas...原创 2019-06-12 12:00:09 · 334 阅读 · 0 评论 -
MyCat
1.简介:mycat是数据库中间件,就相当于中介,同时连接了程序和数据库,其核心功能是分库分表,为啥这样做呢?还是分散单台设备的负载,提高性能。分库分表,就是按照一定规则把表或者某列数据划分成n个表,这样一来,就可以实现读写分离,就是几个数据库,内容完全一样,如果执行写(dml)操作,进写的库,读(dql),进读的库。有了读写分离,那么一定有主从同步,要不几个库之间怎么保持统一呢?那么这个时候写...原创 2019-06-12 11:45:11 · 285 阅读 · 0 评论 -
Spring对Redis的支持
引入:RedisTemplate对象默认序列化方式为byte数组,封装好的方法不用我们去序列化,直接使用即可。概述:RedisTemplate是Sprig提供的Redis数据库访问对象。可对Redis数据库操作。由来:Redis数据库是可基于内存存储的,效率高。访问量较高的数据不能频繁的对数据库进行dml(会对数据库的数据造成阻塞,降低速度,降低客户体验度),所以放入Redis中的数据基本是只...原创 2019-06-14 21:10:08 · 286 阅读 · 0 评论 -
Redis存储数据之Sring
1.创建项目,依赖jedis和Junit和fastjson <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency&g...原创 2019-06-14 21:00:45 · 128 阅读 · 0 评论 -
reids
redis属于非关系型数据库,通过键值对保存数据,不适合做频繁的更新数据,它可以解决高并发和大量数据访问。redis是可基于内存的非关系型数据库,同时也可以将数据持久化到磁盘,支持数据库集群+读写分离+主从同步。redis可存储五种类型数据:String、List、Set、SortedSet、Hash。redis对是数据的存储只接受byte[]和String,如果保存数据到redis,就必须...原创 2019-06-14 20:58:20 · 231 阅读 · 0 评论 -
可移植的JPQL语句
JPA中对象关联方式查询对象数据查询到的是所有的列,效率低,不适合实际开发。JPQL(JPQL全称Java Persistence Query Language)语句可以解决多表查询操作,直接指定需要查询的表(实体类)+列(属性)JPQL的查询效率没有SQL语句效率高,它的优势也是原生的SQL语句无法做到的,那就是JPQL作为被封装的面向对象的对数据库的操作,它可以根据不同的数据库灵活切换不同...原创 2019-06-14 20:35:17 · 145 阅读 · 0 评论 -
延迟加载
延迟加载(lazy load)是Jpa的对象关联默认加载方式。主要是为了避免加载对象的同时加载其关联的对象,避免无畏的开销,当我们真正需要数据的时候,才真正的执行加载。延迟加载的有效期在session生命周期内,当session关闭执行SQL语句会报nosession异常,解决这个问题有两种方法:1.延长session生命周期。service层调用持久层方法链接数据库进行操作。调用开始到结束...原创 2019-06-14 16:25:51 · 1426 阅读 · 0 评论 -
数据库连接池
概念:在内存中开辟一块空间,存放多个数据库连接对象conn目的:在高频率访问数据库时,使用数据库连接池可以降低服务器系统压力,提升程序运行效率。active状态:当前连接对象被应用程序使用中Idle状态:空闲状态实现JDBC tomcat pool这个是tomcat服务器启动才会生效的数据库连接池1.META-INF下context.xml【context.xml Tomcat的那个...原创 2019-06-08 13:12:29 · 100 阅读 · 0 评论 -
Jpa
作用:和mybatis、jdbc都是完成对数据库操作。mybatis是半自动化ORM框架,Jpa是完全面向对象的自动化ORM框架,操作对象即可达到操作数据库数据的目的。mybatis提供了逆向工程,Jpa提供了正向工程。简单说一下SQL语言分类1.DQL:数据查询 SELECT子句,FROM子句,WHERE子句组成的查询块2.DML:数据操纵 插入:INSERT 更新:UPDATE ...原创 2019-06-13 20:38:04 · 391 阅读 · 0 评论