可串行性(英语:Serializability)是指在计算机里一种多个事务先后之间穿插的用于执行正确调度方式的主要准则,亦是事务之间最高级别的隔离,在并发控制中起着至关重要的作用,其中多个事务并发时的执行顺序要对数据的一致性没有影响。
而可串行化(英语:Serializable)是指并发控制的数据库、事务处理以及各种事务性应用程序(例如,事务内存和软件事务内存)的集中式(英语:Centralized computing)和分布式事务排程。调度的可串行性意味对于存在共同操作对象的多个并发执行的相同事务串行执行结果(如:生成数据库状态、数据值)“等价”于某个“串行化调度”(即连续的受时间上没有事务重叠影响)。
如果事务之间没有共同的操作对象,则事务之间的执行顺序与前后置换都是没有关系的,但是如果事物间存在共同的操作对象,则事务间先后执行顺序需要区分。事务通常是并发执行的(重叠的),因这是最有效的方法。
自20世纪70年代早期以来,在大多数数据库系统(以各种变体)中都使用了一种流行的可串行机制——强两阶段加锁(SS2PL)。
可串行性理论(英语:Serializability theory)为推理和分析可串行化及其技术提供了形式框架。尽管本质上是数学,但下面非正式地介绍了它的基本原理(没有数学符号)。
可串行性 用于保持数据项中的数据处于一致的状态。可串行性是事务排程的属性。 它与数据库事务的“隔离”属性有关。
无法可串行化的调度可能会产生错误的结果。众所周知的例子是使用货币作为借贷账户的交易:如果相关的排程是不可串行化的,那么货币的总数可能不会被保留。钱可以消失,也可以凭空产生。这和其他的可能需要不变保存的是由一个事务写入造成违规一样,并且在另一个事务写入的内容成为数据库中的永久内容之前,并清除“布进式”。如果保持可串行性,则不会发生这种情况。