再聊对架构决策记录的一些思考

2 月 22 日
阅读 2 分钟
300
1 引言第一次在社区发文聊ADR(架构决策记录)是在2022年8月份,在文章( 轻量级ADR机制 )中,详细介绍了以下几个主题:•团队研发面临的主要问题•ADR的结构剖析•ADR的存储形式•ADR在研发流程中所处的位置•ADR常见的误区与疑问在实践中发现仍然有一些普遍性问题与挑战可以探讨。2 研发团队一些普遍现象视角一:架构决策...

记一次生产慢sql索引优化及思考 | 京东云技术团队

2023-12-18
阅读 3 分钟
280
看了一下,还好不是很频繁,内心会更加从容排查问题,应该是特定条件下没有走到索引导致,如果频繁出现慢查询,可能会将数据库连接池打满,导致数据库不可用,从而导致应用不可用。
封面图

理解Mysql索引原理及特性 | 京东物流技术团队

2023-12-13
阅读 8 分钟
374
索引就好比书本的目录,提高数据库表数据访问速度的数据库对象。当我们的请求打过来之后,如果有目录,就会快速的定位到章节,再从章节里找到数据。如果没有目录,如大海捞针一般,难度可见一斑。这就是我们经常碰到的罪魁祸首,全表扫描。
封面图

浅谈SQL优化小技巧 | 京东云技术团队

2023-12-11
阅读 5 分钟
793
回顾MySQL的执行过程,帮助介绍如何进行sql优化。(1)客户端发送一条查询语句到服务器;(2)服务器先查询缓存,如果命中缓存,则立即返回存储在缓存中的数据;(3)未命中缓存后,MySQL通过关键字将SQL语句进行解析,并生成一颗对应的解析树,MySQL解析器将使用MySQL语法进行验证和解析。​ 例如,验证是否使用了错误的...
封面图

从ClickHouse通往MySQL的几条道路 | 京东物流技术团队

2023-12-08
阅读 2 分钟
316
ClickHouse 是 Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快 100-1000 倍。ClickHouse 的性能超过了目前市场上可比的面向列的 DBMS,每秒钟每台服务器每秒处理数亿至十亿多行和数十千兆字节的数据。它是一个用于联机分析(OLAP)的列式数据库管理系统...
封面图

浅析MySQL代价模型:告别盲目使用EXPLAIN,提前预知索引优化策略 | 京东云技术团队

2023-12-07
阅读 19 分钟
264
在 MySQL 中,当我们为表创建了一个或多个索引后,通常需要在索引定义完成后,根据具体的数据情况执行 EXPLAIN 命令,才能观察到数据库实际使用哪个索引、是否使用索引。这使得我们在添加新索引之前,无法提前预知数据库是否能使用期望的索引。更为糟糕的是,有时甚至在添加新的索引后,数据库在某些查询中会使用它,而...
封面图

并发情况如何实现加锁来保证数据一致性? | 京东云技术团队

2023-12-05
阅读 8 分钟
317
AQS机制:如果被请求的共享资源空闲,那么就当前请求资源的线程设置为有效的工作线程,将共享资源通过CAScompareAndSetState设置为锁定状态;如果共享资源被占用,就采用一定的阻塞等待唤醒机制(CLH变体的FIFO双端队列)来保证锁分配。
封面图

MYSQL EXPLAIN 执行计划 | 京东物流技术团队

2023-12-04
阅读 11 分钟
232
有了慢查询语句后,就要对语句进行分析。一条查询语句在经过 MySQL 查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。EXPLAIN 语句来能够查看某个查询语句的具体执行计划,要搞...
封面图

一次讲清楚京东科技百亿级用户画像平台的探索和实践 | 京东云技术团队

2023-12-04
阅读 8 分钟
288
背景如果你是用户,当你使用抖音、小红书的时候,假如平台能根据你的属性、偏好、行为推荐给你感兴趣的内容,那就能够为你节省大量获取内容的时间。如果你是商家,当你要进行广告投放的时候,假如平台推送的用户都是你潜在的买家,那你就可以花更少的钱,带来更大的收益。这两者背后都有一项共同的技术支撑,那就是用户...
封面图

老知识复盘-SQL从提交到执行到底经历了什么 | 京东云技术团队

