MVCC, ACID,BASIC 和Pasox的示例分析

1. MVCC

MVCC是什么?

MVCC全称是Multi-Version Concurrency Control,多版本并发控制。MVCC是一种数据管理机制,它可以在数据库内同时进行多个并发事务,且不会引起数据冲突。在MVCC中,各个事务操作的都是数据库的不同版本,而不是统一版本,MVCC 方法同时维护对于每一个事务来说数据库的快照以及对于其进行更新过程中所修改的快照,即可实现并发事务处理,且这些快照之间互不干扰。

MVCC的作用?

MVCC的实现可以使得一个数据库可以容纳大量的事务操作,并且能够在多用户同时访问这些数据时保持数据的一致性,没有数据出现丢失的情况。而且,在实际的应用环境中,MVCC数据管理机制不仅能够提供高效稳定的数据查询及更新操作,而且还能够提高系统的整体性能。因此,现在越来越多的数据库管理软件都将MVCC机制应用于其核心的数据管理模块中。

 
CREATE TABLE users (
  id INT NOT NULL,
  name VARCHAR(10),
  age INT
);

-- begin a transaction
START TRANSACTION;

SELECT * FROM users WHERE age > 28;

UPDATE users SET age = 40 WHERE name = 'mike';

-- commit the transaction
COMMIT;

2. ACID

ACID是什么?

ACID是指原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),它们是数据库事务的四个基本要点。原子性指一个事务中的所有操作将同时成功或同时失败,不会出现部分成功或部分失败的情况;一致性指在一个事务执行之后,数据库所处的状态必须是合法的,与完全正确的状态相符;隔离性指在并发环境下,一个事务的执行不能被其他事务所干扰,各个事务之间互不干扰;持久性指一个事务中所做的修改在事务提交之后永久的应用到数据库中。

ACID的作用?

ACID保证了数据库事务的一致性,避免了数据出现不一致的情况,保障了数据在并发操作下的正确性。同时ACID还允许在一个事务执行过程中出现错误,随时回滚到事务开始状态而不会影响数据库的整体一致性。因此,ACID对于许多重要场景,如金融、电信业务等,有着极其重要的意义,ACID可以保障数据正确性,防止数据错误对于业务造成的损失。

START TRANSACTION;
UPDATE users SET age = 40 WHERE id = 2;
SAVEPOINT save1;
UPDATE users SET age = 30 WHERE id = 3;
ROLLBACK TO save1;
UPDATE users SET age = 40 WHERE id = 4;
COMMIT;

3. BASE

BASE是什么?

BASE全称是(Basically Available, Soft state, Eventual consistency),中文意思是基本可用、软状态、最终一致性。其思想是先在分布式系统中实现可用性和数据最终一致性,牺牲强一致性、立即可用性和可靠性。BASE的数据访问采用异步的方式,先提交数据到暂存区,然后通过异步刷新将数据同步到其他节点,不同节点的数据达成最终一致性,但在数据写入时,数据不一定处于强一致性。

BASE的作用?

微服务场景下使用BASE可以充分利用现有的资源,以复制和冗余等方式保持数据的可用性和最终一致性,在当前业务高速发展的时代,这种方式可以有效地应对高并发,分布式架构等问题。从技术层面来讲,BASE理论中最重要的是有一个“最终一致性”这个概念。针对高并发的场景,为了解决并发问题,使用Master-Slave模式,最终达到相对一致的效果,实质上就是使用的是BASE理论中的最终一致性。

INSERT INTO users (id, name, age) VALUES (5, 'larry', 22);
UPDATE users SET name = 'Lucy' WHERE id = 5;
DELETE FROM users WHERE id = 5;
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享