数据库
文章平均质量分 50
Kring_mzx
学而不思则罔,思而不学则殆
展开
-
mysql将一张表某字段赋值另一张表
需求:把一个表某个字段内容复制到另一张表的某个字段。实现sql语句1:复制代码代码如下:UPDATE file_manager_folder f1LEFT OUTER JOIN file_manager_folder f2ON f1.name = f2.name AND f2.parentId = 54SET f1.parentId = 54WHERE f2.name IS NULL AND f1.id IN (1,2,3);实现sql语句2:复制代码代码如下:update B set转载 2021-01-15 11:13:05 · 3565 阅读 · 0 评论 -
服务的性能瓶颈
影响服务的性能因素有很多,我这里简单聊一下。通常随着业务扩展数据量增加和并发增大,会出现接口吞吐量降低,接口访问时间增加,数据库压力过大,出现宕机或者性能明显降低。首先优化点可以考虑代码层面:1、代码是否存在I/O循环调用、方法使用不当(比如简单for、增强for抑或stream流使用)等问题。2、代码中逻辑是不是太过复杂,一个搜索接口中又调用其他搜索接口,查看是否可以拆分成多个单搜索(这个需要和业务方进行沟通)3、sql是否存在容易导致索引失效的问题,导致全表搜索。这个网上关于此问题有很多(比如原创 2020-10-28 14:22:30 · 478 阅读 · 0 评论 -
缓存穿透、缓存击穿、缓存雪崩区别和解决方案
一、缓存处理流程 前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。二、缓存穿透 描述: 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。 解决方案:接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;从缓存取不到的数据,在数据库中也没有取到,这转载 2020-07-08 14:34:24 · 106 阅读 · 0 评论 -
关于redis多条件检索的解决方案
1、一次查询,二次判断1、获取所有匹配到key:value1的值2、获取到的所有值根据第二条件value2进行后端代码再筛选获取真正需要返回的值,返回给用户2、二次查询,找交集(查询效率会有问题)1、如果改HeliosCacheInputField中inputInstance改为list那么相关联项目要改动的就会比较多。如果不改动,依旧是string类型,那么就要考虑使用符号切割问题,切开之后两个inputInstance,组成 两个key:value,2原创 2020-07-03 14:58:54 · 4507 阅读 · 0 评论 -
大数据量插入数据库
大数据量下,提高插入速度的方法。1、Java代码方面,使用多线程插入,并且使用批处理提交。2、数据库方面,表结构建立时不要使用索引,要不然插入过程过还要维护索引B+树;修改存储引擎,一般默认是InnoDB.3、合并数据+事务的方法在较小数据量时,性能提高是很明显的,数据量较大时(1千万以上),性能会急剧下降,这是由于此时数据量超过了innodb_buffer的容量,每次定位索引涉及较多的磁盘...原创 2020-04-23 15:34:15 · 2199 阅读 · 0 评论 -
Redis相关
Redis操作切换几号库使用 select num。一、key pattern 查询相应的key (1)redis允许模糊查询key 有3个通配符 、?、[] (2)randomkey:返回随机key (3)type key:返回key存储的类型 (4)exists key:判断某个key是否存在 存在1,不存在-1 (5)del key:删除key (6)re...原创 2020-04-09 16:09:25 · 118 阅读 · 0 评论 -
sql的xml文件中时间范围判断应该注意的点
LocalDateTime时间范围xml中判断方式:1、AND t1.last_modified_date >=#{p.lastModifiedDateStart}AND t1.last_modified_date <=#{p.lastModifiedDateEnd}2、AND t1.last_modified_date <![CDATA[>=]]> #{p...原创 2020-04-09 16:05:37 · 2680 阅读 · 2 评论