返回顶部
首页 > 资讯 > 数据库 >SQLServer脏读方式数据怎么提取
  • 431
分享到

SQLServer脏读方式数据怎么提取

2024-04-02 19:04:59 431人浏览 独家记忆
摘要

这篇文章主要介绍“sqlServer脏读方式数据怎么提取”,在日常操作中,相信很多人在SQLServer脏读方式数据怎么提取问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQ

这篇文章主要介绍“sqlServer脏读方式数据怎么提取”,在日常操作中,相信很多人在SQLServer脏读方式数据怎么提取问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQLServer脏读方式数据怎么提取”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

  在设计数据库应用时,你应该记住各种不同类型的事务发生的不同隔离级别。通常情况下,SQLServer默认方式能够很好地完成你要使用的功能,不过,有些时候利用SQL语句在数据表上手工添加关于锁是如何应用的提示信息将是十分有用的。

  本文主要介绍了两种数据表提示:NOLOCK和READPAST。我们将建立一个数据表用作例子中的查询数据表。执行列表A中的脚本建立一个SalesHistory数据表并添加一些数据。

  NOLOCK

  该数据表提示,也称为READUNCOMMITTED,只能用于SELECT语句。NOLOCK表明没有对数据表添加共享锁以阻止其它事务对数据表数据的修改。

  该语句的好处是它可以使数据库引擎不用在处理查询中的上锁问题,可以提高并发性并改善数据库性能,因为数据库引擎不用在维护共享锁的使用问题。存在的问题是因为该语句不能处理要读取的数据表的所有锁,所以一些“脏数据”或未被提交的数据潜在的可能被读取。

  假如某个事务被滚回,那么应用了NOLOCK连接的数据读取操作将可以读取未提交的数据。这种类型的读取导致处理的不一致性会带来很多问题。这是你使用NOLOCK时应该了解的技巧。

  作为一个负面影响,NOLOCK查询还可能带来读取“幻影”数据或读取在一个数据库读取事务中可以获得的但在另一个事务中可能被滚回的数据的风险。(我将在本系列文章的第二部分对这个负面影响进行详细说明。)

  下面的例子展示了NOLOCK如何工作以及脏数据读取是如何产生的。在下面的脚本中,我用一个事务在SalesHistory数据表中插入一条记录。

  SQLServer脏读方式数据怎么提取之NOLOCK和READPAST

  BEGINTRANSACTioNINSERTINTOSalesHistory(Product,SaleDate,SalePrice)VALUES('PoolTable',GETDATE(),500)

  这个事务仍旧是开放的,这意味着仍可以对插入数据表的记录上锁以阻止其它操作。在一个新的查询窗口中,运行下面的脚本,该脚本使用NOLOCK数据表提示返回SalesHistory数据表中的记录数。

  SELECTCOUNT(*)FROMSalesHistoryWITH(NOLOCK)

  返回记录数值为301。因为对SalesHistory数据表插入记录的事务还没有提交,所以我们可以撤销它。我通过使用下面的语句将事务滚回:

  ROLLBACKTRANSACTION

  该语句从SalesHistory数据表中删除前面插入的记录。现在我们运行前面运行的同样的SELECT语句。

  SELECTCOUNT(*)FROMSalesHistoryWITH(NOLOCK)

  这次返回记录数的值为300。我第一次查询读记录的事务还没有提交,这就是一个脏数据读取。

  READPAST

  这是一个比NOLOCK较少使用的数据表提示。这个提示指明数据库引擎返回结果时忽略加锁的行或数据页。

  这个数据表提示的优点和NOLOCK一样,在处理查询时不会发生阻塞。此外,读脏数据并不会出现在READPASTA中,因为不会返回锁定的记录。这个语句的缺点是,因为不返回锁定的记录,所以很难确定结果集或修改语句是否包含所有必须的记录。在你的应用中可能需要添加一些逻辑来确保最终包含所有必须的记录。

  READPAST数据表提示的例子和NOLOCK的例子类似。我将使用一个事务来更新SalesHistory数据表中的一个记录。

  BEGINTRANSACTIONUPDATETOP(1)SalesHistorySETSalePriceSalePrice=SalePrice+1

  因为我没有提交或回滚这个事务,所以添加在更新记录上的锁仍旧有效。在一个新的查询编辑窗口中,运行下面的脚本,该脚本对SalesHistory数据表使用READPAST统计表中的记录数。

  SELECTCOUNT(*)FROMSalesHistoryWITH(READPAST)

  最初SalesHistory数据表中包含300条记录,UPDATE语句正锁定表中一条记录,所以上面使用READPAST的脚本返回结果为299条记录,这说明我要更新的记录被锁定,所以被REASPAST提示忽略。

到此,关于“SQLServer脏读方式数据怎么提取”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: SQLServer脏读方式数据怎么提取

