现在是信息爆炸的社会,网络上无穷无尽的知识每天爆炸似地增长,我们IT人更甚,要不断温故知新。如果对每项需要的知识都坐下来细嚼慢咽,不但自己辛苦,慢慢地老板也要开始不爽了。所以我从今天开始写软件开发快餐系列(简称软开快餐系列),目的很明确:去枝蔓,留主干,力求用最简单的语言,例子讲述最常用,最基本的知识和实战技巧。 方便大家在需要的时候,快速浏览,快速上手。
今天是第一篇:
事务隔离
在进行数据库编程时,我们经常要处理事务,一些事务隔离问题,如果隔一段时间不用,即使是老鸟也容易忘记,今天把他们写下来,方便大家,也方便自己需要的时候查阅。基本上所有问题都是在2个或多个事务同时处理同一数据源时发生的,这里缩小到2个事务来分析问题,下面以T1代表事务1,T2代表事务2,D1代表数据源1,D2代表数据源2。
lost update:
1. T1 更新(update)了D1, 但是还没有提交(commit)。
2. T2 更新D2,在准备提交是发生问题,回滚,这导致T1的更新也被回滚。
3. T1提交,但是更新已被回滚。
结果:T1的更新丢失。
dirty read
1. T1更新D1,但是还未提交。
2. T2读取D1,注意D1这时已经被T1更新。
3. T1在提交时发生问题,回滚,导致T2目前在使用无效(脏的)D1数据。
4. T1提交。
结果: D1的脏数据被写入数据库。
unrepeatable read
1. T1读取D1, 但是还未提交。
2. T2更新D1并成功提交。
3. T1再次读取D1。
结果: 两次读取的D1含有不同的数据。
second lost updates problem
1. T1读取D1。
2. T2读取D1。
3. T1更新并成功提交D1。
4. T2更新并成功提交D1。
结果:T1的更新丢失了。
phantom read
1. T1执行某一查询获得D1,为提交。
2. T2向数据库表格中插入D2。(注意这里T2并未处理D1)
3. T1再次执行同一查询,结果获得D1和D2。
结果: 第一次查询看不到第二次查询获得的D2, 两次查询获得数据量不同。
注意,T2插入和删除时,这个问题都会出现。
事务隔离级别
我们可以在程序中设定不同的事务隔离级别来避免上述部分或全部事务隔离的问题。
read uncommitted
该级别允许程序读取未提交的数据,但是保证在T1更新D1,但是还未提交之时,任何事务都不能更新D1。这个级别可以防止“lost update”,但是“dirty read”会发生。原理上可以这样理解:使用共享读取锁和半共享的写入锁。多事务可以在任何时候无限制读取数据,但是当T1更新D1时,此时T1获得的写入锁禁止其他事务更新D1,但是不禁止其他事务读取D1,因此该写入锁只为半共享。
--- 共享读锁,半共享写锁
read committed
该级别使用共享的读取锁和排他的写入锁来实现高一级的事务隔离 - 防止“dirty read”,但是允许“unreapable read”发生。原理: dangT1读取D1时,其他事务仍然可以读写D1,但是当T1更新D1(未提交)时,T1获得D1的写锁,他是一个排他的锁,在T1完成整个提交之前,任何其他事务都不能读写D1。
--- 共享读锁,排他写锁
repeatable read
这个级别又高了一级,“unreapable read”也被排除了,但是“phantom read”仍然会发生。 这个级别和read committed的处理方式类似,不过这里使用“半共享”的读取锁:进行读取任务的事务共享一个锁,可以同时获取D1的数据,但是T1读取D1时,任何其他的事务都无法修改D1。可以看到,该读锁只和其他读事务共享数据而禁止其他写事务接触数据,因此称为半共享。写锁和read committed一样,是完全排他的。
--- 半共享读锁,排他享写锁
Serializable
最高级别的事务隔离,模拟实现线性的事务执行,就是说,事务好像排队一个一个来执行的一样,“phantom read”的问题也可以被排除了。单单使用完全排他的读suo写锁是无法实现这样绝对的隔离级别的,通常还需要使用一些辅助的算法。需要注意的是,这个级别的事务隔离性能是最差的。
--- 排他读锁,排他写锁,辅助算法模拟线性事务处理
分享到:
相关推荐
2020健康快餐研究报告-益普索Ipsos-202009
02.新零售时代的餐饮消费转变—新中式茶饮、咖啡和新式快餐的崛起-高力国际-201904
1. 健康快餐定义与分类:报告首先可能会明确健康快餐的定义,包括低脂、低糖、高蛋白、富含纤维等特性,以及快餐的类型,如素食、有机食品、轻食等。 2. 市场规模与增长:报告将分析全球及中国健康快餐市场的规模,...
总的来说,该研究报告为快餐行业提供了一系列有关市场现状和消费者行为的深入见解,同时也为快餐企业提供了商业启示,特别是如何在竞争激烈的市场中突出重围,通过提供健康快餐来吸引和保持消费者。
1. 健康快餐市场概览:报告首先概述了全球及中国健康快餐市场的规模和发展态势,分析了市场增长的主要驱动力,包括消费者对健康饮食意识的提升、生活节奏加快以及消费升级等因素。 2. 消费者需求分析:报告深入研究...
管理系统系列--这是为老婆作的快餐店管理系统,这个项目的核心目标是为小型快餐店提供一套高效、便捷的管理工具,帮助店主更好地掌控日常运营。在分析这个系统之前,我们需要了解管理系统的常见组成部分以及它们在...
### 新零售时代的餐饮消费转变——新中式茶饮、咖啡和新式快餐的崛起 #### 一、背景介绍 随着新零售时代的到来,餐饮行业的消费模式正在经历深刻的变化。新中式茶饮、咖啡和新式快餐成为了市场上的热门业态,不仅...
"DOS快餐店"可能是这个系列教程的代号,寓意快速学习和掌握DOS技能,就像快餐一样快捷方便。 【压缩包子文件的文件名称】"DOS快餐店.chm",这是一个CHM(Compiled Help Manual)文件,是微软的HTML帮助文件格式,...
### 数据库设计——快餐店数据库设计 #### 一、引言 随着信息技术的快速发展,越来越多的传统行业开始寻求数字化转型的机会,以提升效率和服务质量。在快餐行业,这种趋势尤为明显。传统的电话订餐方式存在诸多...
最新快餐加盟合同范本事务所整理.docx
《从麦当劳看美式快餐业系列(一):筚路蓝缕,以启山林》这篇行业报告深入探讨了美式快餐业的发展历程,尤其是以麦当劳作为典型案例,揭示了其从无到有,从小到大的崛起之路。麦当劳的成功不仅在于其独特的商业模式...
餐饮业
但这种点餐及交易方式效率很低,因为一个快餐店中负责点餐的服务员通常是有限的,人们需要进行排队等待一对一的点餐,而在快餐店就餐的客户一般都是对时间比较看重的,客户肯定希望用最快的时间完成点餐和就餐。...
麦当劳作为美式快餐的代表,其发展史是整个快餐业乃至餐饮业发展的一个缩影。本篇分析报告将深度剖析麦当劳的历史和美式快餐业的发展,从中我们可以了解到科技、社会变迁以及公司经营策略是如何影响一个行业发展的。...
下面详细分析从麦当劳看美式快餐系列中的关键知识点: 1. 麦当劳的“地产模式”概述 麦当劳的“地产模式”是一个将地产租赁与餐饮业务相结合的商业模式。麦当劳不仅通过其快餐业务赚钱,还通过拥有的地产赚取租金。...
在这个系统中,用户可以通过网页或移动应用程序浏览各类快餐菜单,选择自己喜欢的菜品,并进行下单、支付等一系列操作,而商家则能接收到订单并进行处理。在本文中,我们将探讨“在线订餐-优质快餐网站”这一主题,...
这份2021年的最新范本由专业事务所认证,确保了合同的合法性与合规性。以下是合同中的关键知识点: 1. **平等自愿原则**:甲乙双方基于平等自愿、互惠互利的基础签订合同,双方均是各自独立的法人或自然人,不存在...
1. **名称**:这是快餐店的品牌名称,如麦当劳、肯德基或赛百味等,可以帮助我们了解不同品牌在美国的分布情况。 2. **地址**:包含快餐店的具体位置,如街道、门牌号等,可以用于地理定位和地图可视化,研究快餐店...
【快餐店公司薪酬管理制度方案】 快餐店公司的薪酬管理制度是企业人力资源管理的重要组成部分,旨在吸引、激励和保留优秀的员工,确保员工的付出与回报相匹配,同时维持内部公平性和外部竞争力。该方案通常涵盖多个...