随笔分类 -  数据库----并发和事务

摘要:查了一些资料,看了一些别人写的文档,总结如下,实现nginx session的共享PHP服务器有多台,用nginx做负载均衡,这样同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态,下面提供了几种方式来解决session共享的问题... 阅读全文
posted @ 2015-05-21 15:31 awp110 阅读(313) 评论(0) 推荐(0)
摘要:随着用户访问量的不断增加,网站的后台也会不断变化以应对需求。本文主要从一个小型网站到大型网站的过度与变化来陈述。 1.1 网站后台架构 主要指由web server 、应用服务器、数据库、存储、监控等组成的网站后台系统。 1.2 架构演变 个人站点后台架构。如图2-1所示。图2-1 单台一组 如图所示,如果是个人站点,访问量不大,一般都是将web server、应用服务器、数据库部署在一台物理服务器上。从图中也可以看到,一个网站最基本的后台需要web server、应用服务器、数据库三部分组成。 1.2.1 网站架构的进一步演变 考虑到网站访问量的不断增加,网站的后台架构也必须... 阅读全文
posted @ 2011-10-25 15:56 awp110 阅读(347) 评论(1) 推荐(0)
摘要:有时候也好奇,若是老外发个技术文章,会不会到处是有人骂街的?进行人身攻击的?中国人喜欢打击别人,不知道老外是不是也是这个性格?好奇的问一下大家。往往我们在开发程序、调试程序时,无法模拟多用户同时操作的实际环境下的运行情况。为了模拟多用户并发操作,我们先写个多线程的例子来充分模拟多用户并发的情况代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->classSequenceTest{///<summary>///定义委托///< 阅读全文
posted @ 2011-05-13 17:12 awp110 阅读(512) 评论(0) 推荐(0)
摘要:下面是用一个事务处理访问两个DBServer的表操作。(例子)新建一个项目using System;using System.Data;using System.Data.SqlClient;using System.Configuration;using System.Web;using System.Web.Configuration;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using Syst 阅读全文
posted @ 2011-04-16 15:23 awp110 阅读(643) 评论(1) 推荐(1)
摘要:在以前的两篇文章(Discuz!NT 缓存设计简析, Discuz!NT中集成Memcached分布式缓存)中,介绍了Discuz!NT中的缓存设计思路以及如何引入Memcached,当然前者是IIS进程的缓存(本地缓存),后者是分布式内存对象缓存系统。 两者通过Discuz!NT中的memcached.config文件中的ApplyMemCached结点的值来决定使用哪一种缓存方式。不过在之后... 阅读全文
posted @ 2009-11-18 22:08 awp110 阅读(343) 评论(0) 推荐(0)
摘要:另一个走向极端的错误 满怀信心的新手们可能为自己所掌握的部分知识陶醉不已,刚接触数据库库事务处理的准开发者们也一样,踌躇满志地准备将事务机制应用到他的数据处理程序的每一个模块每一条语句中去。的确,事务机制看起来是如此的诱人——简洁、美妙而又实用,我当然想用它来避免一切可能出现的错误——我甚至想用事务把我的数据操作从头到尾包裹起来。 看着吧,下... 阅读全文
posted @ 2009-08-21 13:55 awp110 阅读(217) 评论(0) 推荐(0)
摘要:什么是数据库事务    数据库事务是指作为单个逻辑工作单元执行的一系列操作。 设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作:    · 更新客户所购商品的库存信息    · 保存客户付款信息--可能包括与银行系统的交互    · 生成订单并且保存到数据库中    · 更新用户相关信息,例如购物数量等等 正常的情况下,这些操作将顺利进行... 阅读全文
posted @ 2009-08-21 13:54 awp110 阅读(281) 评论(0) 推荐(0)
摘要:【表A】与【表B】之间有外键约束(具体怎么约束的无所谓,因为外键和事务死锁没有绝对关系)。【表A】=主键表,【表B】=外键表。公司有几位程序员写的代码总是出现死锁,现在将事务死锁情况重现.using(事务){try{for()//一个循环{if(查询【表A】有该【记录】==false)//这个查询没有用当前事务的数据库连接,而是新开一个数据库连接查询数据库{将【记录】插入【表A】;插入【表B】;}... 阅读全文
posted @ 2009-08-21 10:25 awp110 阅读(319) 评论(0) 推荐(0)
摘要:1. 死锁原理 根据操作系统中的定义:死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。 死锁的四个必要条件:互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。非剥夺条件(No pre-emption):已经分... 阅读全文
posted @ 2009-08-21 10:18 awp110 阅读(243) 评论(0) 推荐(0)
摘要:1 . 并发操作带来的数据不一致性包括:________ 、________ 和 ________ 。 (问答题)# 查看答案 * 丢失修改 不可重复读 读“脏”数据 2 .在数据库中为什么要并发控制? (填空题)# 查看答案 * 数据库是共享资源,通常有许多个事务同时在运行。 当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能... 阅读全文
posted @ 2009-08-21 10:04 awp110 阅读(396) 评论(0) 推荐(0)
摘要:主程序Program.csusing System;using System.Collections.Generic;using System.Text;using System.Threading;namespace MultiThreadedPrinting{ class Program { static void Main(string[] args) { Console.WriteLine... 阅读全文
posted @ 2009-08-20 11:21 awp110 阅读(691) 评论(0) 推荐(0)
摘要:我们经常会为数据库并发问题感到头疼,微软的SQL SERVER 提供了一个TimeStamp类型的字段可以有效的控制并发问题,网上有很多资料,在此就不加描述了,如有兴趣可以搜索一下http://www.google.com/search?hl=zh-CN&newwindow=1&rls=GGLD%2CGGLD%3A2005-12%2CGGLD%3Azh-CN&q=times... 阅读全文
posted @ 2009-08-20 10:50 awp110 阅读(263) 评论(0) 推荐(0)
摘要:我在博客堂上也看到不少有关并发控制的文章,我一直是推荐使用时间戳来解决的。 比如我们在SQL Server中的表中定义一个字段为timestamp类型的字段ts,这个字段的值不需要我们进行控制的。 在Insert与Update时,数据库会自己进行ts值的更新,因此我们只要在Update时使用: Update xxx where key=@key and ts=@ts 就可以了,根本不用考虑ts里的... 阅读全文
posted @ 2009-08-20 10:46 awp110 阅读(270) 评论(0) 推荐(0)
摘要:Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 很多Web系统的瓶颈在网络IO,所以很多系统都采用多Web服务器负载均衡,双DB做双机热备(其实就是只有一个DB,两台只有一台真正工作,死掉一台另一台顶上)的方式部署,在这个时候很多原本不是问题的系统也会产生很多的问题。这里我们假设有表Product,其定义如下:列明类型... 阅读全文
posted @ 2009-08-10 12:18 awp110 阅读(599) 评论(1) 推荐(0)
摘要:TransactionScope是.Net Framework 2.0滞后,新增了一个名称空间。它的用途是为数据库访问提供了一个“轻量级”[区别于:SqlTransaction]的事物。使用之前必须添加对 System.Transactions.dll 的引用。下列代码就是一个正在创建的事务,这个事务自身还封装了多个数据库查询。只要任意一个 SqlCommand 对象引发异... 阅读全文
posted @ 2009-08-06 15:59 awp110 阅读(286) 评论(0) 推荐(0)
摘要:对于稍微有点经验的.NET开发人员来说,倘若被问及如何保持线程同步,我想很多人都能说好好几种。在众多的线程同步的可选方式中,加锁无疑是最为常用的。如果仅仅是基于方法级别的线程同步,使用System.Runtime.CompilerServices.MethodImplAttribute无疑是最为简洁的一种方式。MethodImplAttribute可以用于instance method,也可以用于... 阅读全文
posted @ 2009-07-31 15:18 awp110 阅读(285) 评论(0) 推荐(0)
摘要:lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。 此语句的形式如下:复制代码 Object thisLock = new Object();lock (thisLock){ // Critical code section.}有关更多信息,请参见 线程同步(C# 编程指南)。 备注 lock 关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临... 阅读全文
posted @ 2009-07-31 14:56 awp110 阅读(223) 评论(0) 推荐(0)
摘要:使用C# lock同时访问共享数据 经常碰到同时需要对某个数据进行操作,或者对某个文件进行读写操作,对于这些操作我们以前往往不能很好的进行处理,自从C#语言中引入了lock这个关键字,以上问题就比较容易予以解决了,下面就是一段简单的代码。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHi... 阅读全文
posted @ 2009-07-31 14:53 awp110 阅读(230) 评论(0) 推荐(0)
摘要:第五章 并发和事务 并发和事务是企业开发中常遇到的棘手问题,尤其对于新人来说有的时候他们是一个难以琢磨的名词,但是企业开发中总会跟它们打交道,它们如影随形总会在某个时候成为开发者梦魔。本章我们通过一些简单的例子来说明并发和事务的一些基本概念。5.1 常见的并发情况如果我们在多线程或多进程中操作同一数据,就会遇到并发问题。企业开发中系统常常访问的是存储在数据库中的业务数据,我们最常见的例子就是两个用... 阅读全文
posted @ 2009-07-31 11:23 awp110 阅读(225) 评论(0) 推荐(0)
摘要:多线程: Type text hereclassActiveDate{privatestring_CusID;privatestring_Visitor;privateint_ShopNum;privateint_flag=0;publicintFlag{get{return_flag;}set{_flag=value;}}publicstringCusID{get{return_CusID;}s... 阅读全文
posted @ 2009-07-31 10:32 awp110 阅读(167) 评论(0) 推荐(0)