java技术圈 为您找到相关结果 8

[转]静态方法加锁,和非静态方法加锁区别

文地址:http://greemranqq.iteye.com/blog/1974143 今天看了到有意思的题:在静态方法上加锁 和 非静态方法加锁 有什么区别,从而再次引出锁机制的一些理解。 先看方法: // 这是一个很简单的类,里面共享静态变量 num,然后一个静态 和 非静态方法,都加上锁 // 我们假设有两个线程同时操作这两个方法,那么数据能互斥吗? Java代码 public class Walk { public static int num = 100; public static Walk walk = new Walk(); // 静态 public synchronized static int run(){ int i = 0; while (i < 10) { try...阅读全文

博文 2019-04-04 09:46:49 www.allocmem.com

根据拓扑图理解golang的sync.Map工作原理 - 星期八

fizz 153 根据拓扑图理解golang的sync.Map工作原理 golang sync map 源码 拓扑图 发布于 2019-11-08 约 4 分钟 sync.Map的拓扑关系图 读懂关系图需要了解的几个关键点 var expunged = unsafe.Pointer(new(interface{})) type Map struct type readOnly struct type entry struct func (m *Map) Load(key interface{}) (value interface{}, ok bool) func (m *Map) Store(key, value interface{}) func (m *Map) Delete(key i...阅读全文

博文 2020-02-17 14:15:57 SegmentFault 思否

MySQL 加锁处理分析

本文来自:何登成的技术博客 一、背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的分析出这条语句会加什么锁?会有什么样的使用风险?甚至是分析线上的一个死锁场景,了解死锁产生的原因。 注:MySQL是一个支持插件式存储引擎的数据库系统。本文下面的所有介绍,都是基于InnoDB存储引擎,其他引擎的表现,会有较大的区别。 1.1 MVCC:Snapshot Read vs Current Read MySQL InnoDB...阅读全文

博文 2020-07-24 17:02:19 Sina App Engine Blog

<转>一个最不可思议的MySQL死锁分析

1 死锁问题背景 1 1.1 一个不可思议的死锁 1 1.1.1 初步分析 3 1.2 如何阅读死锁日志 3 2 死锁原因深入剖析 4 2.1 Delete操作的加锁逻辑 4 2.2 死锁预防策略 5 2.3 剖析死锁的成因 6 3 总结 7 死锁问题背景 做MySQL代码的深入分析也有些年头了,再加上自己10年左右的数据库内核研发经验,自认为对于MySQL/InnoDB的加锁实现了如指掌,正因如此,前段时间,还专门写了一篇洋洋洒洒的文章,专门分析MySQL的加锁实现细节:《MySQL加锁处理分析》。 但是,昨天”润洁”同学在《MySQL加锁处理分析》这篇博文下咨询的一个MySQL的死锁场景,还是彻底把我给难住了。此死锁,完全违背了本人原有的锁知识体系,让我百思不得其解。本着机器不会骗人,既...阅读全文

博文 2020-07-24 17:17:16 阿里云开发者社区

利用硬链接和truncate降低drop table对线上环境的影响 - billy鹏

众所周知drop table会严重的消耗服务器IO性能,如果被drop的table容量较大,甚至会影响到线上的正常。 首先,我们看一下为什么drop容量大的table会影响线上服务 直接执行drop table,mysql会将表定义和表数据全都删除,包括磁盘上的物理文件,也包括buffer pool中的内存数据。 这就分两步,第一步从buffer pool中删除,这会涉及到table_cache的lock,如果持有table_cache的lock,这将导致其他查询都无法执行。这种情况在没有innodb_per_table之前尤为严重。另外,mysql5.5.23之后添加lazy drop table功能,这个功能用来解决mutex on the LRU list。其中心思想就是加锁,找到需要...阅读全文

博文 2021-06-10 09:25:08 博客园

深入学习MySQL事务:ACID特性的实现原理 - 编程迷思

事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段。本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理。 MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。 一、基础概念 事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行。作为一个关系型数据库,MySQL支持事务,本文介绍基于MySQL5.6。 首先回顾一下MySQL事务的基础知识。 1. 逻辑架构和存储引擎 图片来源:https://blog.csdn.net/fuzhongmin05/article/details/70904190 如上图所示,MySQL服务器逻辑架构从上往下可...阅读全文

博文 2021-08-17 06:36:55 博客园

高性能队列——Disruptor

背景Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年,企业应用软件专家Martin Fowler专门撰写长文介绍。同年它还获得了Oracle官方的Duke大奖。目前,包括Apache Storm、Camel、Log4j 2在内的很多知名项目都应用了Disruptor以获取高性能。在美团技术团队它也有不少应用,有的项目架构借鉴了它的设计机制。本文从实战角度剖析了Disruptor的实现原理。需要特别指出的是,这里所说的队列是系统内部的内存队列,而不是Kafka这样的分布式队列...阅读全文

博文 2023-03-03 02:58:41 美团技术团队

update 没加索引会锁全表?

# update 没加索引会锁全表? 大家好,我是小林。 昨晚在群划水的时候,看到有位读者说了这么一件事。 大概就是,在线上执行一条 update 语句修改数据库数据的时候,where 条件没有带上索引,导致业务直接崩了,被老板教训了一波 这次我们就来看看: 为什么会发生这种的事故? 又该如何避免这种事故的发生? 说个前提,接下来说的案例都是基于 InnoDB 存储引擎,且事务的隔离级别是可重复读。 # 为什么会发生这种的事故? InnoDB 存储引擎的默认事务隔离级别是「可重复读」,但是在这个隔离级别下,在多个事务并发的时候,会出现幻读的问题,所谓的幻读是指在同一事务下,连续执行两次同样的查询语句,第二次的查询语句可能会返回之前不存在的行。 因此 InnoDB 存储引擎自己实现了行锁,通过...阅读全文

博文 2024-07-30 10:37:04 小林coding