Java的原子操作
1597
2022-05-28
数据库管理系统(Database Management System)简称数据库或者DBMS,在当前互联网、金融等行业、企业中获得了广泛的应用。
数据库事务(Database Transaction)是单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。
为保证上述事务的一致性和原子性,防止事务提交到持久化存储时出现不完整的情况,如因为突然断电、数据库或者操作系统挂死等意外情况导致部分数据库写入,部分未写入的情况,很多主流数据库采用了Double Write机制,如图1所示。
图1 数据库写操作流程:两次写
由上述典型数据库写操作机制分析可知,数据库采用两次写的机制来保证事务的原子性,这会带来相同数据的两次写操作。
由前述可知,数据库为保证数据持久化到存储中不发生部分数据更新而导致的不一致问题,保障数据库的原子性,采用了Double Write机制,造成对存储的两次写操作。
针对这个问题,华为ES3000 V5 NVMe SSD提供原子写特性,保障写入ES3000 V5 NVMe SSD的IO操作的原子性,即一个IO要么完整的写入,要么整个写失败,不会出现一个IO中部分数据写入,部分未写入的情况,实现原理如图2所示。
这样数据库可不采用Double Write机制,也能保证数据完整落盘,减少一次数据写入操作,从而提升性能。
图2 华为ES3000 V5原子写特性基本原理
本文将详细介绍数据库解决方案MySQL数据库场景下,使能华为新一代NVMe PCIe固态硬盘ES3000 V5的原子写特性的操作指导。
数据库
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。