【问题标题】:Details of impact of different locking schemes in databases?数据库中不同锁定方案的影响的详细信息?
【发布时间】:2011-01-21 02:30:18
【问题描述】:

我正在为一个超过 400 万行并预计将增长到 1000 万行的大表测试不同的锁定方案。

我对 SyBase 的体验:
ALLPAGES,极慢的 BCP(输入)并使用属于主键的字段进行更新。
DATAROWS,快速 BCP,快速更新 PK 中的字段,最快选择。
DATAPAGES,最快的 BCP 和更新,比 ALLPAGES 更快的选择,但不如 DATAROWS。

我不是专家,但在我看来,DATAROWS 比 DATAPAGES 阻塞更多,而且我没有看到 DATAPAGES 有任何缺点。

我能找到的唯一支持 DATAROWS 的一点是在使用主键的选择中性能稍快一些,但 DATAPAGES 在更新时要快得多。

有实践经验吗?
这种锁定方案如何比较?
各有优缺点?

我试图阅读它背后的理论,但对我来说不是很清楚。

【问题讨论】:

  • 奇怪:我注意到,当我为已经具有 DATAPAGES 锁的表应用新的集群 PK 时,它似乎没有对数据进行物理排序,当我从中选择 * 时,不是所有结果都按 PK 排序...这是为什么呢?

标签: sql database performance locking


【解决方案1】:

锁定是一种并发控制机制。它确保了事务内和事务之间数据的一致性。在多用户环境中需要锁定,因为可能有多个用户 同时处理相同的数据,所以你不应该根据例如选择锁定方案。 BCP 速度。

对于使用所有页锁定或数据页锁定的表,页锁或表锁

对于使用数据行锁定的表,行锁或表锁

但所有页锁定表通过锁定serializable read 事务的索引页来防止幻像(可以在结果集中出现或消失的行)

一般而言,您应该对由于更新和选择而导致锁争用的表使用数据行或数据页锁定。

阅读更多关于锁定和性能的信息here

【讨论】:

  • 很好的信息和有用的网站,但我的问题仍然是更多关于现实世界的经验、性能影响和比较。只有在读取时发生变化时才会出现“幻影”?还是 ALLPAGES 锁定以外的一般问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多