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】PreparedStatement VS Statement

    创建时: Statement statement = conn.createStatement();    PreparedStatement preStatement = conn.prepareS ...

  2. iOS全局变量的声明和使用

    在一个项目中,我们可能需要定义几个全局变量,在我们程序的任何位置都可以进行访问,提高我们的开发效率.在iOS中我们如何来实现呢?我们主要使用的是AppDelegate类来实现.如下: (1)AppDe ...

  3. 【转】oracle & 和 ' 特殊字符处理 ( like 'GAC/&_%' escape '&'; 这里面的 / 居然将& 转义了 为什么?)

    原文地址:http://blog.csdn.net/gjswxhb/article/details/6083242 今天在导入一批数据到Oracle时,碰到了一个问题:Toad提示(plsql 也一样 ...

  4. mac 系统中vim安装ctags插件

    1,mac自带的ctags程序不是exuberant ctags, 所以使用时会出现问题,所以要重新安装一个: brew install exuberant ctags 安装完, which ctag ...

  5. [Linux基础环境/软件]Linux下安装mysql

    我是使用免安装的包mysql-5.5.28-linux2.6-x86_64.tar.gz(在http://dev.mysql.com/downloads/可以下载到最新的包)的.直接解压,然后配置,初 ...

  6. git log 关键字查找

    最近再搞 224 byte oob的 nandflash , 就查看一下 更新的 u-boot 有没有关于这方面的更新. 查找含有某个字符串的 commit git log --grep=224 // ...

  7. CAS (11) —— CAS TicketRegistry使用Ehcache的集群方案

    CAS (11) -- CAS TicketRegistry使用Ehcache的集群方案 摘要 CAS TicketRegistry使用Ehcache的集群方案 版本 tomcat版本: tomcat ...

  8. 一、安装MYSQL

    数据库就是数据的仓库.MYSQL数据库软件它也是一个独立的软件.它是和PHP配合最好的一种数据库.MYSQL数据库也可以作为其它编程语言的数据源. MYSQL的官方网站:http://www.mysq ...

  9. mysql lower_case_table_names 区分表名大小写设置

    Command-Line Format --lower-case-table-names[=#] System Variable Name lower_case_table_names Variabl ...

  10. 【LINUX】——FreeBSD中的一些常规配置

    一:在为终端的目录添加颜色: 在 ~/.cshrc 文件中添加以下两行: setenv CLICOLOR 1 setenv LSCOLORS Gxfxaxdxcxegedabagacad CLICOL ...