Questions tagged «concurrency»

对于当多个用户或进程同时访问或修改数据库系统中的共享信息时出现的问题。

2
在Debian上对单个MySQL查询使用多个内核
我正在将MySQL服务器运行在Debian作为来宾OS的VM(VMWare)上进行测试。来宾系统具有四个模拟的CPU内核,因此我将thread_concurrency设置为四个。 我正在大型表上进行昂贵的联接,这可能需要花费几分钟,但是我在客户机操作系统上看到,一次只使用一个核心。无论涉及的表使用了什么存储引擎(都已通过MyISAM和InnoDB测试),都会发生这种情况。另外,在执行这些大查询时,整个数据库似乎被阻塞,我无法并行执行任何其他查询。奇怪的是,htop显示,查询的核心在查询运行期间发生了变化! 为什么会这样? 这是来自的相关条目SHOW FULL PROCESSLIST;(没有其他查询): | 153 | root | localhost | pulse_stocks | Query | 50 | Copying to tmp table | SELECT DISTINCT * FROM `pulse_stocks`.`stocks` sto, `pulse_new`.`security` sec WHERE (sto.excntry = sec.excntry AND sto.stock_id = sec.ibtic) OR ( sto.isin = sec.isin AND sto.isin <> "" AND …

1
PostgreSQL-如果同时运行多个查询,在什么情况下会加速?在什么情况下我会看到速度下降?
作为一个不是DBA的人,我会谦虚地对待你们,我敢肯定,我的问题充满了概念上的缺陷,并且“取决于”地雷。我也很确定,所有选择回答的人都希望在细节方面超出我目前的能力。 也就是说,我总体上对以下情况感到好奇: 假设我有两个非平凡的查询。 查询1平均需要2分钟才能完成。 查询2平均需要5分钟才能完成。 如果我连续运行它们,一个接一个地运行,那么我预计平均需要7分钟才能完成。这合理吗? 不仅如此,如果同时运行两个查询该怎么办?同时两个独立的连接。 我希望在什么情况下看到加速?(总时间<7分钟) 我预计在什么情况下会放缓?(总时间> 7分钟) 现在,如果我有1000个非平凡查询并发运行,我预感它将导致整体速度下降。在这种情况下,瓶颈可能在哪里?处理器?内存?开车吗 同样,我知道在不知道具体细节(我没有)的情况下,可能无法完全回答问题。我正在寻找一些一般性准则,以便在询问以下问题时考虑: 在什么情况下并发查询会导致整体加速? 在什么情况下并发查询会导致整体速度下降?

1
如何查看完整的阻止postgres查询?
我正在使用此页面上的语句来查看Postgres中的阻塞查询 SELECT bl.pid AS blocked_pid, a.usename AS blocked_user, ka.query AS blocking_statement, now() - ka.query_start AS blocking_duration, kl.pid AS blocking_pid, ka.usename AS blocking_user, a.query AS blocked_statement, now() - a.query_start AS blocked_duration FROM pg_catalog.pg_locks bl JOIN pg_catalog.pg_stat_activity a ON a.pid = bl.pid JOIN pg_catalog.pg_locks kl ON kl.transactionid = bl.transactionid AND kl.pid != …

1
在SQL Server 2017和Azure SQL DB中查找默认隔离级别
我正在读一本与交易和并发有关的书。在一个段落中提到: 在本地SQL Server实例中,默认隔离级别是基于锁定的已读提交 接下来的句子是: SQL数据库中的默认值为读取-基于行版本的已提交快照 我的问题是:这两个句子中的“本地SQL Server实例”和“ SQL数据库”之间有什么区别? 什么是默认隔离级别,如何找到它?是否有任何特殊查询来查找默认隔离级别?

1
PostgreSQL计数器的并发增量
我需要维护一个项目的统计表,该表由项目列表及其用途组成(想想一个类似网站的网站,您希望在其中计算综合浏览量)。每次实例化一个项目时,我都需要增加特定项目的使用率。 我的第一个实现是: statistics( id integer NOT NULL, name character varying(255) NOT NULL, usage integer NOT NULL DEFAULT 0, ); UPDATE statistics SET usage = usage + 1 WHERE name = '<name>'; 我关心的是性能和并发性。更新过程将由数十个(也许是80-120)设备实例化,并且每秒可能会发生几次,所以我的问题是: 1)这种方法会保留并发性吗?(即,如果有多个设备“同时”请求更新,是否将每个请求都计入?) 2)您能建议一种实现结果的最佳方法吗?我希望在编写更新时会负担很多,而阅读会更频繁。是否存在增加值的特定功能?我正在查看“序列”,但不确定是否正确。 提前非常感谢您的任何建议

4
并发团体预订的策略?
考虑一个座位预订数据库。有一个n个席位的列表,每个席位都有一个属性is_booked。0表示不是,1表示是。任何更高的数量,都有一个超额预订。 在不允许超额预定的情况下进行多笔交易(每笔交易将同时预订一组y个席位)的策略是什么? 我只需选择所有未预订的座位,从中随机选择一组y,然后全部预订,然后检查预订是否正确(也就是is_booked的数量未超过一个,这表示已预订了该座位的另一笔交易,提交),然后提交。否则中止并重试。 这在Postgres中的隔离级别Read Committed上运行。

1
为什么CTE对丢失的更新开放?
当克雷格·林格(Craig Ringer)评论时,我不明白他的意思: 如果插入事务回滚,则此解决方案可能会丢失更新。没有检查来强制UPDATE影响任何行。 在https://stackoverflow.com/a/8702291/14731上。请提供事件的样本序列(例如,线程1执行X,线程2执行Y),以演示丢失更新的发生方式。

1
SQL Server如何在UPDATE期间同时返回新值和旧值?
在高并发期间,我们遇到了返回无意义结果的查询的问题-结果违反了发出查询的逻辑。重现了一段时间。我设法将可重现性问题分解为少数几个T-SQL。 注意:实时系统中有问题的部分由5个表,4个触发器,2个存储过程和2个视图组成。对于发布的问题,我已经将实际系统简化为更易于管理的内容。事情已经减少了,列被删除了,存储过程被内联了,视图变成了普通的表表达式,列的值改变了。说了这么长的话,虽然后面的内容会重现错误,但可能更难以理解。您必须避免怀疑为什么某种事物以这种方式构造。我在这里试图弄清楚为什么这种玩具模型中的错误情况可重复发生。 /* The idea in this system is that people are able to take days off. We create a table to hold these *"allocations"*, and declare sample data that only **1** production operator is allowed to take time off: */ IF OBJECT_ID('Allocations') IS NOT NULL DROP TABLE Allocations CREATE …

4
了解SQL Server锁定和并发性的资源?
最近的矿山锁定和并发问题证明了这一点很困难。 您能否为中级至高级的SQL专业人员提供任何良好的资源,以便对这些专业知识进行深入研究,从而使他们能够适当地学习该领域中的所有固有陷阱,从而进行适当的学习? 我在考虑各种资源-教程,博客,手册页,PASS会话或任何其他内容。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.