首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server共享锁的选择

Server共享锁的选择
EN

Stack Overflow用户
提问于 2018-11-14 09:47:48
回答 1查看 1.6K关注 0票数 1

我正在查询Server中的一个表,该表从其他来源获得连续插入。用于从该表读取数据的SELECT语句在我的ETL作业中使用,它只查询表中选定的分区。

代码语言:javascript
复制
SELECT * 
FROM REALTIMESRC 
WHERE PARTITION = '2018-11';

我了解到,默认情况下,SELECT语句在它选择的行上引入了一个共享锁。

  1. 当此表从我正在查询的同一分区中的其他来源获得插入时,数据插入是否由于我的选择操作而受到影响?
  2. 我假定Select语句引入的共享锁将适用于行表,而不适用于并行发生的新插入。谁能澄清一下吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-14 09:58:35

我理解SELECT语句在默认情况下会在它选择的行上引入一个共享锁。

没错,是的。

当此表从我正在查询的同一分区中的其他来源获得插入时,数据插入是否由于我的Select操作而受到影响?

不,因为insert只引入了您尚未选择的新行,因此不会出现任何问题。

我假定Select语句引入的共享锁将适用于行表,而不适用于并行发生的新插入。

是的,这是正确的-- INSERTSELECT应该可以并行工作。

可能会有一些可能会遇到麻烦的边缘情况:

  • 如果INSERT语句试图在单个事务中插入超过5000行,Server可能会选择将这5000个单独的锁升级到表级别的独占锁,此时在INSERT事务完成之前不可能进行更多的SELECT操作。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53297202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档