什么是自旋锁 自旋锁要从多线程下的锁机制说起,由于多处理器系统环境中有些资源因为其有限性,有时需要互斥访问(mutual exclusion),这时会引入锁的机制,只有获取了锁的进程才能获取资源访问。即每次只能有且只有一个进程能获取锁,才能进入自己的临界区,同一时间不能两个或两个以上进程进入临界区, ...
分类:
其他好文 时间:
2019-10-17 17:43:19
阅读次数:
94
mysql锁机制分为表级锁和行级锁:共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。排他锁又称为写锁,简称X锁,顾名思义,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享... ...
分类:
其他好文 时间:
2019-10-17 12:05:34
阅读次数:
121
synchronized 1、 锁机制的特性 互斥性:在同一时间只允许一个线程持有某个对象锁(原子性) 可见性:必须确保在锁被释放之前,对共享变量所在的修改,对于随后获得该锁的另一个线程是可见的 2、synchronized的使用 2.1 锁的分类 对象锁:synchronized(this|obj ...
分类:
其他好文 时间:
2019-10-11 12:41:39
阅读次数:
52
悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做 ...
分类:
其他好文 时间:
2019-10-08 22:25:47
阅读次数:
104
一、概念 1. AQS(AbstractQueuedSynchronizer),抽象队列式同步器,在java.util.concurrent.locks(JUC)包下,是除了Java自带的synchronized关键字之外的锁机制 2. AQS机制:如果请求的资源被其他线程锁定,将当前线程加入等待队 ...
分类:
编程语言 时间:
2019-10-06 09:27:54
阅读次数:
92
首先强调一点:所有锁(包括内置锁和高级锁)都是有性能消耗的,在高并发的情况下,使用锁可能比线程本身的消耗要大,由于锁机制带来的上下文切换,资源同步等消耗,所以如果可能,在任何情况下都应该少使用锁,如果不可避免,采用非阻塞算法是一个不错的解决方案。 内部锁 Java语言通过synchronized关键 ...
分类:
其他好文 时间:
2019-09-28 20:26:15
阅读次数:
155
mysql的锁机制 含义:锁是计算机协调多个进程或线程并发访问某一资源的机制 在数据库中,除了传统的计算资源(如CPU,RAM,I/O等)的争用之外,数据也是一种用户共享的资源。如何保证数据并发访问的一直型、有效性是所有数据库必须解决的问题,锁冲突也是影响数据库并发访问性能的一个重要因素。因而,锁对 ...
分类:
数据库 时间:
2019-09-24 23:03:05
阅读次数:
190
一、协程的优势 1、极高的执行效率。没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。 2、不需要多线程的锁机制。因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。 因为协程是一个线程执行,利用多核CPU最简单 ...
分类:
编程语言 时间:
2019-09-22 21:41:25
阅读次数:
125
***explain ****分析******* 1观察,至少跑一天,看看生产的慢SQL情况 2开启慢查询日志,设置阙值,比如超过5秒钟的就是慢SQL,并将它抓取出来 3explain+慢SQL分析 4show profile 5运维经理 or DBA,进行SQL数据库服务器的参数调优 *****总 ...
分类:
数据库 时间:
2019-09-11 09:56:57
阅读次数:
112
为什么要加锁问题背景当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。要解决的问题多用户环境下保证数据库完整性和一致性锁是什么在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象
分类:
数据库 时间:
2019-09-09 14:42:09
阅读次数:
144