数据异常在数据库领域中较为常见,但目前业界内并没有关于数据异常的通用定义。腾讯金融云TDSQL首席架构师李海翔老师携手团队对数据异常的本质和价值进行研究,该研究成果目前已经发表在《软件学报》上,论文题目为《数据库管理系统中数据异常体系化定义与分类》。
该文评审专家认为:本文系统地研究了数据库的数据异常及其对应的隔离级别,通过形式化的定义,总结和规范了数据异常的类型。基于形式化的解释,解释了不同数据异常之间的本质区别。同时,本文还通过偏序关系对数据异常进行分类,并阐述了数据异常与隔离级别之间的关系。另外,本文深入总结了前人在数据异常领域的研究工作,文献充实。文章具有极高的学术水平,作者分享了其在事务并发控制中数据异常和隔离级别上的深刻认知,另外作者也提供相应的开源工具用来检测数据异常,是一篇对事务并发控制方向非常有影响力的论文。
本次分享就是基于该篇论文的主要内容,以下是分享实录:
数据异常在数据库中很常见,但数据异常的基本问题,其实并没有得到很好的解决。比如在整个事务处理领域究竟有多少种数据异常?最开始SQL标准定义了4种数据异常,1995年Jim Gray等人在前者的基础上又提出了4种新的数据异常。在阅读了数百篇Paper后,我们也发现从1995年到2017年之间,不断有人在提出新的数据异常,加起来有将近20种。
近几年也陆续有人提出新的数据异常,包括2019年TDSQL也在分布式系统下报告了新的异常。比如下图中提到的读半已提交数据异常。
在一个分布式系统中,有两个数据项,跨两个物理节点,一个在A节点上,一个在B节点上。有一个分布式事务,这个分布