脏读: 当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。简单来说就是:读取到事务还未提交的数据。不可重复读:
转载
2024-01-02 11:05:44
51阅读
事物特性:原子性:atomicity 最小工作单元,全部成功,全部失败。一致性:consistency 事物中的修改不会保存到数据库中。隔离性:isolation 一个事物所做的修改在提交之前是对其他事物不可见的。持久性:durability 数据修改后保存在数据库中。隔离级别:READ UNCOMMITTED 未提交读:事物的修改在没有提交之前,其他事物可以读到修改的数据,也被称为脏读,因为数据
转载
2023-10-08 22:59:51
83阅读
MySQL常见面试总结并发事务带来哪些问题?脏读(Dirty read):一个事务读到另一个事务未提交的更新数据。丢失修改(Lost to modify):一个事务访问数据并对其修改时,另外一个事务也访问了该数据并进行了修改。第二次修改覆盖了第一次的修改,导致第一次修改的数据丢失。不可重复读(Unrepeatableread):一个事务两次读取同一行数据,两次读到的数据不一样。(重点在于修改)幻读
转载
2023-12-07 08:59:01
69阅读
如果不显式声明事务,那么一般有两种情况:1. 每条 SQL 语句作为独立的事务,即 AUTOCOMMIT 模式;2. 当前 Session 在一个隐式的事务中,等待手工 Commit。而 "不使用事务" 的场景是不存在的。完美的数据正确性有它的代价,不同的读写场景,对隔离性的需求不同。隔离性越高,数据越安全,但性能越低。教科书上一般会写四种隔离级别,按照不同隔离级别可能出现的 "症状" 划分:Re
转载
2023-12-07 15:27:02
39阅读
高并发解决方案案例 流量优化:防盗链处理 前端优化:减少HTTP请求,合并css或js,添加异步请求,启用浏览器缓存和文件压缩,CDN加速,建立独立图片服务器, 服务端优化:页面静态化,并发处理,队列处理 数据库优化:数据库缓存,分库分表,分区操作,读写分离,负载均衡 web服务器优化:负载均衡,nginx反向代理,7,4层LVS软件2. web资源防盗链 盗链:在自己的页
补充, 可以通过lock_token_time判断 如果超时的 可以去释放锁 比如超时半个小时等。【技巧】并发读取Mysql数据保证读取到的数据不重复。
原创
2024-03-08 08:50:46
76阅读
高性能MySQL第一章 MySQL架构并发控制有多个查询需要同时修改数据,就会产生并发控制问题。读写锁:处理并发 读/写 访问的通常实现一个由两种锁类型组成的锁系统,即共享锁(shared lock| 读锁 | read lock)与排他锁(exclusive lock | 写锁 |write lock)。锁的概念为:资源上的读锁是共享的,是相互不堵塞的。多个客户可以同时读取同一资源而互不干扰。写
转载
2024-09-17 17:05:47
58阅读
数据库事务之mysql1 数据库并发问题及概念2 存储引擎是否支持事务2.1 mysql自动提交2.2 mysql隐式提交2.3 autocommit和START TRANSACTION辨析3 事务的ACID(acid)属性4 查看及设置mysql数据库事务隔离级别4.1 数据库的4种事务隔离级别5 mysql的MVVC5.1 版本链5.2 ReadView5.3 READ_COMMITED的实
转载
2023-11-27 17:08:01
117阅读
并发容器概览ConcurrentHashMap : 线程安全的HashMapCopyOnWriteArrayList: 线程安全的ListBlockingQueue:这是一个接口,表示阻塞队列,非常适合用于作为数据共享的通道ConcurrentLinkedQueue : 高效的非阻塞并发队列,使用链表实现。可以看做一个线程安全的LinkedListConcurrentSkipListMap : 是
浅谈MVCC一、什么是MVCC二、能解决什么问题三、两种读方法四、MVCC实现原理1、隐藏字段2、undo日志3、read view 一、什么是MVCCmvcc是mysql的多版本控制器,主要用来处理mysql的多并发问题。二、能解决什么问题读读:本身不会有冲突,所以也不需要进行并发管理。读写:有线程安全性的问题,容易造成是事务隔离性的问题,从而出现幻读、脏读、不可重复读。写写:有线程安全性的问
转载
2024-05-30 01:03:59
21阅读
前言前段时间,很多人问我能不能写一些数据库的文章,正好自己在测试mysql数据库性能的时候,出现了一个问题,也就是出现了很多重复的数据,想起来自己long long ago写过一篇类似的,仅此就拿来总结了一下。如果你在使用mysql的时候也遇到了这个问题,希望能对你有所帮助。注意:这篇文章不是数据库系列的正式文章,有关mysql、MongoDB、redis、oracle等数据库系列的文章正在整理中
转载
2023-11-09 01:12:23
91阅读
概述数据库系统一般采用WAL(write ahead log)技术来实现原子性和持久性,MYSQL也不例外。WAL中记录事务的更新内容,通过WAL将随机的脏页写入变成顺序的日志刷盘,可极大提升数据库写入性能,因此,WAL的写入能力决定了数据库整体性能的上限,尤其是在高并发时。在MYSQL 8以前,写日志被保护在一把大锁之下,本来并行事务日志写入被人为串行化处理。虽简化了逻辑,但也极大限制了整体的性
转载
2023-10-16 10:23:56
68阅读
很多时候在日常的项目中,有些数据是不允许重复的,例如用户信息中的登陆名,一旦存在同一个登陆名,必然不知道到底是哪个用户执行登陆操作,导致系统异常。常常在防止数据重复的情况下,我们都采用唯一索引去解决,如下当我们执行同样的name的数据时则会报如下错误• CREATE TABLE `login` (
• `id` bigint unsigned NOT NULL AUTO_INCREMENT,
•
转载
2023-06-20 15:37:32
126阅读
mysql使用用insert往数据表中插入数据时,为了不重复插入数据,往往先查询一下该条数据是否已经存在,若不存在才进行插入操作。 而使用 insert if not exists语句,就不需重复做上述两道工序,一个sql语句防止插入重复数据。 要求demo列的值不能有相同的值(id是主键,设置为自增长)SELECT * FROM `zyt`;
INS
转载
2023-06-26 11:20:23
161阅读
例子:卖火车票/**
* 有N张火车票,每张火车票都有一个编号
* 同时有10个窗口对外售票
* 模拟程序
*
* 第一个程序会重复销售, 超量销售
* 第二个程序使用Vector 是个同步容器, 所有方法都是加锁的, 还是有问题, 判断size()和同步remove(0方法是分离的,中间还是有问题。
*/
public class TicketSeller2 {
//Ve
转载
2023-12-20 09:32:27
44阅读
1. 业务场景针对一些基础业务数据如用户表,要保证主键Primary或Unique不重复,如果在插入时做判断,效率低且代码复杂。2. 实现方案基于MySQL数据库,实现方案有如下4种replace into 使用最简单,推荐on duplicate key update 可以根据业务需要,当数据重复时,指定更新的内容。有对应使用场景时使用insert ignore into 简单粗暴,可能会丢数据
转载
2023-10-15 21:56:08
157阅读
文/kingkai编程珠玑上关于抽样问题的章节,提出了很多随机从N个数中抽取M个数(不重复)的方法。这里一一进行分析,并给出部分推导。抽样广泛应用于工程实践中,在样本空间非常大时,性能的因素会显得非常明显。比如,总每日的检索Query中抽样不重复的100个。对于这个命题,如果不精心设计。很可能演变成很多粗糙的实现。Loop Nvoid genKnuth(int m, int n)
{
int
转载
2024-07-31 13:28:03
52阅读
概述数据库系统一般采用WAL(write ahead log)技术来实现原子性和持久性,MYSQL也不例外。WAL中记录事务的更新内容,通过WAL将随机的脏页写入变成顺序的日志刷盘,可极大提升数据库写入性能,因此,WAL的写入能力决定了数据库整体性能的上限,尤其是在高并发时。在MYSQL 8以前,写日志被保护在一把大锁之下,本来并行事务日志写入被人为串行化处理。虽简化了逻辑,但也极大
转载
2023-10-26 14:27:38
95阅读
### 如何实现 Python 与 MySQL 的高并发读取
在现代应用程序中,处理高并发是一个重要的考虑因素,尤其是在访问数据库时。本文将分步骤讲解如何使用 Python 和 MySQL 实现高并发读取。我们将采用连接池的方式来提高并发效率。
#### 整体流程
以下是实现 Python与MySQL高并发读取的步骤:
| 步骤 | 描述 |
概述LocalDate、LocalTime、LocalDateTime 类的实例是不可变的对象,分别表示使用ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。注:ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表示法。方法描述示例now()静态方法,根据当前时间创建对象LocalDate localD
转载
2024-05-13 12:57:07
93阅读