- 博客(17)
- 收藏
- 关注
原创 Explain工具
Explain工具使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返 回执行计划的信息,而不是执行这条SQL 注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中explain中的列接下来我们将展示 explain 中每个列的信息。1. id列id列的编号是 select 的序列号,有几个 select 就有几个id,并且id的顺序是按
2022-05-31 19:23:24
106
原创 异步任务学习记录
当我们构建一个应用,总是希望它是响应迅速,成本低廉的。而在实际中,我们的系统却面临各种各样的挑战,例如不可预测的流量高峰,依赖的下游服务变得缓慢,少量请求却消耗大量 CPU/内存资源。这些因素常常导致整个系统被拖慢,甚至不能响应请求。为了让应用服务总是响应迅速,很多时候不得不预留更多的计算资源,但大部分时候,这些计算资源都是闲置的。一种更好的做法是将耗时缓慢,或者需要消耗大量资源的处理逻辑从请求处理主逻辑中剥离出来,交给更具资源弹性的系统异步执行,不但让请求能够被迅速处理返回给用户,也节省了成本。一般来说
2022-05-05 02:26:24
371
原创 慢SQL解决方案
一 全表扫描1 案例SELECT count(*) AS tmp_count FROM ( SELECT * FROM `XXX_rules` WHERE 1 = 1 ORDER BY gmt_create DESC ) a2 溯源在分页查询治理的文章里已经介绍过我们系统旧的分页查询逻辑,上面的查询sql明显就是分页查询获取总记录数,通过XXX_rules表的分页查询接口溯源,找到发起调用的页面是我们小二后台的一个操作商家准入的页面,页面打开后直接调用分页查询接口,除了分页参数,不传入其他任
2022-03-31 21:03:54
944
原创 Java依赖冲突解决学习探究
一 概述由于阿里妈妈联盟团队负责业务的特殊性,系统有庞大的对外依赖,依赖集团六七十个团队服务及N多工具组件,通过此文和大家分享一下我们积累的一些复杂依赖有效治理的经验,除了简单技术技巧的总结外,也会探讨一些关于这方面架构的思考,希望此文能系统彻底的解决java依赖冲突对大家的困扰。二 依赖冲突产生的本质原因要解决依赖冲突,首先要理解一下java依赖冲突产生的本质原因。以上图为例,目前阿里大部分java工程都是maven工程,此类工程从开发到上线要经历以下两个重要步骤:1 编译打包平时我们编写
2022-02-28 19:57:01
426
原创 Redis AOP设计和实现学习记录
Redis 作为一种非常流行的内存数据库,通过将数据保存在内存中,Redis 得以拥有极高的读写性能。但是一旦进程退出,Redis 的数据就会全部丢失。为了解决这个问题,Redis 提供了 RDB 和 AOF 两种持久化方案,将内存中的数据保存到磁盘中,避免数据丢失。本文将重点讨论AOF持久化方案,以及其存在的一些问题,并探讨在Redis 7.0 (已发布RC1) 中Multi Part AOF(下文简称为MP-AOF,本特性由阿里云数据库Tair团队贡献)设计和实现细节。一 AOFAOF( appe
2022-02-21 00:24:12
249
原创 并发场景下的幂等问题学习
我们先来回顾一下幂等的概念:幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。–来自百度百科实人认证在业务上有幂等设计,其一般流程为:1)用户选择实人认证后会在服务端初始化一条记录;2)用户在钉钉移动端按照指示完成人脸比对;3)比对完成后访问服务端修改数据库状态。在第3步中,在修改数据库状态之前,会判断「是否已经初始化」、「是否已经实人认证」以及「智科是否返回认证成功」
2022-01-03 22:29:46
338
原创 redis实现限流
面对越来越多的高并发场景,限流显示的尤为重要。当然,限流有许多种实现的方式,Redis具有很强大的功能,我用Redis实践了三种的实现方式,可以较为简单的实现其方式。Redis不仅仅是可以做限流,还可以做数据统计,附近的人等功能,这些可能会后续写到。第一种:基于Redis的setnx的操作我们在使用Redis的分布式锁的时候,大家都知道是依靠了setnx的指令,在CAS(Compare and swap)的操作的时候,同时给指定的key设置了过期实践(expire),我们在限流的主要目的就是为了在单位
2021-11-30 09:50:08
139
原创 Undo Log学习
一 Undo Log的作用****数据库故障恢复机制的前世今生中提到过,Undo Log用来记录每次修改之前的历史值,配合Redo Log用于故障恢复。这也就是InnoDB中Undo Log的第一个作用:1 事务回滚在设计数据库时,我们假设数据库可能在任何时刻,由于如硬件故障,软件Bug,运维操作等原因突然崩溃。这个时候尚未完成提交的事务可能已经有部分数据写入了磁盘,如果不加处理,会违反数据库对Atomic的保证,也就是任何事务的修改要么全部提交,要么全部取消。针对这个问题,直观的想法是等到事务真
2021-11-09 12:22:47
930
原创 线程池学习记录
注:此文参照阿里技术公众号《10问10答:你真的了解线程池吗?》,仅作为个人学习记录。《Java开发手册》中强调,线程资源必须通过线程池提供,而创建线程池必须使用ThreadPoolExecutor。手册主要强调利用线程池避免两个问题,一是线程过渡切换,二是避免请求过多时造成OOM。但是如果参数配置错误,还是会引发上面的两个问题。所以本节我们主要是讨论ThreadPoolExecutor的一些技术细节,并且给出几个常用的最佳实践建议。我在查找资料的过程中,发现有些问题存在争议。后面发现,一部分原因是因
2021-09-01 10:04:40
106
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人