【京东技术双十一】记一次线上问题引发的对 Mysql 锁机制分析
在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!
MySQL:刷脏相关
这里简单记录一下刷脏和IO代码的简要流程(8.0.23),以下内容仅供参考。先简要总结一下: 当大于默认8192(innodb_lru_scan_depth*innodb_buffer_pool_instances)的时候只有flush list刷脏,也就是buffer pool 的page会尽量填充,不做LRU淘汰。 当小于默认8192(innodb_lru_scan_depth*innodb_buffer_pool_instances)的时候会触发LRU扫描,扫描的时候需要释放page,如果page是干净的则直接释放放入free list,且做LRU淘汰。如果page不是干净的则需要进行LRU刷脏,完成后且放入free list,且需要做LRU淘汰。 刷盘总是先写入到DBLWR,这是同步IO的方式,如果不是O_D打开的文件还需要做对DBLWR做FSYNC。 刷盘写入数据文件由DBLW
数据库:系统设计的核心
在系统设计中,理解数据库的复杂性至关重要。如果你正在为这样的设计做准备,而对数据库感到困惑,那么你来对地方了。 我将带你了解数据库的基本知识,从基础知识到细节。
MySQL哪些情况需要添加索引?
文章+执行计划,都掌握的话,我们可以优化80%的SQL了。 这一篇文章,就来聊一下,MySQL在哪些情况下,需要添加索引(根据小编以往的工作经验,绝大多数SQL,只要添加合适的索引,基本就完成了优化)。 特别是最后一种场景,如果没添加合适的索引,很可能长时间获取不到结果。 我们就一一分析这些需要创建索引的场景:
技术抽丝剥茧|为什么 Redis 内部使用不同编码?
通过这次问题分析,我们可以看到 Redis 内部提供的不同编码会带来不同的性能和成本差别,建议大家在使用 Redis 时,也可以多了解自己的访问场景,根据实际情况来做一些调优。同时也提醒我们,时刻保持对问题根因的探究精神,才可以使我们自己的技术和业务能力不断提升。
千万级数据深分页查询SQL性能优化实践
分页查询在数据库中是一种很常见的应用场景,一般都可以使用limit语句快速实现。但是随着表数据的增长,limit查询性能也会越来越慢。
Spring Cache 缓存注解这样用,实在是太香了!
作者最近在开发公司项目时使用到 Redis 缓存,并在翻看前人代码时,看到了一种关于 @Cacheable 注解的自定义缓存有效期的解决方案,感觉比较实用,因此作者自己拓展完善了一番后分享给各位。
聊一聊Greenplum与PostgreSQL
总而言之,Greenplum虽然同为PostgreSQL系的产品,但是还是有诸多差异,但用好分布式是个技术活。
MySQL:MDL LOCK的“穿越行为”
本案例中我们得到几个结论: 语句是否能够执行主要看的优先级矩阵和兼容矩阵,前者用于判断本次执行的语句和堵塞中的MDL LOCK谁的优先级更高,优先级更高则可以继续判断兼容矩阵。后者用于判定本次执行的语句和获取MDL LOCK的语句(或者事务)是否兼容。 lock table read 一大批表的时候,可能某些表加锁成功了,而某些表加锁堵塞了,看起来是整个lock table read语句堵塞了。 mysqldump导出如果全是innodb表肯定是要--single-transaction的。
mysql中一条查询语句的执行全过程是怎样的?
mysql作为最常用的关系型数据库,无论是在应用还是在面试中都是必须掌握的技能。
浅析Redis大Key
在京东到家购物车系统中,用户基于门店能够对商品进行加车操作。用户与门店商品使用Redis的Hash类型存储,如下代码块所示。不知细心的你有没有发现,如果单门店加车商品过多,或者门店过多时,此Key就会越来越大,从而影响线上业务。
(大表小技巧)有时候 2 小时的 SQL 操作,可能只要 1 分钟
如果直接执行这条 SQL 会发生什么问题呢?
如何解决 MySQL 主从延时问题?
MySQL 主从延时的原因是什么? 具体哪个环节发生延时? 如何解决呢?
[bug]MySQL 哈希扫描错误地应用日志导致主从中断
数据库版本:5.7.21,遇见一个数据同步的bug,主库调用一个函数操作dml,导致主从异常中断。
mybatis plus很好,但是我被它坑了!
作者今天在开发一个后台发送消息的功能时,由于需要给多个用户发送消息,于是使用了 mybatis plus 提供的 saveBatch() 方法,在测试环境测试通过上预发布后,测试反应发送消息接口很慢得等 5、6 秒,于是我就登录线上环境查看执行日志,发现是 mybatis plus 提供的 saveBatch() 方法执行很慢导致,于是也就有了本篇文章。
为什么MySQL没有负载,但交易却跑不动?
在MySQL的数据库中,我们有时会发现MySQL数据库明明没有负载,CPU、硬盘、内存和网络等资源都很空闲,但很多SQL都pending在哪儿,MySQL数据库无法处理交易。这是怎么回事呢?
面试官:Redis 内存数据满了,会宕机吗?
Redis(Remote Dictionary Server)是一种开源的内存数据库,常用于缓存和数据存储。然而,一个常见的面试问题是:当Redis的内存数据满了之后,会发生什么情况?是否会宕机?在本文中,我们将深入探讨这个问题,并提供详细的解答。
MySQL 字符集与乱码与collation设置的问题?
问题是这样的,最近有同学问关于MySQL 的字符乱码的问题,说从一个数据库到另一个数据库,配置相同,但是为什么这个数据库的中文就是中文,到另一个数据库就是乱码?
MySQL什么是InnoDB检查点?
了解什么是InnoDB检查点,以及它们如何与修改页面的刷新交互。
Redis哨兵集群:哨兵挂了,主从库还能切换吗?
如果你曾经部署过哨兵集群,你会发现,在配置哨兵信息时,我们只需要指定主库的 IP 和端口,而无需明确配置其他哨兵实例的连接信息。这是因为哨兵集群中的各个实例会相互感知和发现,形成一种自动协作的机制。