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:
parent
48c792c996
commit
c1401f3b9f
1 changed files with 3 additions and 3 deletions
6
ch7.md
6
ch7.md
|
|
@ -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#分区与次级索引)”)。
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue