SQL 2PL-两阶段锁定
2PL
概念
在数据库和事务处理中,两阶段锁定(2PL)是一种保证可串行性的并发控制方法。它也是数据库事务调度(历史)结果集的名称。协议使用事务应用于数据的锁,在事务的生命周期内,锁可能阻止(解释为阻止信号)其他事务访问相同的数据。
根据2PL协议,锁的应用和删除分为两个阶段:
扩展阶段:获得锁,不释放锁。
收缩阶段:释放锁,不获取锁。
基本协议使用两种类型的锁:共享锁和独占锁。...
2018-09-01 01:12:25 |
SQL
Vector Lock 时钟向量-一致性算法
向量时钟
向量时钟(Vector Clock)是一种在分布式环境中为各种操作或事件产生偏序值的技术,它可以检测操作或事件的并行冲突,用来保持系统的一致性。
向量时钟方法在分布式系统中用于保证操作的有序性和数据的一致性。
向量时钟通常可以被认为是一组来自不同节点的时钟值Vi[1]、Vi[2]、…、Vi[n]。
在分布式环境中,第i个节点维护某一数据的时钟时,根据这些值可以知道其他节点或...
2018-08-31 05:44:07 |
Distributed
时间戳-分布式一致性算法
数据一致性策略
在数据一致性的最终实现上,不同的系统采用不同的策略。
包括:Quorum的NWR策略、两阶段提交协议、Paxos、时间戳、向量时钟等,本章只列举了其中的一部分,现实中还有更多的实现。
但是这些系统或者模型均以CAP理论为基石,并依据不同的情况作出权衡,例如Paxos具有较强的一致性,但是系统延迟较大。
此外,很多系统中采用多种策略的结合,例如,NWR策略经常与向量时钟...
2018-08-31 05:44:07 |
SQL
SQL MVCC
MVCC
MVCC是Multi Version Concurrency Control的简称,代表多版本并发控制。
为什么需要MVCC,还要从数据库事务的ACID特性说起。
相信很多朋友都了解ACID,它们分别代表了Atomicity(原子性), Consistency(一致性), Isolation(隔离性), Durability(持久性)。
各种数据库厂商会对各个隔离级别进行实...
2018-08-31 05:44:07 |
SQL
Java Static
java static
代码块
静态代码块:用 staitc 声明,jvm 加载类时执行,仅执行一次
构造代码块:类中直接用 {} 定义,每一次创建对象时执行。
执行顺序优先级:静态块, main(), 构造块, 构造方法。
静态代码块
代码
static{}
特性
它是随着类的加载而执行,只执行一次,并优先于主函数。
具体说,静态代码块是由类调用的。类调用时,先执行静...
2018-08-30 05:21:33 |
Java
SQLProxy
ProxySQL
ProxySQL is High-performance MySQL proxy with a GPL license.
特性
Query caching
忘记那些无法有效地反复访问相同结果而产生负载的应用程序。ProxySQL很快就加入了它的高级规则引擎。结果也可以缓存为一个可配置的timespan,以原生MySQL数据包格式。
Query Rou...
2018-08-30 02:59:31 |
SQL
SQL Isolation
数据库隔离性
概念
事务隔离级别是数据库事务处理的基础,ACID 中 I,即 Isolation,指的就是事务的隔离性。
隔离性是指,多个用户的并发事务访问同一个数据库时,一个用户的事务不应该被其他用户的事务干扰,多个并发事务之间要相互隔离。
sql 92 标准
sql 92 标准定义了 4 种隔离级别,读未提交、读已提交、可重复读、串行化,见下表。
ANSI SQL 隔离...
2018-08-30 01:22:17 |
SQL
SQL Charset
场景
mysql 中文报错,如下:
Incorrect string value: '\xF0\xA0\xBA\x98\xE5\x8F...' for column 'title' at row 1
常用命令
查看
SHOW VARIABLES LIKE 'character%'
修改
SET character_set_client = utf8mb4 ;...
2018-08-28 17:07:21 |
SQL