mysql
在一个事务A中插入一条数据
在B事务中查询到的还是以前的数据,可以select *from table,不被锁住
 
Sql Server 默认级别 读已提交
所以A事务在 X表插入数据,在未提交的情况下,则B事务无法做 包含A事务新数据的 操作。
具体地说 B事务无法做全量的数据查询,
B事务也无法单条查询新数据行
B事务可以查询其他数据行
B事务依然可以插入新数据
B事务不能查询count
如果最新的数据是B事务插入的 B事务可以查询maxId,如过最新数据为A插入 那么A事务可以查询maxid 而不用等待锁。
B事务加With (nolock) 可以查询A事务中的新增行 也可以查询count。这是脏读
 
A事务在 X表更新数据行,则B事务也无法做 关于A事务所操作的数据行 的查询,可操作其他行
B事务也不能更新刚刚A事务操作的数据行、
B事务不能查询count
B事务可以查询max
 
 
由于默认级别是读已提交,所以存在不可重复读的问题。两次查询的单行和多行数据可能会不同。
下面创建新数据库 并开启MVCC的情况:
ALTER DATABASE testdb3 SET allow_snapshot_isolation ON
ALTER DATABASE testdb3 SET READ_COMMITTED_SNAPSHOT ON
开启SNAPSHOT后,上述需要加with nolock才能查询的数据,不再需要nolock了,并且MVCC机制保障了我们不会有脏读。
但是当前并非可重复读级别,幻读依然存在。必须要说,我觉得与其称为幻读,不如叫做幻行。
 
 
下面说说SqlServer可重复读级别,当一个数据库连接A 的事务隔离设置为此级别。
如果A已经查询过数据行X,那么B事务对X的修改要等A事务结束。这就保证了在一次事务A中,多次查询同一条数据结果是相同的。
注意SqlServer在此隔离级别下,即使加上快照,也无法避免幻读. 此快照就算MVCC机制
但是mysql innodb 隔离级别默认为可重复读,并且其MVCC机制,可以避免幻读。
 
总之mvcc降低了锁开销,提高了并发能力。非锁定读。

Sql Server Snapshot和mysql MVCC的更多相关文章

  1. 通过SQL Server 2008 访问MySQL(转)

    在公司中经常会遇到部署多种数据库环境的情况,对于开发人员来说经常在不同数据库之间转换确实有些繁琐,本篇将介绍从SQL Server 操作MySQL 数据库的方法. 数据库测试环境 1. SQL Ser ...

  2. SQL Server数据转MySql

    正好用到SQL Server数据转MySql的知识,就分享一下, 准备:需要用到  Navicat Premium 百度上下载就好 1.打开连接MySQL数据库,新建数据库,双击数据库点击导入 2.导 ...

  3. SQL Server 数据导入Mysql具体教程

    SQLServer2005数据导入Mysql到具体教程(測试) SQL SERVER数据导入MYSQL文件夹   1.Navicat for MySQL 版本号10.0.9 2.创建目标数据库 3.创 ...

  4. 从Microsoft SQL Server迁移到MySQL指南

    转自 https://www.mysql.com/why-mysql/white-papers/sql-server-to-mysql-zh/ 由于 MySQL 将节约成本.自由选择平台.特性丰富等优 ...

  5. Oracle,SQL Server 数据库较MySql数据库,Sql语句差异

    原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...

  6. SQL Server数据库和MySQL数据库有什么区别?

    SQL Server数据库和MySQL数据库有什么区别呢?详细很多初入IT行业的朋友对于SQL Server数据库和MySQL数据库经常搞混,认为这两种数据库是同一种,其实不然,今天我们来分析一下这两 ...

  7. [PowerDesign]将数据库从SQL Server数据库转换为MySQL

    原文:[PowerDesign]将数据库从SQL Server数据库转换为MySQL 一.迁移Database Schema. 首先使用Sybase Powerdesigner的逆向工程功能,逆向出S ...

  8. (转)如何将数据库从SQL Server迁移到MySQL

    一.迁移Database Schema. 首 先使用Sybase Powerdesigner的逆向工程功能,逆向出SQL Server数据库的物理模型.具体操作是在Powerdesigner中选择“F ...

  9. 数据库同步工具HKROnline SyncNavigator SQL Server互同步MySQL

    需要联系我QQ:786211180 HKROnline SyncNavigator 是一款专业的 SQL Server, MySQL 数据库同步软件.它为您提供一种简单智能的方式完成复杂的数据库数据同 ...

随机推荐

  1. java 多线程 23 : Timer

    前言 定时/计划功能在Java应用的各个领域都使用得非常多,比方说Web层面,可能一个项目要定时采集话单.定时更新某些缓存.定时清理一批不活跃用户等等.定时计划任务功能在Java中主要使用的就是Tim ...

  2. (转) MyBatis(1)——快速入门

    MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...

  3. if else练习 (解一元二次方程)

    public class cccc { /** * @param args */ public static void main(String[] args) { int a=10,b=11,c=12 ...

  4. 【html5】使用 html5 的十大原因

    你难道还没有考虑使用 html5? 当然我猜想你可能有自己的原因:它现在还没有被广泛的支持,在 ie 中不好使,或者你就是喜欢写比较严格的 xhtml 代码.html5 是 web 开发世界的一次重大 ...

  5. CentOS7安装google chrome浏览器

    1,下载离线包 rpm 2,rpm -ivh ** 报错: lsb_release被chrome依赖 libXss.so被chrome依赖 libappindicator3被chrome依赖 yum ...

  6. Eclipse下进行SVN提交时报“svn: 过期”错误的解决办法

    http://www.thinksaas.cn/group/topic/105323/ ———————————————————————————————————————————————————————— ...

  7. vb 三种启动模式

    正常启动不用说了 就是虚拟机和显示部分在同一个程序里进行 直接关闭程序 就都关闭了 相当于我们普通的电脑, 有主机和显示器无界面启动 也很好理解 ,就是在后台启动虚拟机,如同服务器, 我们只有一个主机 ...

  8. Ubuntu 安装软件方法

    Ubuntu软件安装有几种方式,常用的是deb包的安装方式,deb是debian系列的Linux包管理方式,Ubuntu软件安装属于debian的派生,也默认支持这种软件安装方式,当下载到一个deb格 ...

  9. 3D引擎Axiom的选择与学习.

    经过前面针对OpenGL的一些特性的学习,越发觉得要学的更多,相关如LOD,各种阴影实现,场景管理如BSP与Octree等以及还没听过的各种的实现.有感自学的进度太慢,并且在做一些小DEMO时,心中不 ...

  10. 【转】C#解析Json Newtonsoft.Json

    Newtonsoft.Json源码 Newtonsoft.Json介绍 在做开发的时候,很多数据交换都是以json格式传输的.而使用Json的时候,我们很多时候会涉及到几个序列化对象的使用:DataC ...