2
0
Fork 0
mirror of https://github.com/Vonng/ddia.git synced 2026-06-25 19:06:55 +08:00

Update ch7.md

This commit is contained in:
Zhaoyang 2021-12-19 18:09:33 +08:00 committed by GitHub
parent 48c792c996
commit c1401f3b9f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

6
ch7.md
View file

@ -644,11 +644,11 @@ VoltDB还使用存储过程进行复制但不是将事务的写入结果从
顺序执行所有事务使并发控制简单多了,但数据库的事务吞吐量被限制为单机单核的速度。只读事务可以使用快照隔离在其它地方执行,但对于写入吞吐量较高的应用,单线程事务处理器可能成为一个严重的瓶颈。
为了伸缩至多个CPU核心和多个节点可以对数据进行分区(请参阅[第六章](ch6.md)在VoltDB中支持这样做。如果你可以找到一种对数据集进行分区的方法以便每个事务只需要在单个分区中读写数据那么每个分区就可以拥有自己独立运行的事务处理线程。在这种情况下可以为每个分区指派一个独立的CPU核事务吞吐量就可以与CPU核数保持线性伸缩【47】。
为了扩展到多个CPU内核和多个节点你可以潜在地对数据进行分区(请参阅[第六章](ch6.md)在VoltDB中支持这样做。如果你可以找到一种对数据集进行分区的方法以便每个事务只需要在单个分区中读写数据那么每个分区就可以拥有自己独立运行的事务处理线程。在这种情况下你可以为每个CPU内核分配自己的分区这允许你的事务吞吐量随CPU内核数量线性扩展【47】。
但是,对于需要访问多个分区的任何事务,数据库必须在触及的所有分区之间协调事务。存储过程需要跨越所有分区锁定执行,以确保整个系统的可串行性。
但是,对于需要访问多个分区的任何事务,数据库必须在触及的所有分区之间协调事务。存储过程需要在所有分区上以锁步方式执行,以确保整个系统的可串行性。
由于跨分区事务具有额外的协调开销,所以它们比单分区事务慢得多。 VoltDB报告的吞吐量大约是每秒1000个跨分区写入比单分区吞吐量低几个数量级并且不能通过增加更多的机器来增加【49】。
由于跨分区事务具有额外的协调开销,所以它们比单分区事务慢得多。 VoltDB报告的吞吐量大约是每秒1000个跨分区写入比单分区吞吐量低几个数量级并且不能通过增加更多的机器来增加吞吐量【49】。
事务是否可以是划分至单个分区很大程度上取决于应用数据的结构。简单的键值数据通常可以非常容易地进行分区,但是具有多个次级索引的数据可能需要大量的跨分区协调(请参阅“[分区与次级索引](ch6.md#分区与次级索引)”)。