我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SQLServer脏读方式数据怎么提取

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SQLServer脏读方式数据怎么提取

这篇文章主要介绍“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脏读方式数据怎么提取”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SQLServer脏读方式数据怎么提取

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

sqlserver怎么读取数据间隔

在SQL Server中,可以使用以下方法来读取数据间隔:1. 使用TOP关键字和ORDER BY子句来限制返回的行数,并根据需要的间隔数来排序结果集。例如,要读取每个间隔为n的行,可以使用以下查询:```SELECT TOP (n) *F
2023-09-27

sqlserver怎么解析json提取数据

在SQL Server中解析JSON数据并提取数据,可以使用内置的JSON函数和方法。以下是一些常用的JSON函数和方法:JSON_VALUE:用于从JSON对象中提取单个值。SELECT JSON_VALUE(column_name, &
sqlserver怎么解析json提取数据
2024-04-12

Python怎么从csv文件中读取数据及提取数据

本篇内容主要讲解“Python怎么从csv文件中读取数据及提取数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么从csv文件中读取数据及提取数据”吧!数据保存在csv文件中1.从
2023-06-25

HBase的数据读取效率怎么提高

HBase的数据读取效率可以通过以下几种方式来提高:列族设计优化:合理设计表的列族结构,将经常一起访问的列放在同一个列族中,减少数据在磁盘上的读取次数。预分区表:在创建表时可以进行预分区,避免数据写入单个Region,从而提高并行读取的效率
HBase的数据读取效率怎么提高
2024-03-11

Pandas提取数据的三种方式

本文主要介绍了Pandas提取数据的三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-16

pycharm怎么读取数据

在 pycharm 中读取数据的方法:使用 pandas 从 csv 文件读取:导入 pandas 库使用 read_csv() 方法读取数据使用 numpy 从文本文件读取:导入 numpy 库使用 loadtxt() 方法读取数据如何使
pycharm怎么读取数据
2024-04-17

mongodb怎么读取数据

在MongoDB中,你可以使用find()方法来读取数据。find()方法可以接收一个查询条件作为参数,返回满足条件的文档。下面是一个示例,演示了如何使用find()方法来读取数据:```javascript// 导入MongoDB模块co
2023-09-06

mysql怎么读取数据

如何从 mysql 中读取数据?mysql 提供了多种方法来读取数据,最常用的方法是使用 select 语句。其他方法还包括游标、存储过程和触发器。如何从 MySQL 中读取数据MySQL 提供了多种方法来读取数据,最常用的方法是使用 S
mysql怎么读取数据
2024-04-22

redis的三种部署方式和数据读取方式

redis redis的三种部署方式 1:主从复制,就是每台机器都是一样的,这种部署方式每台服务器都会向主服务器同步自己的数据,所以其中的数据内容是相同的 工作机制:从服务器连接到主服务器发送SYNC命令,主服务器接收命令,开始执行BGSAVEE命令申城R
redis的三种部署方式和数据读取方式
2017-03-18

php怎么读取mysql数据

如何使用PHP读取MySQL数据使用PHP读取MySQL数据的简介,介绍了MySQLi和PDO扩展。使用MySQLi扩展连接到数据库查询数据库遍历结果集使用PDO扩展连接到数据库查询数据库遍历结果集处理结果集fetch_assoc():关联数组fetch_array():组合数组fetch_object():对象fetch_row():数字数组最佳实践使用预处理语句使用事务转义查询结果使用ORM工具
php怎么读取mysql数据
2024-04-09

编程热搜

目录