本文主要记录学习MyISAM 和 InnoDB 这两个存储引擎。为什么要学习机制是计算机协调多个进程或线程并发访问某一资源机制。 因为数据也是一种供许多用户共享资源,如何保证数据并发访问一致性、有效性是所有数据库必须解决一个问题,冲突也是影响数据库并发访问性能一个重要因素,所以进一步学习MySQL,就需要去了解它机制。MySQL概述:相对其他数据库而言,MySQ
# MySQL应用MySQL是一种用于管理并发访问机制,可以确保多个用户在同一时间对数据库进行操作时不会出现冲突。使用可以保证数据完整性和一致性,避免数据丢失和错误。 ## 类型 MySQL中常见包括共享(Shared Lock)、排他(Exclusive Lock)和行(Row Lock)。共享用于读操作,多个用户可以同时持有共享;排他用于写操作,
原创 2024-05-10 07:17:24
7阅读
作为并发共享数据,保证一致性工具,在JAVA平台有多种实现(如 synchronized(重量级) 和 ReentrantLock(轻量级)等等 ) 。这些已经写好提供为我们开发提供了便利。 1.重入 重入,也叫做递归,指的是同一线程 外层函数获得之后 ,内层递归函数仍然有获取该
原创 2022-05-28 01:14:46
560阅读
package com.xielu.test; public class explicit { private static Lock lock = new ReentrantLock(); private static Condition odd = lock.newCondition(); pr ...
转载 2021-10-27 15:29:00
44阅读
2评论
在面试菜鸟时候碰到编程问题,没答好,记录一下: package com.xielu.test; /** * Hello world! * */ public class App { private Object lock = new Object(); private static int ...
转载 2021-10-27 15:18:00
234阅读
2评论
Java ,自旋是一种备受关注并发控制机制,适用于高性能多线程环境。它通过重试而不是阻塞方式来获得,因而在某些情况下可以显著提升性能。接下来,我将阐述自旋应用、特性以及与其他比较,帮助读者更全面了解自旋。 ### 背景定位 自旋适用于对资源争用较少场景,尤其是当线程持有时间极短时。在这样情况下,自旋锁相对于重量级(如 `ReentrantLock`)更为高
原创 6月前
2阅读
最近在项目中发现了事务之间死锁问题,所以研究了一下MySQL机制,并且延伸到了MVCC等周边知识,我只在这里介绍一下开发可能遇到问题,具体内容推荐阅读《高性能MySQL》。前言:mysql有两种机制——读(共享)和写,意思就是一个进程获取读的话,所有进程都可以进行读,但不可以写,如果一个进程获取了写,那除了这个进程之外其他进程都不可以进行读写。由于myisam不存在死锁问题也
推荐 原创 2013-12-18 14:45:06
1172阅读
2评论
## Java应用场景 ### 1. 简介 Java机制是多线程编程中一种重要同步机制,用于保护共享资源一致性和可见性。主要作用是确保在同一时刻只有一个线程可以访问被保护代码块或资源,从而避免了多线程并发访问导致数据竞争和不一致性问题。 在本文中,我们将介绍Java应用场景以及如何使用不同类型来实现线程同步和互斥。 ### 2. 应用场景 在Ja
原创 2023-09-27 08:51:08
113阅读
文章目录一.什么是乐观、悲观二.MySQL乐观与悲观1.悲观1.互斥-for update2.共享-lock in share mode3.update、insert、delete自动加行2.乐观-版本号控制 一.什么是乐观、悲观乐观指的是在对数据进行读取时,默认认为此时没有线程去修改数据(在JavaAtomic原子类就是这么设计,例如CAS),只是在提交时才去判
转载 2023-07-28 09:04:57
236阅读
MutexMutex 互斥主要用来解决高并发访问问题,常见并发场景有:多个 goroutine 并发更新同一个资源,像计数器;同时更新用户账户信息;秒杀系统;往同一个 buffer 并发写入数据等等。 如果没有互斥控制,就会出现一些异常情况,比如计数器计数不准确、用户账户可能出现透 支、秒杀系统出现超卖、buffer 数据混乱等等。互斥机制互斥是并发控制一个基本手段,是为
转载 2023-10-18 12:42:55
91阅读
一、为什么需要(并发控制)?      在多用户环境,在同一时间可能会有多个用户更新相同记录,这会产生冲突。这就是著名并发性问题。      典型冲突有:        1.丢失更新:一个事务更新覆盖了其它事务更新结果,就是所谓更新丢失。例如:用户A把值从6改为2,用户B把值从2改为
转载 2024-09-09 14:40:37
35阅读
在处理高并发场景时,Java乐观MySQL乐观是两个常常被提起概念。它们分别通过不同机制来应对并发问题。然而,我在项目中遭遇了一些挑战,发现这两者之间配合存在一些潜在问题,今天我就来详细记录一下这个过程。 ### 用户场景还原 在某个高并发电商平台上,用户可以同时进行商品下单操作。考虑到多个用户可能在同一时间内试图购买同一种商品,我们引入了乐观机制来确保数据一致性。以
原创 6月前
34阅读
MySQL 文章目录MySQL1、加锁目的是什么2、是基于什么实现3、分类3.1、属性共享(Share Lock)排他(eXclusive Lock)3.2、粒度记录(Record Lock)间隙(Gap Lock)临键(Next-Key Lock)3.3、状态 1、加锁目的是什么对数据加锁是为了解决事务隔离性问题,让事务之间相互不影响,每个事务进
转载 2023-08-14 22:10:09
75阅读
文章目录MySQL机制和加锁原理1.行2.表3.页4.乐观和悲观4.1悲观4.2乐观5.1InnoDB特性6.Record Lock、Gap Lock、Next-key Lock6.1.Record Lock6.2.Gap Lock6.2.1 什么叫间隙6.2.2 为什么说gap是RR隔离级别下防止幻读主要原因。6.2.3. 主键索引/唯一索引+当前读会加上Gap
转载 2024-03-14 22:01:38
57阅读
本文导读 本文将通过分类,包括库、表、页、行等等,详细介绍MySQL使用、以及MySQL优化和MySQL InnoDB加锁原理。一、MySQL中三种分类 这里直接给出结论,MySQL中有三种:页级、表级和行级。表:低开销,快速锁定;无死锁;粒度大,冲突概率最高,并发性最低。它出现在MyISAM、Memory、InnoDB、BDB和其他存储引擎,基本都支持。行
转载 2023-08-20 19:29:11
67阅读
初步认识说到,相信大家都不陌生,这是我们生活中非常常见一种东西,它形状也各式各样。在生活,我们通常用来锁住房子大门、装宠物笼子、装衣服衣柜、以及装着我们一些小秘密小抽屉......那么相同Java也各式各样,我们往往按照是否含有某一特性来定义,并将进行归、分组,具体可分为以下几种:而这些锁在Java具体实现都离不开synchronized 关键字和java.
在并发编程是一个核心概念,用于确保多个线程可以安全地访问共享资源。Java提供了多种机制,其中最常见两种是乐观和悲观。这两种代表了对待并发问题两种不同策略,它们有各自适用场景和优缺点。1. 悲观 (Pessimistic Locking)悲观背后思想是“悲观”,它总是假设最坏情况,即认为每次读取数据时候,其他线程都可能修改它。因此,当一个线程读取数据时,它会先加锁,
原创 精选 2023-12-15 17:05:38
305阅读
自旋自旋 Spinlock 是 Linux 内核中使用最广泛同步原语。具有以下基本特征: 1,获取过程(即上锁过程)是自旋(自旋就是忙等意思),不会引起当前进程睡眠和调度。也就是说,当前进程一直出于活动状态。 2,持有自旋临界区不允许调度和睡眠,因为一旦发生调度,临界区什么时候能够继续运行是不确定(什么时候解锁是不确定),这会导致其他竞争者死锁。因此,自旋加锁操作会
转载 2023-10-14 20:10:22
130阅读
MySQL中行、页和表实际应用发布时间:2020-06-03 16:58:29作者:三月下面一起来了解下MySQL中行、页和表实际应用,相信大家看完肯定会受益匪浅,文字在精不在多,希望MySQL中行、页和表实际应用这篇短内容是你想要MySQL按照粒度可以细分为行、页、表。行1、行锁定颗粒度在MySQL是最细应用于InnoDB存储引擎,只针对操作
转载 2023-10-27 05:37:57
24阅读
        锁在生活处处可见,门锁,手机等等. 存在意义是保护自己东西不被别人偷走/修改. 在mysql意义也是一样,是为了保护自己数据不被别人进行修改,从而导致出现脏读,幻读等问题.在学习时候建议先学习一下mysql事务隔离级别以及底层索引B+树,以便更好了解本文.1:MySql分类 从图中可以看到mysql
转载 2024-01-02 11:13:38
39阅读
  • 1
  • 2
  • 3
  • 4
  • 5