2023-11-22
阅读 4 分钟
262
sql(Structured Query Language: 结构化查询语言)是高级的费过程化编程语言,允许用户在高层数据结构上工作, 是一种数据查询和程序设计语言, 也是(ANSI)的一项标准的计算机语言. but... 目前仍然存在着许多不同版本的sql语言,为了与ANSI标准相兼容, 它们必须以相似的方式共同地来支持一些主要的命令(比如SELECT、UPDATE、...
封面图

记一次线上问题引发的对 Mysql 锁机制分析 | 京东物流技术团队

2023-11-15
阅读 8 分钟
268
最近双十一开门红期间组内出现了一次因 Mysql 死锁导致的线上问题,当时从监控可以看到数据库活跃连接数飙升,导致应用层数据库连接池被打满,后续所有请求都因获取不到连接而失败
封面图

MYSQL 事务的底层原理 | 京东物流技术团队

2023-11-14
阅读 14 分钟
287
为什么需要使用 WAL,然后包含 redo 和 undo 信息呢?举个例子,如果一个系统直接将变更应用到系统状态中,那么在机器掉电重启之后系统需要知道操作是成功了,还是只有部分成功或者是失败了。如果使用了 WAL,那么在重启之后系统可以通过比较日志和系统状态来决定是继续完成操作还是撤销操作。
封面图

怎样阅读 h2 数据库源码 | 京东物流技术团队

2023-11-13
阅读 2 分钟
287
阅读 h2 数据库的源码是一项复杂的任务,需要对数据库原理、Java 语言和操作系统有深入的理解。可以从以下几方面入手来完成。环境准备首先,你需要在你的机器上安装和配置好开发环境,包括 JDK、Maven、IDE 调试器等工具。然后,从h2 的官方网站或GitHub上下载源码。IDE 导入 h2 数据库源码,根据不同的调试场景,启用不...
封面图

线上SQL超时场景分析-MySQL超时之间隙锁 | 京东物流技术团队

2023-11-10
阅读 7 分钟
356
前言之前遇到过一个由MySQL间隙锁引发线上sql执行超时的场景,记录一下。背景说明分布式事务消息表:业务上使用消息表的方式,依赖本地事务,实现了一套分布式事务方案消息表名:mq_messages数据量:3000多万索引:create_time 和 statusstatus:有两个值,1 和 2, 其中99%以上的状态都是2,表示分布式事务全部已经执行...
封面图

从 SQL 查询优化技巧去看 h2 数据库查询原理 | 京东物流技术团队

2023-11-09
阅读 4 分钟
352
本文目标是:了解查询的核心原理,对比 SQL 查询优化技巧在 h2database 中的落地实现。前提:为了贴近实际应用,本文 Code Insight 基于 BTree 存储引擎。数据查询核心原理数据库实现查询的原理:遍历表/索引,判断是否满足where筛选条件,添加到结果集。简单通用。对于选择表还是索引、如何遍历关联表、优先遍历哪个表...
封面图

有效降低数据库存储成本方案与实践 | 京东云技术团队

2023-11-08
阅读 4 分钟
235
随着平台的不断壮大,业务的不断发展,后端系统的数据量、存储所使用的硬件成本也逐年递增。从发展的眼光看,业务与系统要想健康的发展,成本增加的问题必须重视起来。目前业界普遍认同开源节流大方向,很多企业部门也针对数据库存储降低成本进行了尝试,有的删数据、有的删索引、有的做压缩、有的做冷热分离,方式方法...
封面图

【慢SQL性能优化】 一条SQL的生命周期 | 京东物流技术团队

2023-11-08
阅读 4 分钟
297
一、 一条简单SQL在MySQL执行过程一张简单的图说明下,MySQL架构有哪些组件和组建间关系,接下来给大家用SQL语句分析例如如下SQL语句 {代码...} 其中name为索引,我们按照时间顺序来分析一下客户端:如MySQL命令行工具、Navicat、DBeaver或其他应用程序发送SQL查询到MySQL服务器。连接器:负责与客户端建立连接、管理连...
封面图

研发日常踩坑-Mysql分页数据重复 | 京东云技术团队

2023-10-19
阅读 3 分钟
387
在MySQL中分页查询,我们经常会用limit,如:limit(0,20)表示查询第一页的20条数据,limit(20,20)表示查询第二页的数据。业务上我们通常也会在分页的时候加上排序 order by;
封面图

记一次MySQL5初始化被kill的问题排查 | 京东云技术团队

2023-10-17
阅读 16 分钟
188
由于测试环境JED申请比较繁琐,所以Eone提供了单机版Mysql供用户使用,近期Eone搭建Mysql5的时候发现莫名被kill了,容器规格是4C8G,磁盘30G
封面图

MySQL的index merge(索引合并)导致数据库死锁分析与解决方案 | 京东云技术团队

2023-10-13
阅读 4 分钟
237
在DBS-集群列表-更多-连接查询-死锁中,看到9月22日有数据库死锁日志,后排查发现是因为mysql的优化-index merge(索引合并)导致数据库死锁。
封面图

【信创】 JED on 鲲鹏(ARM) 调优步骤与成果 | 京东云技术团队

2023-10-12
阅读 7 分钟
310
基于国家对信创项目的大力推进,为了自主可控的技术发展,基础组件将逐步由国产组件替代,因此从数据库入手,将弹性库JED部署在 国产华为鲲鹏机器上(基于ARM架构)进行调优,与Intel (X86)进行性能对比。
封面图

我在前端写Java SpringBoot项目 | 京东云技术团队

2023-10-10
阅读 11 分钟
574
玩归玩,闹归闹,别拿 C端 开玩笑! 这里不推荐大家把Node服务作为C端服务,毕竟它是单线程多任务 机制。 这一特性是 Javascript 语言设计之初,就决定了它的使命 - Java >>>【Script】,这里就不多解释了,大家去看看 JavaScript 的历史就知道啦~这也就决定了,它不能像后端语言那样 多线程多任务,用户访问...
封面图

MySQL innoDB 间隙锁产生的死锁问题 | 京东云技术团队

2023-10-07
阅读 3 分钟
211
线上经常偶发死锁问题,当时处理一张表,也没有联表处理,但是有两个mq入口,并且消息体存在一样的情况,频率还不是很低,这么一个背景,我非常容易怀疑到,两个消息同时近到这一个事务里面导致的,但是是偶发的,又模拟不出来什么场景会导致死锁,只能进行代码分析,问题还原的方式去排查问题。
封面图

MySQL事务死锁问题排查 | 京东云技术团队

2023-09-26
阅读 7 分钟
593
一、背景在预发环境中,由消息驱动最终触发执行事务来写库存,但是导致MySQL发生死锁,写库存失败。 {代码...} 初步排查,在同一时刻有两条请求进行写库存的操作。时间前后相差1s,但最终执行结果是,这两个事务相互死锁,均失败。事务定义非常简单,伪代码描述如下: {代码...} 该数据库表的索引结构如下:索引类型索引...

Vitess全局唯一ID生成的实现方案 | 京东云技术团队

2023-09-26
阅读 6 分钟
563
为了标识一段数据,通常我们会为其指定一个唯一id,比如利用MySQL数据库中的自增主键。 但是当数据量非常大时,仅靠数据库的自增主键是远远不够的,并且对于分布式数据库只依赖MySQL的自增id无法满足全局唯一的需求。因此,产生了多种解决方案,如UUID,SnowFlake等。下文将介绍Vitess是如何解决这个问题的。

慢SQL原因分析之索引失效 | 京东物流技术团队

2023-09-21
阅读 7 分钟
670
通过执行explain,发现实际上数据库执行了全表扫描,从而被系统判定为慢sql。这时有一定开发经验的同事会说:“字段区分度不够,这种字段作单独索引是没有意义的”。那么为什么会产生索引失效这种情况呢?索引失效都有哪些情况呢?

M3E/OpenAi+vearch内容查重实践 | 京东云技术团队

2023-09-20
阅读 39 分钟
814
京东健康内容中台H2有一个目标就是需要替换两家CP内容(总体内容体量百万级),我们现在的逻辑是想按照PV热度优先高热去新生产和替换。替换后可以极大的节省cp内容引入的成本。

慢SQL治理实践及落地成果分享 | 京东物流技术团队

2023-09-19
阅读 3 分钟
938
数据库系统性能问题会对应用程序的性能和用户体验产生负面影响。慢查询可能导致应用程序响应变慢、请求堆积、系统负载增加等问题,甚至引发系统崩溃或不可用的情况。慢SQL治理是在数据库系统中针对执行缓慢的SQL查询进行优化和改进的一项重要工作。

分布式系统的主键生成方案对比 | 京东云技术团队

2023-09-18
阅读 4 分钟
633
​UUID(通用唯一识别码)是由32个十六进制数组成的无序字符串,通过一定的算法计算出来。为了保证其唯一性,UUID规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素,以及从这些元素生成UUID的算法。一般来说,算法可以保证任何地方产生的任意一个UUID都不会相同,但这个唯一性是有...
封面图

高性能MySQL实战(二):索引 | 京东物流技术团队

2023-09-12
阅读 8 分钟
444
我们在上篇 高性能MySQL实战(一):表结构 中已经建立好了表结构,这篇我们则是针对已有的表结构和搜索条件为表创建索引。1. 根据搜索条件创建索引我们还是先将表结构的初始化 SQL 拿过来: {代码...} 现有如下搜索条件:根据 接口名称 来搜索对应的调用日志根据 状态 查询成功或异常的调用日志根据 接口名称 和 状态 ...
封面图