并发是多个事务的同时执行,应用程序处理并发越好,它的可伸缩性就越大。一个可扩展的应用程序可以处理更大的工作量,同时系统资源使用量也会相应增加。
并发事务必须产生有意义和一致的结果。因此,多用户数据库必须提供以下能力:
- 数据并发,保证了多个用户能同时访问数据。
- 数据一致性,保证了每个用户都能看到数据的一致视图,包括来自自己的事务和其他用户已提交事务的可见更改。
OceanBase 数据库通过使用多版本一致性模型和各种类型的锁和事务隔离级别来保持数据一致性。
OceanBase Oracle 租户有多项特性能够提高并发和扩展性。比如序列、非阻塞读和写、以及共享 SQL。
关于序列、自增列和并发
序列是一个模式对象,多个用户可以通过它生成全局唯一的整数,当您需要唯一的主键时,这是非常有用的。在分布式架构下,OceanBase 的序列也能提供全局唯一且连续的整数。
如果没有序列,就必须以编程方式生成唯一的主键值,用户通过选择最近产生的值并增加它得到一个新的主键值。这种技术需要在事务期间锁定这个值,并导致多个用户等待下一个主键值,即事务序列化。序列能消除序列化,从而提高应用程序的并发性和可伸缩性。
序列是 Oracle 租户特有的。自增列是数值类型的一种,由数据库默认用不重复且递增的数字填充该列的值。
序列对用户的意义跟序列是一样的。
关于非阻塞性读和写以及并发
OceanBase 数据库中,非阻塞读写特性允许在数据被修改的同时查询也能并发执行而不需要被阻塞或停止。非阻塞读写特性允许一个会话在另外一个会话修改数据的同时去读这个数据,并且保证读取的数据不会是脏数据。
OceanBase 的非阻塞性读写是基于多版本实现的,是无锁的。