本文链接: https://lsjlt.com/news/59208.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SQLServer脏读方式数据怎么提取
    这篇文章主要介绍“SQLServer脏读方式数据怎么提取”,在日常操作中,相信很多人在SQLServer脏读方式数据怎么提取问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQ...
    99+
    2024-04-02
  • mysql如何读取脏数据
    mysql 读取脏数据的方法:将事务隔离级别设置为 read uncommitted。该隔离级别允许读取其他并发事务未提交的修改。风险包括:数据不一致幻读问题建议仅在数据一致性不重要且对...
    99+
    2024-04-14
    mysql
  • sqlserver怎么读取数据间隔
    在SQL Server中,可以使用以下方法来读取数据间隔:1. 使用TOP关键字和ORDER BY子句来限制返回的行数,并根据需要的...
    99+
    2023-09-27
    sqlserver
  • sqlserver怎么解析json提取数据
    在SQL Server中解析JSON数据并提取数据,可以使用内置的JSON函数和方法。以下是一些常用的JSON函数和方法: JSO...
    99+
    2024-04-12
    sqlserver json
  • 怎么解决MySQL数据库的脏读?
    这篇文章的知识点包括:脏读的介绍、解决MySQL数据库脏读的方法,阅读完整文相信大家对MySQL数据库的脏读有了一定的认识。    什么是脏读?脏读又称无效数据的读出,是指在数据库访问中...
    99+
    2024-04-02
  • Python怎么从csv文件中读取数据及提取数据
    本篇内容主要讲解“Python怎么从csv文件中读取数据及提取数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么从csv文件中读取数据及提取数据”吧!数据保存在csv文件中1.从...
    99+
    2023-06-25
  • HBase的数据读取效率怎么提高
    HBase的数据读取效率可以通过以下几种方式来提高: 列族设计优化:合理设计表的列族结构,将经常一起访问的列放在同一个列族中,减...
    99+
    2024-03-11
    Hbase
  • Python从csv文件中读取数据及提取数据的方法
    目录1.从csv文件中读取数据2.数据切割数据保存在csv文件中 1.从csv文件中读取数据 参数header=None的有无 (1)没有header=None——直接将csv表中...
    99+
    2024-04-02
  • Pandas提取数据的三种方式
    目录前言Pandas读取数据的几种方式1. read_csv2. read_excel3. read_sql前言 快期末了,数据挖掘的大作业需要用到python的相关知识(这太难为我...
    99+
    2023-01-16
    Pandas 提取数据
  • 怎么用Ajax读取XML格式的数据
    本篇内容介绍了“怎么用Ajax读取XML格式的数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!代码如下:...
    99+
    2024-04-02
  • redis脏数据怎么处理
    处理 Redis 脏数据的方法主要有以下几种: 定期清理:定期执行 Redis 的数据清理操作,可以通过设置过期时间或者使用持久...
    99+
    2024-04-09
    redis
  • mongodb怎么读取数据
    在MongoDB中,你可以使用find()方法来读取数据。find()方法可以接收一个查询条件作为参数,返回满足条件的文档。下面是一...
    99+
    2023-09-06
    mongodb
  • redis怎么读取数据
    redis 提供了多种数据读取方法,包括:get(单个键值读取)、mget(批量键值读取)、hget(哈希表键值读取)、hgetall(哈希表所有键值读取)、lrange(列表范围数据读...
    99+
    2024-04-02
  • sql怎么读取数据
    要使用 sql 读取数据,可以使用 select 语句,其基本语法为:select 列名 from 表名;可通过 where 子句指定条件、order by 子句排序...
    99+
    2024-04-02
  • pycharm怎么读取数据
    在 pycharm 中读取数据的方法:使用 pandas 从 csv 文件读取:导入 pandas 库使用 read_csv() 方法读取数据使用 numpy 从文本文件读取:导入 nu...
    99+
    2024-04-17
    python pycharm
  • mysql怎么读取数据
    如何从 mysql 中读取数据?mysql 提供了多种方法来读取数据,最常用的方法是使用 select 语句。其他方法还包括游标、存储过程和触发器。 如何从 MySQL 中读...
    99+
    2024-04-22
    mysql
  • redis的三种部署方式和数据读取方式
    redis redis的三种部署方式 1:主从复制,就是每台机器都是一样的,这种部署方式每台服务器都会向主服务器同步自己的数据,所以其中的数据内容是相同的 工作机制:从服务器连接到主服务器发送SYNC命令,主服务器接收命...
    99+
    2017-03-18
    redis的三种部署方式和数据读取方式
  • SQL数据库怎么读取数据
    本篇内容介绍了“SQL数据库怎么读取数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!   &...
    99+
    2024-04-02
  • R语言数据读取以及数据保存方式
    一、R语言读取文本文件: 1、文件目录操作: getwd() : 返回当前工作目录 setwd("d:/data") 更改工作目录 2、常用的读取指令read read.table(...
    99+
    2024-04-02
  • python读取测试数据的多种方式
    目录一、通过创建.ini或.conf文件读取二、通过yaml文件读取三、通过excel读取一、通过创建.ini或.conf文件读取 1、创建一个config.ini或者.conf文...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作