转自:https://www.cnblogs.com/wchxj/p/8083271.html Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Ja ...
分类:
编程语言 时间:
2019-10-26 10:23:32
阅读次数:
83
1. 锁分类 MySQL中主要分为全局锁、表级锁和行锁三类。本篇主要涉及全局锁和表级锁。 2. 全局锁 全局锁是对整个数据库实例进行加锁。 Flush table with read lock(FRTWRL)该命令用于加全局锁。使用该命令之后,整个库处于只读状态,不能执行数据的增删改查、建表、修改表 ...
分类:
数据库 时间:
2019-10-19 16:32:41
阅读次数:
122
1. 锁分类 MySQL中主要分为全局锁、表级锁和行锁三类。本篇主要涉及全局锁和表级锁。 2. 全局锁 全局锁是对整个数据库实例进行加锁。 Flush table with read lock(FRTWRL)该命令用于加全局锁。使用该命令之后,整个库处于只读状态,不能执行数据的增删改查、建表、修改表 ...
分类:
数据库 时间:
2019-10-10 17:21:10
阅读次数:
88
分布式锁三种实现方式: 一, 基于数据库实现分布式锁 1. 悲观锁 利用select … where … for update 排他锁 注意: 其他附加功能与实现一基本一致,这里需要注意的是“where name=lock ”,name字段必须要走索引,否则会锁表。有些情况下,比如表不大,mysql ...
分类:
其他好文 时间:
2019-10-09 22:33:31
阅读次数:
139
悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做 ...
分类:
其他好文 时间:
2019-10-08 22:25:47
阅读次数:
104
1、InnoDB存储引擎支持事务、行锁以及外键,主要面向在线事务处理(OLTP)的应用,是MySQL5.5.8之后默认的存储引擎。 2、InnoDB的体系架构主要包括两部分: (1)后台线程:负责刷新内存池中的数据,以及将已修改的数据文件刷新到磁盘文件。 包括Master Thread、IO Thr ...
分类:
数据库 时间:
2019-10-02 19:10:39
阅读次数:
129
MySQL四层分层:(自上往下执行) 连接层:提供预客户端连接的服务。 服务层: 1.提供各种用户使用的接口 2.提供各种sql优化器(mysql如果发现你自己的sql写的太烂,会自动帮你优化) 引擎层: INNODB:事务优先 ( 适合高并发操作,使用的是行锁) MYISAM: 性能有限 (使用的 ...
分类:
数据库 时间:
2019-09-24 13:46:35
阅读次数:
108
from: https://segmentfault.com/a/1190000009374567 什么是MVCC MVCC即Multi-Version Concurrency Control,中文翻译过来叫多版本并发控制。 MVCC是解决了什么问题 众所周知,在MYSQL中,MyISAM使用的是表 ...
分类:
数据库 时间:
2019-09-23 15:19:26
阅读次数:
108
一、同步锁 1.1 多个线程抢占资源的情况 1.2 对公共数据进行锁操作 1.3 同步锁的引用 既然加锁会让运行变成串行,那么我在start之后立即使用join,就不用加锁了啊,也是串行的效果啊 没错:在start之后立刻使用jion,肯定会将100个任务的执行变成串行,毫无疑问,最终n的结果也肯定 ...
分类:
编程语言 时间:
2019-09-22 21:44:48
阅读次数:
112
递归锁 互斥锁 递归锁 死锁 死锁就是在使用互斥锁的时候,同时开启了两把锁,就会导致死锁问题 因为同一时间只能由一个线程打开锁,然后关闭锁之后才可以去有另外一个线程去执行锁 就是一个线程还没有释放一个锁,但是另一个线程已经拿到了其他锁的钥匙,导致第一个执行的线程没办法拿到下一个锁的钥匙,也没办法执行 ...
分类:
其他好文 时间:
2019-09-18 17:40:01
阅读次数:
96